From ee9a2545111704c900b164680b98391f1bf78c59 Mon Sep 17 00:00:00 2001 From: Victor Romero Date: Tue, 10 Sep 2024 15:05:49 -0700 Subject: [PATCH 01/39] Add `devdeviceid` telemetry (#1480) --- include/vcpkg/base/parse.h | 7 +- include/vcpkg/base/system.deviceid.h | 13 +++ include/vcpkg/base/system.h | 2 + include/vcpkg/metrics.h | 1 + src/vcpkg-test/metrics.cpp | 18 +++++ src/vcpkg/base/system.cpp | 33 +++++--- src/vcpkg/base/system.deviceid.cpp | 117 +++++++++++++++++++++++++++ src/vcpkg/metrics.cpp | 6 ++ 8 files changed, 179 insertions(+), 18 deletions(-) create mode 100644 include/vcpkg/base/system.deviceid.h create mode 100644 src/vcpkg/base/system.deviceid.cpp diff --git a/include/vcpkg/base/parse.h b/include/vcpkg/base/parse.h index c4995786a3..37263813c4 100644 --- a/include/vcpkg/base/parse.h +++ b/include/vcpkg/base/parse.h @@ -56,11 +56,8 @@ namespace vcpkg { return is_lower_alpha(ch) || is_ascii_digit(ch) || ch == '-'; } - - static constexpr bool is_hex_digit(char32_t ch) - { - return is_ascii_digit(ch) || (ch >= 'a' && ch <= 'f') || (ch >= 'A' && ch <= 'F'); - } + static constexpr bool is_hex_digit_lower(char32_t ch) { return is_ascii_digit(ch) || (ch >= 'a' && ch <= 'f'); } + static constexpr bool is_hex_digit(char32_t ch) { return is_hex_digit_lower(ch) || (ch >= 'A' && ch <= 'F'); } static constexpr bool is_word_char(char32_t ch) { return is_alphanum(ch) || ch == '_'; } StringView skip_whitespace(); diff --git a/include/vcpkg/base/system.deviceid.h b/include/vcpkg/base/system.deviceid.h new file mode 100644 index 0000000000..945eb73afe --- /dev/null +++ b/include/vcpkg/base/system.deviceid.h @@ -0,0 +1,13 @@ +#pragma once + +#include +#include + +#include + +namespace vcpkg +{ + bool validate_device_id(StringView uuid); + + std::string get_device_id(const vcpkg::Filesystem& fs); +} diff --git a/include/vcpkg/base/system.h b/include/vcpkg/base/system.h index c5115e35d2..1d1c334845 100644 --- a/include/vcpkg/base/system.h +++ b/include/vcpkg/base/system.h @@ -18,6 +18,8 @@ namespace vcpkg const ExpectedL& get_home_dir() noexcept; + const ExpectedL& get_platform_cache_root() noexcept; + const ExpectedL& get_platform_cache_vcpkg() noexcept; const ExpectedL& get_user_configuration_home() noexcept; diff --git a/include/vcpkg/metrics.h b/include/vcpkg/metrics.h index c128099f20..b18ccf5c6e 100644 --- a/include/vcpkg/metrics.h +++ b/include/vcpkg/metrics.h @@ -60,6 +60,7 @@ namespace vcpkg CommandName, DeploymentKind, DetectedCiEnvironment, + DevDeviceId, CiProjectId, CiOwnerId, InstallPlan_1, diff --git a/src/vcpkg-test/metrics.cpp b/src/vcpkg-test/metrics.cpp index 309abee672..728b33f4b7 100644 --- a/src/vcpkg-test/metrics.cpp +++ b/src/vcpkg-test/metrics.cpp @@ -1,5 +1,7 @@ #include +#include + #include #include @@ -88,6 +90,22 @@ TEST_CASE ("user config parses multiple paragraphs ", "[metrics]") CHECK(result.last_completed_survey == "survey"); } +TEST_CASE ("device id", "[metrics]") +{ + CHECK(validate_device_id("c5337d65-1e69-46e1-af76-bffc7b9ff40a")); + + CHECK_FALSE(validate_device_id("")); + CHECK_FALSE(validate_device_id("nope")); + CHECK_FALSE(validate_device_id("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")); + CHECK_FALSE(validate_device_id("c5337d65-1e69-46e1-af76-bffc7b9ff40a ")); + CHECK_FALSE(validate_device_id("c5337d6--1e6--46e--af76--ffc7b9ff40a")); + CHECK_FALSE(validate_device_id("c5337d65-1e69-46e1-af76-bffc7b9ff4\r\n")); + CHECK_FALSE(validate_device_id("c5337d65-1e69-46e1-af76-bffc7b9ff4\0")); + CHECK_FALSE(validate_device_id("C5337D65-1E69-46E1-AF76-BFFC7b9ff40A")); + CHECK_FALSE(validate_device_id("{c5337d65-1e69-46e1-af76-bffc7b9ff40a}")); + CHECK_FALSE(validate_device_id("c5337d65:1e69:46e1:af76:bffc7b9ff40a")); +} + TEST_CASE ("user config to string", "[metrics]") { MetricsUserConfig uut; diff --git a/src/vcpkg/base/system.cpp b/src/vcpkg/base/system.cpp index adea4b510c..3df622e156 100644 --- a/src/vcpkg/base/system.cpp +++ b/src/vcpkg/base/system.cpp @@ -1,10 +1,12 @@ #include #include #include +#include #include #include #include #include +#include #if defined(__APPLE__) #include @@ -504,15 +506,21 @@ namespace vcpkg } #endif - const ExpectedL& get_platform_cache_vcpkg() noexcept + const ExpectedL& get_platform_cache_root() noexcept { - static ExpectedL s_vcpkg = -#ifdef _WIN32 + static ExpectedL s_home = +#if defined(_WIN32) get_appdata_local() #else get_xdg_cache_home() #endif - .map([](const Path& p) { return p / "vcpkg"; }); + ; + return s_home; + } + + const ExpectedL& get_platform_cache_vcpkg() noexcept + { + static ExpectedL s_vcpkg = get_platform_cache_root().map([](const Path& p) { return p / "vcpkg"; }); return s_vcpkg; } @@ -555,17 +563,16 @@ namespace vcpkg { case REG_SZ: case REG_EXPAND_SZ: - // remove trailing nulls - while (!value->data.empty() && !value->data.back()) - { - value->data.pop_back(); - } - + { + auto length_in_wchar_ts = value->data.size() >> 1; + auto as_utf8 = + Strings::to_utf8(reinterpret_cast(value->data.data()), length_in_wchar_ts); + while (!as_utf8.empty() && as_utf8.back() == 0) { - auto length_in_wchar_ts = value->data.size() >> 1; - return Strings::to_utf8(reinterpret_cast(value->data.data()), - length_in_wchar_ts); + as_utf8.pop_back(); } + return as_utf8; + } default: return msg::format_error(msgRegistryValueWrongType, msg::path = format_registry_value_name(base_hkey, sub_key, valuename)); diff --git a/src/vcpkg/base/system.deviceid.cpp b/src/vcpkg/base/system.deviceid.cpp new file mode 100644 index 0000000000..0188dd3770 --- /dev/null +++ b/src/vcpkg/base/system.deviceid.cpp @@ -0,0 +1,117 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +namespace vcpkg +{ + // To ensure consistency, the device ID must follow the format specified below. + // - The value follows the 8-4-4-4-12 format(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) + // - The value is all lowercase and only contain hyphens. No braces or brackets. + bool validate_device_id(StringView uuid) + { + static constexpr size_t UUID_LENGTH = 36; + static constexpr char format[] = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"; + if (uuid.size() != UUID_LENGTH) return false; + for (size_t i = 0; i < UUID_LENGTH; ++i) + { + if (format[i] == '-' && uuid[i] != '-') return false; + if (format[i] == 'x' && !ParserBase::is_hex_digit_lower(uuid[i])) return false; + } + return true; + } + +#if defined(_WIN32) + std::string get_device_id(const vcpkg::Filesystem&) + { + // The value is cached in the 64-bit Windows Registry under HKeyCurrentUser\SOFTWARE\Microsoft\DeveloperTools. + // The key is named 'deviceid' and its type REG_SZ(String value). + // The value is stored in plain text. + auto maybe_registry_value = + get_registry_string(HKEY_CURRENT_USER, "SOFTWARE\\Microsoft\\DeveloperTools", "deviceid"); + if (auto registry_value = maybe_registry_value.get()) + { + auto& device_id = *registry_value; + return validate_device_id(device_id) ? device_id : std::string{}; + } + + auto new_device_id = Strings::ascii_to_lowercase(vcpkg::generate_random_UUID()); + const auto as_utf16 = Strings::to_utf16(new_device_id); + + const auto status = RegSetKeyValueW(HKEY_CURRENT_USER, + L"SOFTWARE\\Microsoft\\DeveloperTools", + L"deviceid", + REG_SZ, + as_utf16.c_str(), + static_cast((1 + as_utf16.size()) * sizeof(wchar_t))); + return (status != ERROR_SUCCESS) ? std::string{} : new_device_id; + } +#else + std::string get_device_id(const vcpkg::Filesystem& fs) + { + /* On Linux: + * - Use $XDG_CACHE_HOME if it is set and not empty, else use $HOME/.cache + * - The folder subpath is "/Microsoft/DeveloperTools" + * - The file is named 'deviceid' + * - The value is stored in UTF-8 plain text + * + * On MacOS: + * - Store the device id in the user's home directory ($HOME). + * - The folder subpath is "$HOME\Library\Application Support\Microsoft\DeveloperTools" + * - The file is named 'deviceid' + * - The value is stored in UTF-8 plain text + */ + const auto maybe_home_path = vcpkg::get_platform_cache_root(); + if (!maybe_home_path) + { + return {}; + } + + auto home_path = maybe_home_path.get(); + const auto container_path = +#if defined(__APPLE__) + *home_path / "Library/Application Support/Microsoft/DeveloperTools" +#else + *home_path / "Microsoft/DeveloperTools" +#endif + ; + const auto id_file_path = container_path / "deviceid"; + + std::error_code ec; + auto maybe_file = fs.exists(id_file_path, ec); + if (ec) + { + return {}; + } + + if (maybe_file) + { + auto contents = fs.read_contents(id_file_path, ec); + if (ec || !validate_device_id(contents)) + { + return {}; + } + return contents; + } + + auto new_device_id = Strings::ascii_to_lowercase(vcpkg::generate_random_UUID()); + fs.create_directories(container_path, ec); + if (ec) + { + return {}; + } + + fs.write_contents(id_file_path, new_device_id, ec); + if (ec) + { + return {}; + } + + return new_device_id; + } +#endif +} diff --git a/src/vcpkg/metrics.cpp b/src/vcpkg/metrics.cpp index 8f2b4453e9..db13a59da5 100644 --- a/src/vcpkg/metrics.cpp +++ b/src/vcpkg/metrics.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #include #include #include @@ -131,6 +132,7 @@ namespace vcpkg {StringMetric::CommandName, "command_name", "z-preregister-telemetry"}, {StringMetric::DeploymentKind, "deployment_kind", "Git"}, {StringMetric::DetectedCiEnvironment, "detected_ci_environment", "Generic"}, + {StringMetric::DevDeviceId, "devdeviceid", "00000000-0000-0000-0000-000000000000"}, {StringMetric::CiProjectId, "ci_project_id", "0"}, {StringMetric::CiOwnerId, "ci_owner_id", "0"}, // spec:triplet:version,... @@ -578,6 +580,10 @@ namespace vcpkg auto session = MetricsSessionData::from_system(); auto submission = get_global_metrics_collector().get_submission(); + + auto deviceid = get_device_id(fs); + submission.track_string(StringMetric::DevDeviceId, deviceid); + const std::string payload = format_metrics_payload(user, session, submission); if (g_should_print_metrics.load()) { From a65b710faf24541f51eb46eebfb22ae8079dd58f Mon Sep 17 00:00:00 2001 From: Billy O'Neal Date: Thu, 12 Sep 2024 20:15:12 -0700 Subject: [PATCH 02/39] Preserve the full exit code range in the system.process layer. (#1489) Resolves a recent concern raised internally where tar.exe failed with some exit code that was larger than INT_MAX which got smashed by: https://github.com/microsoft/vcpkg-tool/blob/ee9a2545111704c900b164680b98391f1bf78c59/src/vcpkg/base/system.process.cpp#L1426 --- include/vcpkg/base/fwd/system.process.h | 7 +++ include/vcpkg/base/message-data.inc.h | 8 +-- include/vcpkg/base/system.process.h | 26 ++++---- locales/messages.json | 4 +- src/vcpkg/base/downloads.cpp | 2 +- src/vcpkg/base/system.process.cpp | 64 +++++++++---------- src/vcpkg/commands.build.cpp | 84 ++++++++++++------------- src/vcpkg/commands.create.cpp | 4 +- src/vcpkg/commands.edit.cpp | 2 +- src/vcpkg/commands.env.cpp | 2 +- src/vcpkg/commands.export.cpp | 5 +- src/vcpkg/commands.integrate.cpp | 16 ++--- src/vcpkg/configure-environment.cpp | 19 ++++-- src/vcpkg/export.prefab.cpp | 12 ++-- 14 files changed, 133 insertions(+), 122 deletions(-) diff --git a/include/vcpkg/base/fwd/system.process.h b/include/vcpkg/base/fwd/system.process.h index 448af44d13..67addfe50b 100644 --- a/include/vcpkg/base/fwd/system.process.h +++ b/include/vcpkg/base/fwd/system.process.h @@ -25,4 +25,11 @@ namespace vcpkg struct CommandLess; struct ExitCodeAndOutput; struct Environment; + + // The integral type the operating system uses to represent exit codes. +#if defined(_WIN32) + using ExitCodeIntegral = unsigned long; // DWORD +#else + using ExitCodeIntegral = int; +#endif // ^^^ !_WIN32 } diff --git a/include/vcpkg/base/message-data.inc.h b/include/vcpkg/base/message-data.inc.h index 94da29347b..0f6b1dcdea 100644 --- a/include/vcpkg/base/message-data.inc.h +++ b/include/vcpkg/base/message-data.inc.h @@ -1705,10 +1705,10 @@ DECLARE_MESSAGE(InstalledBy, (msg::path), "", "Installed by {path}") DECLARE_MESSAGE(InstalledPackages, (), "", "The following packages are already installed:") DECLARE_MESSAGE(InstalledRequestedPackages, (), "", "All requested packages are currently installed.") DECLARE_MESSAGE(InstallFailed, (msg::path, msg::error_msg), "", "failed: {path}: {error_msg}") -DECLARE_MESSAGE(InstallingMavenFile, - (msg::path), - "Printed after a filesystem operation error", - "{path} installing Maven file") +DECLARE_MESSAGE(InstallingMavenFileFailure, + (msg::path, msg::command_line, msg::exit_code), + "Printed after a maven install command fails", + "{path} installing Maven file, {command_line} failed with {exit_code}") DECLARE_MESSAGE(InstallingOverlayPort, (), "", "installing overlay port from here") DECLARE_MESSAGE(InstallingPackage, (msg::action_index, msg::count, msg::spec), diff --git a/include/vcpkg/base/system.process.h b/include/vcpkg/base/system.process.h index 568738de33..e362dd997c 100644 --- a/include/vcpkg/base/system.process.h +++ b/include/vcpkg/base/system.process.h @@ -76,7 +76,7 @@ namespace vcpkg struct ExitCodeAndOutput { - int exit_code; + ExitCodeIntegral exit_code; std::string output; }; @@ -119,8 +119,8 @@ namespace vcpkg std::string stdin_content; }; - ExpectedL cmd_execute(const Command& cmd); - ExpectedL cmd_execute(const Command& cmd, const ProcessLaunchSettings& settings); + ExpectedL cmd_execute(const Command& cmd); + ExpectedL cmd_execute(const Command& cmd, const ProcessLaunchSettings& settings); #if defined(_WIN32) Environment cmd_execute_and_capture_environment(const Command& cmd, const Environment& env); @@ -136,15 +136,17 @@ namespace vcpkg std::vector> cmd_execute_and_capture_output_parallel( View commands, const RedirectedProcessLaunchSettings& settings); - ExpectedL cmd_execute_and_stream_lines(const Command& cmd, const std::function& per_line_cb); - ExpectedL cmd_execute_and_stream_lines(const Command& cmd, - const RedirectedProcessLaunchSettings& settings, - const std::function& per_line_cb); + ExpectedL cmd_execute_and_stream_lines(const Command& cmd, + const std::function& per_line_cb); + ExpectedL cmd_execute_and_stream_lines(const Command& cmd, + const RedirectedProcessLaunchSettings& settings, + const std::function& per_line_cb); - ExpectedL cmd_execute_and_stream_data(const Command& cmd, const std::function& data_cb); - ExpectedL cmd_execute_and_stream_data(const Command& cmd, - const RedirectedProcessLaunchSettings& settings, - const std::function& data_cb); + ExpectedL cmd_execute_and_stream_data(const Command& cmd, + const std::function& data_cb); + ExpectedL cmd_execute_and_stream_data(const Command& cmd, + const RedirectedProcessLaunchSettings& settings, + const std::function& data_cb); uint64_t get_subproccess_stats(); @@ -164,7 +166,7 @@ namespace vcpkg Optional try_parse_process_stat_file(const FileContents& contents); void get_parent_process_list(std::vector& ret); - bool succeeded(const ExpectedL& maybe_exit) noexcept; + bool succeeded(const ExpectedL& maybe_exit) noexcept; // If exit code is 0, returns a 'success' ExpectedL. // Otherwise, returns an ExpectedL containing error text diff --git a/locales/messages.json b/locales/messages.json index 3ce795ad03..6284e559c8 100644 --- a/locales/messages.json +++ b/locales/messages.json @@ -961,8 +961,8 @@ "_InstalledBy.comment": "An example of {path} is /foo/bar.", "InstalledPackages": "The following packages are already installed:", "InstalledRequestedPackages": "All requested packages are currently installed.", - "InstallingMavenFile": "{path} installing Maven file", - "_InstallingMavenFile.comment": "Printed after a filesystem operation error An example of {path} is /foo/bar.", + "InstallingMavenFileFailure": "{path} installing Maven file, {command_line} failed with {exit_code}", + "_InstallingMavenFileFailure.comment": "Printed after a maven install command fails An example of {path} is /foo/bar. An example of {command_line} is vcpkg install zlib. An example of {exit_code} is 127.", "InstallingOverlayPort": "installing overlay port from here", "InstallingPackage": "Installing {action_index}/{count} {spec}...", "_InstallingPackage.comment": "An example of {action_index} is 340. An example of {count} is 42. An example of {spec} is zlib:x64-windows.", diff --git a/src/vcpkg/base/downloads.cpp b/src/vcpkg/base/downloads.cpp index 9f2e44cfd3..13ead15feb 100644 --- a/src/vcpkg/base/downloads.cpp +++ b/src/vcpkg/base/downloads.cpp @@ -583,7 +583,7 @@ namespace vcpkg msg::println(msgAssetCacheSuccesfullyStored, msg::path = file.filename(), msg::url = replace_secrets(url.to_string(), secrets)); - return res; + return 0; } std::string format_url_query(StringView base_url, View query_params) diff --git a/src/vcpkg/base/system.process.cpp b/src/vcpkg/base/system.process.cpp index 3bfd5275d9..2802758a37 100644 --- a/src/vcpkg/base/system.process.cpp +++ b/src/vcpkg/base/system.process.cpp @@ -43,13 +43,7 @@ namespace { using namespace vcpkg; -#if defined(_WIN32) - using error_value_type = unsigned long; -#else // ^^^ _WIN32 // !_WIN32 vvv - using error_value_type = int; -#endif // ^^^ !_WIN32 - - LocalizedString format_system_error_message(StringLiteral api_name, error_value_type error_value) + LocalizedString format_system_error_message(StringLiteral api_name, ExitCodeIntegral error_value) { return msg::format_error(msgSystemApiErrorMessage, msg::system_api = api_name, @@ -230,7 +224,7 @@ namespace vcpkg { #if defined(_WIN32) wchar_t buf[_MAX_PATH]; - const int bytes = GetModuleFileNameW(nullptr, buf, _MAX_PATH); + const DWORD bytes = GetModuleFileNameW(nullptr, buf, _MAX_PATH); if (bytes == 0) std::abort(); return Strings::to_utf8(buf, bytes); #elif defined(__APPLE__) @@ -778,7 +772,7 @@ namespace close_handle_mark_invalid(hProcess); } - unsigned int wait() + unsigned long wait() { close_handle_mark_invalid(hThread); const DWORD result = WaitForSingleObject(hProcess, INFINITE); @@ -1029,10 +1023,10 @@ namespace ~RedirectedProcessInfo() = default; VCPKG_MSVC_WARNING(suppress : 6262) // function uses 32k of stack - int wait_and_stream_output(int32_t debug_id, - const char* input, - DWORD input_size, - const std::function& raw_cb) + unsigned long wait_and_stream_output(int32_t debug_id, + const char* input, + DWORD input_size, + const std::function& raw_cb) { static const auto stdin_completion_routine = [](DWORD dwErrorCode, DWORD dwNumberOfBytesTransferred, LPOVERLAPPED pOverlapped) { @@ -1374,9 +1368,9 @@ namespace vcpkg #endif // ^^^ !_WIN32 } - static ExpectedL cmd_execute_impl(const Command& cmd, - const ProcessLaunchSettings& settings, - const int32_t debug_id) + static ExpectedL cmd_execute_impl(const Command& cmd, + const ProcessLaunchSettings& settings, + const int32_t debug_id) { #if defined(_WIN32) STARTUPINFOEXW startup_info_ex; @@ -1422,9 +1416,7 @@ namespace vcpkg return std::move(process_create).error(); } - auto long_exit_code = process_info.wait(); - if (long_exit_code > INT_MAX) long_exit_code = INT_MAX; - return static_cast(long_exit_code); + return process_info.wait(); #else Command real_command_line_builder; if (const auto wd = settings.working_directory.get()) @@ -1449,13 +1441,13 @@ namespace vcpkg #endif } - ExpectedL cmd_execute(const Command& cmd) + ExpectedL cmd_execute(const Command& cmd) { ProcessLaunchSettings default_process_launch_settings; return cmd_execute(cmd, default_process_launch_settings); } - ExpectedL cmd_execute(const Command& cmd, const ProcessLaunchSettings& settings) + ExpectedL cmd_execute(const Command& cmd, const ProcessLaunchSettings& settings) { const ElapsedTimer timer; const auto debug_id = debug_id_counter.fetch_add(1, std::memory_order_relaxed); @@ -1475,15 +1467,16 @@ namespace vcpkg return maybe_result; } - ExpectedL cmd_execute_and_stream_lines(const Command& cmd, const std::function& per_line_cb) + ExpectedL cmd_execute_and_stream_lines(const Command& cmd, + const std::function& per_line_cb) { RedirectedProcessLaunchSettings default_redirected_process_launch_settings; return cmd_execute_and_stream_lines(cmd, default_redirected_process_launch_settings, per_line_cb); } - ExpectedL cmd_execute_and_stream_lines(const Command& cmd, - const RedirectedProcessLaunchSettings& settings, - const std::function& per_line_cb) + ExpectedL cmd_execute_and_stream_lines(const Command& cmd, + const RedirectedProcessLaunchSettings& settings, + const std::function& per_line_cb) { Strings::LinesStream lines; auto rc = @@ -1526,10 +1519,10 @@ namespace }; #endif // ^^^ !_WIN32 - ExpectedL cmd_execute_and_stream_data_impl(const Command& cmd, - const RedirectedProcessLaunchSettings& settings, - const std::function& data_cb, - uint32_t debug_id) + ExpectedL cmd_execute_and_stream_data_impl(const Command& cmd, + const RedirectedProcessLaunchSettings& settings, + const std::function& data_cb, + uint32_t debug_id) { #if defined(_WIN32) std::wstring as_utf16; @@ -1847,15 +1840,16 @@ namespace namespace vcpkg { - ExpectedL cmd_execute_and_stream_data(const Command& cmd, const std::function& data_cb) + ExpectedL cmd_execute_and_stream_data(const Command& cmd, + const std::function& data_cb) { RedirectedProcessLaunchSettings default_redirected_process_launch_settings; return cmd_execute_and_stream_data(cmd, default_redirected_process_launch_settings, data_cb); } - ExpectedL cmd_execute_and_stream_data(const Command& cmd, - const RedirectedProcessLaunchSettings& settings, - const std::function& data_cb) + ExpectedL cmd_execute_and_stream_data(const Command& cmd, + const RedirectedProcessLaunchSettings& settings, + const std::function& data_cb) { const ElapsedTimer timer; const auto debug_id = debug_id_counter.fetch_add(1, std::memory_order_relaxed); @@ -1884,7 +1878,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([&](ExitCodeIntegral exit_code) { return ExitCodeAndOutput{exit_code, std::move(output)}; }); } uint64_t get_subproccess_stats() { return g_subprocess_stats.load(); } @@ -1907,7 +1901,7 @@ namespace vcpkg void register_console_ctrl_handler() { } #endif - bool succeeded(const ExpectedL& maybe_exit) noexcept + bool succeeded(const ExpectedL& maybe_exit) noexcept { if (const auto exit = maybe_exit.get()) { diff --git a/src/vcpkg/commands.build.cpp b/src/vcpkg/commands.build.cpp index 613b373d11..d1a8a8d494 100644 --- a/src/vcpkg/commands.build.cpp +++ b/src/vcpkg/commands.build.cpp @@ -707,39 +707,38 @@ namespace vcpkg CompilerInfo compiler_info; std::string buf; - ExpectedL rc = LocalizedString(); - { - const auto out_file = fs.open_for_write(stdoutlog, VCPKG_LINE_INFO); - rc = cmd_execute_and_stream_lines(cmd, settings, [&](StringView s) { - if (Strings::starts_with(s, MarkerCompilerHash)) - { - compiler_info.hash = s.substr(MarkerCompilerHash.size()).to_string(); - } - if (Strings::starts_with(s, MarkerCompilerCxxVersion)) - { - compiler_info.version = s.substr(MarkerCompilerCxxVersion.size()).to_string(); - } - if (Strings::starts_with(s, MarkerCompilerCxxId)) - { - compiler_info.id = s.substr(MarkerCompilerCxxId.size()).to_string(); - } - static constexpr StringLiteral s_path_marker = "#COMPILER_CXX_PATH#"; - if (Strings::starts_with(s, s_path_marker)) - { - const auto compiler_cxx_path = s.substr(s_path_marker.size()); - compiler_info.path.assign(compiler_cxx_path.data(), compiler_cxx_path.size()); - } - Debug::println(s); - const auto old_buf_size = buf.size(); - Strings::append(buf, s, '\n'); - const auto write_size = buf.size() - old_buf_size; - Checks::msg_check_exit(VCPKG_LINE_INFO, - out_file.write(buf.c_str() + old_buf_size, 1, write_size) == write_size, - msgErrorWhileWriting, - msg::path = stdoutlog); - }); - } // close out_file + Optional out_file_storage = fs.open_for_write(stdoutlog, VCPKG_LINE_INFO); + auto& out_file = out_file_storage.value_or_exit(VCPKG_LINE_INFO); + auto rc = cmd_execute_and_stream_lines(cmd, settings, [&](StringView s) { + if (Strings::starts_with(s, MarkerCompilerHash)) + { + compiler_info.hash = s.substr(MarkerCompilerHash.size()).to_string(); + } + if (Strings::starts_with(s, MarkerCompilerCxxVersion)) + { + compiler_info.version = s.substr(MarkerCompilerCxxVersion.size()).to_string(); + } + if (Strings::starts_with(s, MarkerCompilerCxxId)) + { + compiler_info.id = s.substr(MarkerCompilerCxxId.size()).to_string(); + } + static constexpr StringLiteral s_path_marker = "#COMPILER_CXX_PATH#"; + if (Strings::starts_with(s, s_path_marker)) + { + const auto compiler_cxx_path = s.substr(s_path_marker.size()); + compiler_info.path.assign(compiler_cxx_path.data(), compiler_cxx_path.size()); + } + Debug::println(s); + const auto old_buf_size = buf.size(); + Strings::append(buf, s, '\n'); + const auto write_size = buf.size() - old_buf_size; + Checks::msg_check_exit(VCPKG_LINE_INFO, + out_file.write(buf.c_str() + old_buf_size, 1, write_size) == write_size, + msgErrorWhileWriting, + msg::path = stdoutlog); + }); + out_file_storage.clear(); if (compiler_info.hash.empty() || !succeeded(rc)) { Debug::println("Compiler information tracking can be disabled by passing --", @@ -1006,18 +1005,17 @@ namespace vcpkg fs.create_directory(buildpath, VCPKG_LINE_INFO); env.add_entry(EnvironmentVariableGitCeilingDirectories, fs.absolute(buildpath.parent_path(), VCPKG_LINE_INFO)); auto stdoutlog = buildpath / ("stdout-" + action.spec.triplet().canonical_name() + ".log"); - ExpectedL return_code = LocalizedString(); - { - auto out_file = fs.open_for_write(stdoutlog, VCPKG_LINE_INFO); - return_code = cmd_execute_and_stream_data(cmd, settings, [&](StringView sv) { - msg::write_unlocalized_text(Color::none, sv); - Checks::msg_check_exit(VCPKG_LINE_INFO, - out_file.write(sv.data(), 1, sv.size()) == sv.size(), - msgErrorWhileWriting, - msg::path = stdoutlog); - }); - } // close out_file + Optional out_file_storage = fs.open_for_write(stdoutlog, VCPKG_LINE_INFO); + auto& out_file = out_file_storage.value_or_exit(VCPKG_LINE_INFO); + auto return_code = cmd_execute_and_stream_data(cmd, settings, [&](StringView sv) { + msg::write_unlocalized_text(Color::none, sv); + Checks::msg_check_exit(VCPKG_LINE_INFO, + out_file.write(sv.data(), 1, sv.size()) == sv.size(), + msgErrorWhileWriting, + msg::path = stdoutlog); + }); + out_file_storage.clear(); const auto buildtimeus = timer.microseconds(); const auto spec_string = action.spec.to_string(); const bool build_failed = !succeeded(return_code); diff --git a/src/vcpkg/commands.create.cpp b/src/vcpkg/commands.create.cpp index b7f88ef30d..9de446141a 100644 --- a/src/vcpkg/commands.create.cpp +++ b/src/vcpkg/commands.create.cpp @@ -67,8 +67,8 @@ namespace vcpkg ProcessLaunchSettings settings; settings.environment = get_clean_environment(); - return cmd_execute(make_cmake_cmd(paths, paths.ports_cmake, std::move(cmake_args)), settings) - .value_or_exit(VCPKG_LINE_INFO); + return static_cast(cmd_execute(make_cmake_cmd(paths, paths.ports_cmake, std::move(cmake_args)), settings) + .value_or_exit(VCPKG_LINE_INFO)); } void command_create_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths) diff --git a/src/vcpkg/commands.edit.cpp b/src/vcpkg/commands.edit.cpp index 9411f8a218..f0eba2298c 100644 --- a/src/vcpkg/commands.edit.cpp +++ b/src/vcpkg/commands.edit.cpp @@ -280,6 +280,6 @@ namespace vcpkg } #endif // ^^^ _WIN32 - Checks::exit_with_code(VCPKG_LINE_INFO, cmd_execute(cmd).value_or_exit(VCPKG_LINE_INFO)); + Checks::exit_with_code(VCPKG_LINE_INFO, static_cast(cmd_execute(cmd).value_or_exit(VCPKG_LINE_INFO))); } } // namespace vcpkg diff --git a/src/vcpkg/commands.env.cpp b/src/vcpkg/commands.env.cpp index 14d6cec2f4..92385069cf 100644 --- a/src/vcpkg/commands.env.cpp +++ b/src/vcpkg/commands.env.cpp @@ -144,7 +144,7 @@ namespace vcpkg enter_interactive_subprocess(); auto rc = cmd_execute(cmd, settings); exit_interactive_subprocess(); - Checks::exit_with_code(VCPKG_LINE_INFO, rc.value_or_exit(VCPKG_LINE_INFO)); + Checks::exit_with_code(VCPKG_LINE_INFO, static_cast(rc.value_or_exit(VCPKG_LINE_INFO))); #else // ^^^ _WIN32 / !_WIN32 vvv Checks::msg_exit_with_message(VCPKG_LINE_INFO, msgEnvPlatformNotSupported); #endif // ^^^ !_WIN32 diff --git a/src/vcpkg/commands.export.cpp b/src/vcpkg/commands.export.cpp index efb28a3455..a8a9a26330 100644 --- a/src/vcpkg/commands.export.cpp +++ b/src/vcpkg/commands.export.cpp @@ -239,8 +239,9 @@ namespace ProcessLaunchSettings settings; settings.working_directory = raw_exported_dir.parent_path(); settings.environment = get_clean_environment(); - const int exit_code = cmd_execute(cmd, settings).value_or_exit(VCPKG_LINE_INFO); - Checks::msg_check_exit(VCPKG_LINE_INFO, exit_code == 0, msgCreationFailed, msg::path = exported_archive_path); + const auto maybe_exit_code = cmd_execute(cmd, settings); + Checks::msg_check_exit( + VCPKG_LINE_INFO, succeeded(maybe_exit_code), msgCreationFailed, msg::path = exported_archive_path); return exported_archive_path; } diff --git a/src/vcpkg/commands.integrate.cpp b/src/vcpkg/commands.integrate.cpp index 83495fdf90..8d1953acaa 100644 --- a/src/vcpkg/commands.integrate.cpp +++ b/src/vcpkg/commands.integrate.cpp @@ -419,13 +419,13 @@ namespace vcpkg const auto script_path = paths.scripts / "addPoshVcpkgToPowershellProfile.ps1"; const auto& ps = paths.get_tool_exe("powershell-core", out_sink); - const int rc = cmd_execute(Command{ps} - .string_arg("-NoProfile") - .string_arg("-ExecutionPolicy") - .string_arg("Bypass") - .string_arg("-Command") - .string_arg(fmt::format("& {{& '{}' }}", script_path))) - .value_or_exit(VCPKG_LINE_INFO); + const auto rc = cmd_execute(Command{ps} + .string_arg("-NoProfile") + .string_arg("-ExecutionPolicy") + .string_arg("Bypass") + .string_arg("-Command") + .string_arg(fmt::format("& {{& '{}' }}", script_path))) + .value_or_exit(VCPKG_LINE_INFO); if (rc) { msg::println_error(msg::format(msgCommandFailed, msg::command_line = TITLE) @@ -434,7 +434,7 @@ namespace vcpkg get_global_metrics_collector().track_string(StringMetric::Title, TITLE); } - Checks::exit_with_code(VCPKG_LINE_INFO, rc); + Checks::exit_with_code(VCPKG_LINE_INFO, static_cast(rc)); #else // ^^^ _WIN32 // !_WIN32 vvv (void)paths; Checks::msg_exit_with_error( diff --git a/src/vcpkg/configure-environment.cpp b/src/vcpkg/configure-environment.cpp index 60d60defdb..75f65ec7b3 100644 --- a/src/vcpkg/configure-environment.cpp +++ b/src/vcpkg/configure-environment.cpp @@ -223,19 +223,26 @@ namespace vcpkg ProcessLaunchSettings settings; settings.working_directory = paths.original_cwd; - auto result = cmd_execute(cmd, settings).value_or_exit(VCPKG_LINE_INFO); + const auto node_result = cmd_execute(cmd, settings).value_or_exit(VCPKG_LINE_INFO); if (auto telemetry_file_path = maybe_telemetry_file_path.get()) { track_telemetry(fs, *telemetry_file_path); } - // workaround some systems which only keep the lower 7 bits - if (result < 0 || result > 127) + if constexpr (std::is_signed_v) { - result = 1; - } + // workaround some systems which only keep the lower 7 bits + if (node_result < 0 || node_result > 127) + { + return 1; + } - return result; + return node_result; + } + else + { + return static_cast(node_result); + } } void forward_common_artifacts_arguments(std::vector& appended_to, const ParsedArguments& parsed) diff --git a/src/vcpkg/export.prefab.cpp b/src/vcpkg/export.prefab.cpp index 1759b9f178..f6f02a461d 100644 --- a/src/vcpkg/export.prefab.cpp +++ b/src/vcpkg/export.prefab.cpp @@ -229,12 +229,14 @@ namespace vcpkg::Prefab ProcessLaunchSettings settings; settings.environment = get_clean_environment(); - const int exit_code = cmd_execute(cmd, settings).value_or_exit(VCPKG_LINE_INFO); - - if (!(exit_code == 0)) + const auto exit_code = cmd_execute(cmd, settings).value_or_exit(VCPKG_LINE_INFO); + if (exit_code != 0) { - msg::println_error(msgInstallingMavenFile, msg::path = aar); - Checks::exit_fail(VCPKG_LINE_INFO); + Checks::msg_exit_with_error(VCPKG_LINE_INFO, + msgInstallingMavenFileFailure, + msg::path = aar, + msg::command_line = cmd.command_line(), + msg::exit_code = exit_code); } } From 2488bd6a7ae956548a0380f13cdf5809f2f707f4 Mon Sep 17 00:00:00 2001 From: Embedded Bot Date: Fri, 13 Sep 2024 05:03:14 +0000 Subject: [PATCH 03/39] [localization][automated][ci skip] update locale files --- locales/messages.cs.json | 2 +- locales/messages.de.json | 2 +- locales/messages.es.json | 2 +- locales/messages.fr.json | 2 +- locales/messages.it.json | 2 +- locales/messages.ja.json | 2 +- locales/messages.ko.json | 2 +- locales/messages.pl.json | 2 +- locales/messages.pt-BR.json | 2 +- locales/messages.ru.json | 2 +- locales/messages.tr.json | 2 +- locales/messages.zh-Hans.json | 2 +- locales/messages.zh-Hant.json | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/locales/messages.cs.json b/locales/messages.cs.json index ef9fe1c5b8..bced805c82 100644 --- a/locales/messages.cs.json +++ b/locales/messages.cs.json @@ -664,7 +664,7 @@ "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.", - "InstallingMavenFile": "{path} instaluje soubor Maven", + "InstallingMavenFileFailure": "{path} installing Maven file, {command_line} failed with {exit_code}", "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", diff --git a/locales/messages.de.json b/locales/messages.de.json index 66f68d639b..8f8f181107 100644 --- a/locales/messages.de.json +++ b/locales/messages.de.json @@ -664,7 +664,7 @@ "InstalledBy": "Installiert von {path}", "InstalledPackages": "Die folgenden Pakete sind bereits installiert:", "InstalledRequestedPackages": "Alle angeforderten Pakete sind derzeit installiert.", - "InstallingMavenFile": "{path}-Installation der Maven-Datei", + "InstallingMavenFileFailure": "{path} installing Maven file, {command_line} failed with {exit_code}", "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", diff --git a/locales/messages.es.json b/locales/messages.es.json index 5611de2daf..92aad113e2 100644 --- a/locales/messages.es.json +++ b/locales/messages.es.json @@ -664,7 +664,7 @@ "InstalledBy": "Instalado por {path}", "InstalledPackages": "Los siguientes paquetes ya están instalados:", "InstalledRequestedPackages": "Todos los paquetes solicitados están instalados actualmente.", - "InstallingMavenFile": "{path} instalando el archivo Maven", + "InstallingMavenFileFailure": "{path} installing Maven file, {command_line} failed with {exit_code}", "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", diff --git a/locales/messages.fr.json b/locales/messages.fr.json index 428642fb69..635a7a2423 100644 --- a/locales/messages.fr.json +++ b/locales/messages.fr.json @@ -664,7 +664,7 @@ "InstalledBy": "Installé par {path}", "InstalledPackages": "Les packages suivants sont déjà installés :", "InstalledRequestedPackages": "Tous les packages demandés sont actuellement installés.", - "InstallingMavenFile": "{path} installation du fichier Maven", + "InstallingMavenFileFailure": "{path} installing Maven file, {command_line} failed with {exit_code}", "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", diff --git a/locales/messages.it.json b/locales/messages.it.json index 64cd775954..860b93ae9e 100644 --- a/locales/messages.it.json +++ b/locales/messages.it.json @@ -664,7 +664,7 @@ "InstalledBy": "Installato da {path}", "InstalledPackages": "I pacchetti seguenti sono già installati:", "InstalledRequestedPackages": "Tutti i pacchetti richiesti sono attualmente installati.", - "InstallingMavenFile": "{path} installazione del file Maven", + "InstallingMavenFileFailure": "{path} installing Maven file, {command_line} failed with {exit_code}", "InstallingOverlayPort": "installazione della porta di sovrimpressione da qui", "InstallingPackage": "Installing {action_index}/{count} {spec}...", "IntegrateBashHelp": "Abilitare il completamento tramite tabulazione bash. Solo non Windows", diff --git a/locales/messages.ja.json b/locales/messages.ja.json index b7d1c02bd4..f88931f0dc 100644 --- a/locales/messages.ja.json +++ b/locales/messages.ja.json @@ -664,7 +664,7 @@ "InstalledBy": "{path} でインストール済み", "InstalledPackages": "次のパッケージは既にインストールされています。", "InstalledRequestedPackages": "要求されたすべてのパッケージが現時点でインストール済みです。", - "InstallingMavenFile": "Maven ファイルをインストールしています {path}", + "InstallingMavenFileFailure": "{path} installing Maven file, {command_line} failed with {exit_code}", "InstallingOverlayPort": "ここからオーバーレイ ポートをインストールしています", "InstallingPackage": "{action_index}/{count} {spec} をインストールしています...", "IntegrateBashHelp": "bash タブ補完を有効にします。Windows 以外のみ", diff --git a/locales/messages.ko.json b/locales/messages.ko.json index 70b45687c0..350f3ca56d 100644 --- a/locales/messages.ko.json +++ b/locales/messages.ko.json @@ -664,7 +664,7 @@ "InstalledBy": "{path}에 의해 설치됨", "InstalledPackages": "이미 설치되어 있는 패키지:", "InstalledRequestedPackages": "요청된 모든 패키지가 현재 설치되어 있습니다.", - "InstallingMavenFile": "Maven 파일을 설치하는 {path}", + "InstallingMavenFileFailure": "{path} installing Maven file, {command_line} failed with {exit_code}", "InstallingOverlayPort": "여기에서 오버레이 포트 설치", "InstallingPackage": "{action_index}/{count} {spec}을(를) 설치하는 중...", "IntegrateBashHelp": "bash 탭 완성을 사용합니다. 비 Windows 전용입니다.", diff --git a/locales/messages.pl.json b/locales/messages.pl.json index 38ae88f1df..17c13c3c5d 100644 --- a/locales/messages.pl.json +++ b/locales/messages.pl.json @@ -664,7 +664,7 @@ "InstalledBy": "Zainstalowane przez {path}", "InstalledPackages": "Następujące pakiety są już zainstalowane:", "InstalledRequestedPackages": "Wszystkie żądane pakiety są obecnie zainstalowane.", - "InstallingMavenFile": "{path} instaluje plik narzędzia Maven", + "InstallingMavenFileFailure": "{path} installing Maven file, {command_line} failed with {exit_code}", "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", diff --git a/locales/messages.pt-BR.json b/locales/messages.pt-BR.json index 9f0a3e784d..cbc85f9ac7 100644 --- a/locales/messages.pt-BR.json +++ b/locales/messages.pt-BR.json @@ -664,7 +664,7 @@ "InstalledBy": "Instalado por {path}", "InstalledPackages": "Os seguintes pacotes já estão instalados:", "InstalledRequestedPackages": "Todos os pacotes solicitados estão instalados no momento.", - "InstallingMavenFile": "{path} instalando arquivo do Maven", + "InstallingMavenFileFailure": "{path} installing Maven file, {command_line} failed with {exit_code}", "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", diff --git a/locales/messages.ru.json b/locales/messages.ru.json index 12f4b6c08f..661d02049e 100644 --- a/locales/messages.ru.json +++ b/locales/messages.ru.json @@ -664,7 +664,7 @@ "InstalledBy": "Установлено посредством {path}", "InstalledPackages": "Следующие пакеты уже установлены:", "InstalledRequestedPackages": "Все запрашиваемые пакеты сейчас установлены.", - "InstallingMavenFile": "{path}: установка файла Maven", + "InstallingMavenFileFailure": "{path} installing Maven file, {command_line} failed with {exit_code}", "InstallingOverlayPort": "производится установка порта наложения отсюда", "InstallingPackage": "Выполняется установка {action_index}/{count} {spec}…", "IntegrateBashHelp": "Включить завершение табуляции bash. Только для систем, отличных от Windows", diff --git a/locales/messages.tr.json b/locales/messages.tr.json index 7532ab1c99..b9e8cb2f65 100644 --- a/locales/messages.tr.json +++ b/locales/messages.tr.json @@ -664,7 +664,7 @@ "InstalledBy": "{path} tarafından yüklendi", "InstalledPackages": "Aşağıdaki paketler zaten yüklü:", "InstalledRequestedPackages": "İstenen tüm paketler şu anda yüklü.", - "InstallingMavenFile": "{path} Maven dosyasını yüklüyor", + "InstallingMavenFileFailure": "{path} installing Maven file, {command_line} failed with {exit_code}", "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.", diff --git a/locales/messages.zh-Hans.json b/locales/messages.zh-Hans.json index b938d3063e..47d6297057 100644 --- a/locales/messages.zh-Hans.json +++ b/locales/messages.zh-Hans.json @@ -664,7 +664,7 @@ "InstalledBy": "已由 {path} 安装", "InstalledPackages": "已安装以下包:", "InstalledRequestedPackages": "当前已安装所有请求的包。", - "InstallingMavenFile": "{path} 安装 maven 文件", + "InstallingMavenFileFailure": "{path} installing Maven file, {command_line} failed with {exit_code}", "InstallingOverlayPort": "正在从此处安装覆盖端口", "InstallingPackage": "正在安装 {action_index}/{count} 个 {spec}...", "IntegrateBashHelp": "启用 bash Tab-completion。仅限非 Windows", diff --git a/locales/messages.zh-Hant.json b/locales/messages.zh-Hant.json index e1b9fed068..3fe8ec9638 100644 --- a/locales/messages.zh-Hant.json +++ b/locales/messages.zh-Hant.json @@ -664,7 +664,7 @@ "InstalledBy": "由 {path} 安裝", "InstalledPackages": "已安装下列套件:", "InstalledRequestedPackages": "目前已安装所有要求的套件。", - "InstallingMavenFile": "{path} 安裝 Maven 檔案", + "InstallingMavenFileFailure": "{path} installing Maven file, {command_line} failed with {exit_code}", "InstallingOverlayPort": "正在從這裡安裝重疊連接埠", "InstallingPackage": "正在安裝 {action_index}/{count} {spec}...", "IntegrateBashHelp": "啟用 bash Tab 鍵自動完成。僅限非 Windows", From e2f895e3c4568978c5acf1fa49f1a4b1785fb786 Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Tue, 17 Sep 2024 20:57:46 +0200 Subject: [PATCH 04/39] Disallow invalid triplet names passed via `--triplet` (#1474) --- src/vcpkg-test/input.cpp | 12 ++++++++++++ src/vcpkg/input.cpp | 8 +++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/vcpkg-test/input.cpp b/src/vcpkg-test/input.cpp index 07071c3758..886acd4697 100644 --- a/src/vcpkg-test/input.cpp +++ b/src/vcpkg-test/input.cpp @@ -105,6 +105,18 @@ See )" + docs::triplets_url + R"( for more information. REQUIRE(maybe_check.error() == expected_error); } +TEST_CASE ("check_triplet rejects malformed triplet", "[input][check_triplet]") +{ + TripletDatabase db; + db.available_triplets.push_back(TripletFile{"invalid.triplet_name", "invalid.triplet_name.cmake"}); + auto maybe_check = check_triplet("invalid.triplet_name", db); + REQUIRE(!maybe_check.has_value()); + static constexpr StringLiteral expected_error{ + "error: expected the end of input parsing a package spec; this usually means the indicated character is not " + "allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hypens."}; + REQUIRE(maybe_check.error() == expected_error); +} + TEST_CASE ("check_and_get_package_spec validates the triplet", "[input][check_and_get_package_spec]") { TripletDatabase db; diff --git a/src/vcpkg/input.cpp b/src/vcpkg/input.cpp index 34bd0aaa63..a8e85255c2 100644 --- a/src/vcpkg/input.cpp +++ b/src/vcpkg/input.cpp @@ -1,6 +1,6 @@ - #include #include +#include #include #include @@ -26,6 +26,12 @@ namespace vcpkg { // Intentionally show the lowercased string auto as_lower = Strings::ascii_to_lowercase(name); + + if (std::find_if_not(name.begin(), name.end(), ParserBase::is_package_name_char) != name.end()) + { + return msg::format_error(msgParseQualifiedSpecifierNotEof); + } + if (!database.is_valid_triplet_canonical_name(as_lower)) { LocalizedString result = msg::format_error(msgInvalidTriplet, msg::triplet = as_lower); From a47c79f0c0ce55f4d81e294e45688a440551dcae Mon Sep 17 00:00:00 2001 From: Javier Matos Denizac Date: Tue, 17 Sep 2024 16:32:13 -0400 Subject: [PATCH 05/39] Use 7zr to unpack 7zip (#1477) * first take, use 7zr to unpack 7za instead of cmake, remove cmake dance * fix merge issues * fix unit tests * update vcpkg-scripts-sha.txt * update vcpkg-scripts-sha.txt * fix self extracting * use 7zr for zip formats as well * undo zip * use cmake for tar since 7zr needs to unpack twice for .tar.gz * undo changes to tar * use cmake for tar decompression * update vcpkg-scripts-sha * Make the upgrade test always use the current vcpkgTools.xml. * use 7zr for zip * 7zr doesn't work on zip formats --------- Co-authored-by: Javier Matos Co-authored-by: Billy Robert O'Neal III --- .../end-to-end-tests-dir/upgrade.ps1 | 3 + include/vcpkg/archives.h | 8 +-- include/vcpkg/tools.h | 3 +- src/vcpkg-test/archives.cpp | 2 +- src/vcpkg/archives.cpp | 60 ++++--------------- src/vcpkg/tools.cpp | 13 +--- vcpkg-init/vcpkg-scripts-sha.txt | 2 +- 7 files changed, 18 insertions(+), 73 deletions(-) diff --git a/azure-pipelines/end-to-end-tests-dir/upgrade.ps1 b/azure-pipelines/end-to-end-tests-dir/upgrade.ps1 index c28d239163..6cf2b4e2fe 100644 --- a/azure-pipelines/end-to-end-tests-dir/upgrade.ps1 +++ b/azure-pipelines/end-to-end-tests-dir/upgrade.ps1 @@ -5,6 +5,7 @@ try { $env:VCPKG_ROOT = "$TestingRoot/temp-repo" git -C "$TestingRoot/temp-repo" switch -d e1934f4a2a0c58bb75099d89ed980832379907fa # vcpkg-cmake @ 2022-12-22 + Copy-Item "$VcpkgRoot/scripts/vcpkgTools.xml" "$TestingRoot/temp-repo/scripts/vcpkgTools.xml" -Force $output = Run-VcpkgAndCaptureOutput install vcpkg-cmake Throw-IfFailed if (-Not ($output -match 'vcpkg-cmake:[^ ]+@2022-12-22')) @@ -12,7 +13,9 @@ try throw 'Unexpected vcpkg-cmake install' } + git -C "$TestingRoot/temp-repo" checkout -- 'scripts/vcpkgTools.xml' git -C "$TestingRoot/temp-repo" switch -d f6a5d4e8eb7476b8d7fc12a56dff300c1c986131 # vcpkg-cmake @ 2023-05-04 + Copy-Item "$VcpkgRoot/scripts/vcpkgTools.xml" "$TestingRoot/temp-repo/scripts/vcpkgTools.xml" -Force $output = Run-VcpkgAndCaptureOutput upgrade Throw-IfNotFailed if (-Not ($output -match 'If you are sure you want to rebuild the above packages, run this command with the --no-dry-run option.')) diff --git a/include/vcpkg/archives.h b/include/vcpkg/archives.h index debcfb4665..dbecf5a84d 100644 --- a/include/vcpkg/archives.h +++ b/include/vcpkg/archives.h @@ -18,6 +18,7 @@ namespace vcpkg Unknown, Tar, Zip, + SevenZip, Nupkg, Msi, Exe @@ -48,13 +49,6 @@ namespace vcpkg #ifdef _WIN32 // Extract the 7z archive part of a self extracting 7z installer void win32_extract_self_extracting_7z(const Filesystem& fs, const Path& archive, const Path& to_path); - // Extract `archive` to `to_path`, deleting `to_path` first. `archive` must be a zip file. - // This function will use potentially less performant tools that are reliably available on any machine. - void win32_extract_bootstrap_zip(const Filesystem& fs, - const ToolCache& tools, - MessageSink& status_sink, - const Path& archive, - const Path& to_path); #endif struct ZipTool diff --git a/include/vcpkg/tools.h b/include/vcpkg/tools.h index 9e0e6b0b6e..4f99ee22cc 100644 --- a/include/vcpkg/tools.h +++ b/include/vcpkg/tools.h @@ -16,6 +16,7 @@ namespace vcpkg { static constexpr StringLiteral SEVEN_ZIP = "7zip"; static constexpr StringLiteral SEVEN_ZIP_ALT = "7z"; + static constexpr StringLiteral SEVEN_ZIP_R = "7zr"; static constexpr StringLiteral TAR = "tar"; static constexpr StringLiteral MAVEN = "mvn"; static constexpr StringLiteral CMAKE = "cmake"; @@ -32,8 +33,6 @@ namespace vcpkg static constexpr StringLiteral IFW_INSTALLER_BASE = "ifw_installerbase"; // This duplicate of CMake should only be used as a fallback to unpack static constexpr StringLiteral CMAKE_SYSTEM = "cmake_system"; - // This duplicate of 7zip uses msiexec to unpack, which is a fallback for Windows 7. - static constexpr StringLiteral SEVEN_ZIP_MSI = "7zip_msi"; static constexpr StringLiteral PYTHON3 = "python3"; static constexpr StringLiteral PYTHON3_WITH_VENV = "python3_with_venv"; } diff --git a/src/vcpkg-test/archives.cpp b/src/vcpkg-test/archives.cpp index 905a46521e..76338403b8 100644 --- a/src/vcpkg-test/archives.cpp +++ b/src/vcpkg-test/archives.cpp @@ -8,7 +8,7 @@ TEST_CASE ("Testing guess_extraction_type", "[z-extract]") REQUIRE(guess_extraction_type(Path("path/to/archive.nupkg")) == ExtractionType::Nupkg); REQUIRE(guess_extraction_type(Path("/path/to/archive.msi")) == ExtractionType::Msi); REQUIRE(guess_extraction_type(Path("/path/to/archive.zip")) == ExtractionType::Zip); - REQUIRE(guess_extraction_type(Path("/path/to/archive.7z")) == ExtractionType::Zip); + REQUIRE(guess_extraction_type(Path("/path/to/archive.7z")) == ExtractionType::SevenZip); REQUIRE(guess_extraction_type(Path("/path/to/archive.gz")) == ExtractionType::Tar); REQUIRE(guess_extraction_type(Path("/path/to/archive.bz2")) == ExtractionType::Tar); REQUIRE(guess_extraction_type(Path("/path/to/archive.tgz")) == ExtractionType::Tar); diff --git a/src/vcpkg/archives.cpp b/src/vcpkg/archives.cpp index 71f16fe443..011813fbd4 100644 --- a/src/vcpkg/archives.cpp +++ b/src/vcpkg/archives.cpp @@ -106,6 +106,7 @@ namespace static bool recursion_limiter_sevenzip = false; Checks::check_exit(VCPKG_LINE_INFO, !recursion_limiter_sevenzip); recursion_limiter_sevenzip = true; + const auto maybe_output = flatten(cmd_execute_and_capture_output(Command{seven_zip} .string_arg("x") .string_arg(archive) @@ -141,8 +142,11 @@ namespace vcpkg { return ExtractionType::Msi; } - else if (Strings::case_insensitive_ascii_equals(ext, ".zip") || - Strings::case_insensitive_ascii_equals(ext, ".7z")) + else if (Strings::case_insensitive_ascii_equals(ext, ".7z")) + { + return ExtractionType::SevenZip; + } + else if (Strings::case_insensitive_ascii_equals(ext, ".zip")) { return ExtractionType::Zip; } @@ -174,8 +178,11 @@ namespace vcpkg case ExtractionType::Unknown: break; case ExtractionType::Nupkg: win32_extract_nupkg(tools, status_sink, archive, to_path); break; case ExtractionType::Msi: win32_extract_msi(archive, to_path); break; + case ExtractionType::SevenZip: + win32_extract_with_seven_zip(tools.get_tool_path(Tools::SEVEN_ZIP_R, status_sink), archive, to_path); + break; case ExtractionType::Zip: - extract_tar_cmake(tools.get_tool_path(Tools::CMAKE, status_sink), archive, to_path); + win32_extract_with_seven_zip(tools.get_tool_path(Tools::SEVEN_ZIP, status_sink), archive, to_path); break; case ExtractionType::Tar: extract_tar(tools.get_tool_path(Tools::TAR, status_sink), archive, to_path); @@ -236,7 +243,6 @@ namespace vcpkg void win32_extract_self_extracting_7z(const Filesystem& fs, const Path& archive, const Path& to_path) { constexpr static const char header_7z[] = "7z\xBC\xAF\x27\x1C"; - const Path stem = archive.stem(); const auto subext = stem.extension(); Checks::msg_check_exit(VCPKG_LINE_INFO, @@ -254,52 +260,6 @@ namespace vcpkg contents = contents.substr(pos); fs.write_contents(to_path, contents, VCPKG_LINE_INFO); } - - // We are trying to bootstrap vcpkg's copy of CMake which comes in a zipped file. - // If this is successful, we'll use the downloaded CMake for most extractions. - // We will also extract a portable 7z (using the bootstrapped CMake) to use when performance is required. - // - // We use the following methods to attempt this bootstrap, in order: - // 1) Search for a System32/tar.exe (available on Windows 10+) - // tar.exe unpacks cmake.zip -> cmake.exe unpacks 7z.7z - // 2) Search for a user installed CMake on PATH and Program Files [(x86)] - // (user) cmake.exe unpacks cmake.zip -> (vcpkg) cmake.exe unpacks 7z.7z - // 3) As a last resource, install 7zip using a MSI installer - // msiexec installs 7zip.msi -> 7zip unpacks cmake.zip -> cmake.exe unpacks 7z.7z - void win32_extract_bootstrap_zip(const Filesystem& fs, - const ToolCache& tools, - MessageSink& status_sink, - const Path& archive, - const Path& to_path) - { - fs.remove_all(to_path, VCPKG_LINE_INFO); - Path to_path_partial = to_path + ".partial." + std::to_string(GetCurrentProcessId()); - - fs.remove_all(to_path_partial, VCPKG_LINE_INFO); - fs.create_directories(to_path_partial, VCPKG_LINE_INFO); - const auto tar_path = get_system32().value_or_exit(VCPKG_LINE_INFO) / "tar.exe"; - if (fs.exists(tar_path, IgnoreErrors{})) - { - // On Windows 10, tar.exe is in the box. - extract_tar(tar_path, archive, to_path_partial); - } - else - { - auto maybe_cmake_tool = find_system_cmake(fs); - if (maybe_cmake_tool) - { - // If the user has a CMake version installed we can use that to unpack. - extract_tar_cmake(maybe_cmake_tool.value_or_exit(VCPKG_LINE_INFO), archive, to_path_partial); - } - else - { - // On Windows <10, we attempt to use msiexec to unpack 7zip. - win32_extract_with_seven_zip( - tools.get_tool_path(Tools::SEVEN_ZIP_MSI, status_sink), archive, to_path_partial); - } - } - fs.rename_with_retry(to_path_partial, to_path, VCPKG_LINE_INFO); - } #endif void extract_tar(const Path& tar_tool, const Path& archive, const Path& to_path) diff --git a/src/vcpkg/tools.cpp b/src/vcpkg/tools.cpp index a5eecef261..cc956da923 100644 --- a/src/vcpkg/tools.cpp +++ b/src/vcpkg/tools.cpp @@ -691,18 +691,7 @@ namespace vcpkg if (tool_data.is_archive) { status_sink.println(Color::none, msgExtractingTool, msg::tool_name = tool_data.name); -#if defined(_WIN32) - if (tool_data.name == "cmake") - { - // We use cmake as the core extractor on Windows, so we need to perform a special dance when - // extracting it. - win32_extract_bootstrap_zip(fs, *this, status_sink, download_path, tool_dir_path); - } - else -#endif // ^^^ _WIN32 - { - set_directory_to_archive_contents(fs, *this, status_sink, download_path, tool_dir_path); - } + set_directory_to_archive_contents(fs, *this, status_sink, download_path, tool_dir_path); } else { diff --git a/vcpkg-init/vcpkg-scripts-sha.txt b/vcpkg-init/vcpkg-scripts-sha.txt index 967f07d431..9cb240f242 100644 --- a/vcpkg-init/vcpkg-scripts-sha.txt +++ b/vcpkg-init/vcpkg-scripts-sha.txt @@ -1 +1 @@ -5c7d3a872dd861817fc812647176d5076085a7eb +9f11f2df35f60fb483e0f11667653974ddb880ee From 6b0736388b320121a48b0658e49f7e7c4e4afb41 Mon Sep 17 00:00:00 2001 From: Billy O'Neal Date: Wed, 18 Sep 2024 14:50:15 -0700 Subject: [PATCH 06/39] Ban $/include/module.modulemap (#1492) Related https://github.com/microsoft/vcpkg/pull/41062 --- src/vcpkg/postbuildlint.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/vcpkg/postbuildlint.cpp b/src/vcpkg/postbuildlint.cpp index 1f1b82cbbd..968e7c96b3 100644 --- a/src/vcpkg/postbuildlint.cpp +++ b/src/vcpkg/postbuildlint.cpp @@ -201,6 +201,7 @@ namespace vcpkg "Makefile.am", "Makefile.in", "Makefile", + "module.modulemap", }; static constexpr Span restricted_lists[] = { restricted_sys_filenames, restricted_crt_filenames, restricted_general_filenames}; From 5f5da308dd1dd3cc49641c60eafff176e248a9dd Mon Sep 17 00:00:00 2001 From: Billy O'Neal Date: Wed, 18 Sep 2024 15:17:36 -0700 Subject: [PATCH 07/39] Update vcpkg-scripts SHA 2024-09-18. (#1493) --- vcpkg-init/vcpkg-scripts-sha.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vcpkg-init/vcpkg-scripts-sha.txt b/vcpkg-init/vcpkg-scripts-sha.txt index 9cb240f242..ad6ba66835 100644 --- a/vcpkg-init/vcpkg-scripts-sha.txt +++ b/vcpkg-init/vcpkg-scripts-sha.txt @@ -1 +1 @@ -9f11f2df35f60fb483e0f11667653974ddb880ee +fc358711d78c5dcb8f240daea628ecfee60fb164 From 6e31391a082ac7095eff2e1d9c4b953ad57a3d6e Mon Sep 17 00:00:00 2001 From: Billy O'Neal Date: Thu, 19 Sep 2024 11:02:38 -0700 Subject: [PATCH 08/39] upgrade.ps1: Test without needing a whole git clone (#1494) Removes the hack added in https://github.com/microsoft/vcpkg-tool/pull/1477 Tests the condition fixed by https://github.com/microsoft/vcpkg-tool/pull/1473 --- .../end-to-end-tests-dir/upgrade.ps1 | 129 +++++++++++------- azure-pipelines/end-to-end-tests-prelude.ps1 | 36 ++++- 2 files changed, 116 insertions(+), 49 deletions(-) diff --git a/azure-pipelines/end-to-end-tests-dir/upgrade.ps1 b/azure-pipelines/end-to-end-tests-dir/upgrade.ps1 index 6cf2b4e2fe..4d5a95123b 100644 --- a/azure-pipelines/end-to-end-tests-dir/upgrade.ps1 +++ b/azure-pipelines/end-to-end-tests-dir/upgrade.ps1 @@ -1,51 +1,84 @@ . "$PSScriptRoot/../end-to-end-tests-prelude.ps1" -git clone $VcpkgRoot "$TestingRoot/temp-repo" --local -try -{ - $env:VCPKG_ROOT = "$TestingRoot/temp-repo" - git -C "$TestingRoot/temp-repo" switch -d e1934f4a2a0c58bb75099d89ed980832379907fa # vcpkg-cmake @ 2022-12-22 - Copy-Item "$VcpkgRoot/scripts/vcpkgTools.xml" "$TestingRoot/temp-repo/scripts/vcpkgTools.xml" -Force - $output = Run-VcpkgAndCaptureOutput install vcpkg-cmake - Throw-IfFailed - if (-Not ($output -match 'vcpkg-cmake:[^ ]+@2022-12-22')) - { - throw 'Unexpected vcpkg-cmake install' - } - - git -C "$TestingRoot/temp-repo" checkout -- 'scripts/vcpkgTools.xml' - git -C "$TestingRoot/temp-repo" switch -d f6a5d4e8eb7476b8d7fc12a56dff300c1c986131 # vcpkg-cmake @ 2023-05-04 - Copy-Item "$VcpkgRoot/scripts/vcpkgTools.xml" "$TestingRoot/temp-repo/scripts/vcpkgTools.xml" -Force - $output = Run-VcpkgAndCaptureOutput upgrade - Throw-IfNotFailed - if (-Not ($output -match 'If you are sure you want to rebuild the above packages, run this command with the --no-dry-run option.')) - { - throw "Upgrade didn't handle dry-run correctly" - } - - if (-Not ($output -match '\* vcpkg-cmake:[^ ]+@2023-05-04')) - { - throw "Upgrade didn't choose expected version" - } - - $output = Run-VcpkgAndCaptureOutput upgrade --no-dry-run - Throw-IfFailed - if (-Not ($output -match '\* vcpkg-cmake:[^ ]+@2023-05-04')) - { - throw "Upgrade didn't choose expected version" - } - - if (-Not ($output -match 'vcpkg-cmake:[^:]+: REMOVED:')) - { - throw "Upgrade didn't remove" - } - - if (-Not ($output -match 'vcpkg-cmake:[^:]+: SUCCEEDED:')) - { - throw "Upgrade didn't install" - } -} -finally -{ - $env:VCPKG_ROOT = $VcpkgRoot +Refresh-TestRoot + +$portsRoot = Join-Path $TestingRoot 'ports' +New-Item -ItemType Directory -Force $portsRoot | Out-Null +Set-EmptyTestPort -Name 'upgrade-test-port' -Version '0' -PortsRoot $portsRoot +$output = Run-VcpkgAndCaptureOutput install upgrade-test-port "--x-builtin-ports-root=$portsRoot" @commonArgs +Throw-IfFailed +if (-Not ($output -match 'upgrade-test-port:[^ ]+@0')) +{ + throw 'Unexpected upgrade-test-port install' +} + +Set-EmptyTestPort -Name 'upgrade-test-port' -Version '1' -PortsRoot $portsRoot +$output = Run-VcpkgAndCaptureOutput upgrade "--x-builtin-ports-root=$portsRoot" @commonArgs +Throw-IfNotFailed +if (-Not ($output -match 'If you are sure you want to rebuild the above packages, run this command with the --no-dry-run option.')) +{ + throw "Upgrade didn't handle dry-run correctly" +} + +if (-Not ($output -match '\* upgrade-test-port:[^ ]+@1')) +{ + throw "Upgrade didn't choose expected version" +} + +$output = Run-VcpkgAndCaptureOutput upgrade --no-dry-run "--x-builtin-ports-root=$portsRoot" @commonArgs +Throw-IfFailed +if (-Not ($output -match '\* upgrade-test-port:[^ ]+@1')) +{ + throw "Upgrade didn't choose expected version" +} + +if (-Not ($output -match 'upgrade-test-port:[^:]+: REMOVED:')) +{ + throw "Upgrade didn't remove" +} + +if (-Not ($output -match 'upgrade-test-port:[^:]+: SUCCEEDED:')) +{ + throw "Upgrade didn't install" +} + +# Also test explicitly providing the name + +Set-EmptyTestPort -Name 'upgrade-test-port' -Version '2' -PortsRoot $portsRoot +$output = Run-VcpkgAndCaptureOutput upgrade upgrade-test-port "--x-builtin-ports-root=$portsRoot" @commonArgs +Throw-IfNotFailed +if (-Not ($output -match 'If you are sure you want to rebuild the above packages, run this command with the --no-dry-run option.')) +{ + throw "Upgrade didn't handle dry-run correctly" +} + +if (-Not ($output -match '\* upgrade-test-port:[^ ]+@2')) +{ + throw "Upgrade didn't choose expected version" +} + +$output = Run-VcpkgAndCaptureOutput upgrade upgrade-test-port --no-dry-run "--x-builtin-ports-root=$portsRoot" @commonArgs +Throw-IfFailed +if (-Not ($output -match '\* upgrade-test-port:[^ ]+@2')) +{ + throw "Upgrade didn't choose expected version" +} + +if (-Not ($output -match 'upgrade-test-port:[^:]+: REMOVED:')) +{ + throw "Upgrade didn't remove" +} + +if (-Not ($output -match 'upgrade-test-port:[^:]+: SUCCEEDED:')) +{ + throw "Upgrade didn't install" +} + +# Also test providing a nonexistent name + +$output = Run-VcpkgAndCaptureStdErr upgrade nonexistent "--x-builtin-ports-root=$portsRoot" @commonArgs +Throw-IfNotFailed +if ($output -match 'internal error:') +{ + throw "Upgrade with a nonexistent name crashed" } diff --git a/azure-pipelines/end-to-end-tests-prelude.ps1 b/azure-pipelines/end-to-end-tests-prelude.ps1 index e580c72266..68c95949fb 100644 --- a/azure-pipelines/end-to-end-tests-prelude.ps1 +++ b/azure-pipelines/end-to-end-tests-prelude.ps1 @@ -168,7 +168,6 @@ 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 { @@ -176,9 +175,44 @@ function Remove-Problem-Matchers { 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" } +function Set-EmptyTestPort { + Param( + [Parameter(Mandatory)][ValidateNotNullOrWhitespace()] + [string]$Name, + [Parameter(Mandatory)][ValidateNotNullOrWhitespace()] + [string]$Version, + [Parameter(Mandatory)][ValidateNotNullOrWhitespace()] + [string]$PortsRoot, + [switch]$Malformed + ) + + $portDir = Join-Path $PortsRoot $Name + + New-Item -ItemType Directory -Force -Path $portDir | Out-Null + Set-Content -Value "set(VCPKG_POLICY_EMPTY_PACKAGE enabled)" -LiteralPath (Join-Path $portDir 'portfile.cmake') -Encoding Ascii + + if ($Malformed) { + # Add bad trailing comma + $json = @" +{ + "name": "$Name", + "version": "$Version", +} +"@ + } else { + $json = @" +{ + "name": "$Name", + "version": "$Version" +} +"@ + } + Set-Content -Value $json -LiteralPath (Join-Path $portDir 'vcpkg.json') -Encoding Ascii +} Refresh-TestRoot From 2af426b284d7a321628471c6baef46452385534d Mon Sep 17 00:00:00 2001 From: WangWeiLin-MV <156736127+WangWeiLin-MV@users.noreply.github.com> Date: Fri, 20 Sep 2024 02:03:28 +0800 Subject: [PATCH 09/39] Test cmd_execute with negative exit code (#1488) --- CMakeLists.txt | 10 ++++++++-- src/closes-exit-minus-one.c | 10 ++++++++++ src/vcpkg-test/system.process.cpp | 32 +++++++++++++++++++++++++++++++ 3 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 src/closes-exit-minus-one.c diff --git a/CMakeLists.txt b/CMakeLists.txt index 23dc3aea13..99d3b49308 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -177,6 +177,7 @@ file(GLOB VCPKG_TEST_INCLUDES CONFIGURE_DEPENDS "include/vcpkg-test/*.h") set(VCPKG_FUZZ_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/vcpkg-fuzz/main.cpp") set(TLS12_DOWNLOAD_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/tls12-download.c") +set(CLOSES_EXIT_MINUS_ONE_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/closes-exit-minus-one.c") set(CLOSES_STDIN_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/closes-stdin.c") set(CLOSES_STDOUT_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/closes-stdout.c") set(READS_STDIN_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/reads-stdin.c") @@ -500,7 +501,7 @@ if (BUILD_TESTING) target_link_libraries(vcpkg-test PRIVATE log) endif() - add_dependencies(vcpkg-test reads-stdin closes-stdin closes-stdout test-editor) + add_dependencies(vcpkg-test reads-stdin closes-exit-minus-one closes-stdin closes-stdout test-editor) if(CMAKE_VERSION GREATER_EQUAL "3.16") target_precompile_headers(vcpkg-test REUSE_FROM vcpkglib) @@ -534,6 +535,11 @@ if(VCPKG_BUILD_TLS12_DOWNLOADER) endif() if (BUILD_TESTING) +# === Target: closes-exit-minus-one === + +add_executable(closes-exit-minus-one ${CLOSES_EXIT_MINUS_ONE_SOURCES} "${CMAKE_CURRENT_SOURCE_DIR}/src/vcpkg.manifest") +set_property(TARGET closes-exit-minus-one PROPERTY PDB_NAME "closes-exit-minus-one${VCPKG_PDB_SUFFIX}") + # === Target: closes-stdin === add_executable(closes-stdin ${CLOSES_STDIN_SOURCES} "${CMAKE_CURRENT_SOURCE_DIR}/src/vcpkg.manifest") @@ -585,7 +591,7 @@ if(CLANG_FORMAT) COMMAND "${CLANG_FORMAT}" -i -verbose ${VCPKG_TEST_INCLUDES} COMMAND "${CLANG_FORMAT}" -i -verbose ${VCPKG_FUZZ_SOURCES} ${TLS12_DOWNLOAD_SOURCES} - ${CLOSES_STDIN_SOURCES} ${CLOSES_STDOUT_SOURCES} ${READS_STDIN_SOURCES} + ${CLOSES_STDIN_SOURCES} ${CLOSES_STDOUT_SOURCES} ${READS_STDIN_SOURCES} ${CLOSES_EXIT_MINUS_ONE_SOURCES} ${TEST_EDITOR_SOURCES} ${TEST_SCRIPT_ASSET_CACHE_SOURCES} ) endif() diff --git a/src/closes-exit-minus-one.c b/src/closes-exit-minus-one.c new file mode 100644 index 0000000000..77a8fd4e71 --- /dev/null +++ b/src/closes-exit-minus-one.c @@ -0,0 +1,10 @@ +#if defined(_WIN32) +#include +int main(void) +{ + TerminateProcess(GetCurrentProcess(), 0xFFFFFFFF); + return -1; +} +#else +int main(void) { return -1; } +#endif diff --git a/src/vcpkg-test/system.process.cpp b/src/vcpkg-test/system.process.cpp index f2b031df36..58e9f6db61 100644 --- a/src/vcpkg-test/system.process.cpp +++ b/src/vcpkg-test/system.process.cpp @@ -41,6 +41,38 @@ TEST_CASE ("captures-output", "[system.process]") REQUIRE(run.output == expected); } +TEST_CASE ("closes-exit-minus-one cmd_execute", "[system.process]") +{ + auto test_program = Path(get_exe_path_of_current_process().parent_path()) / "closes-exit-minus-one"; + ProcessLaunchSettings settings; + auto return_value = cmd_execute(Command{test_program}, settings).value_or_exit(VCPKG_LINE_INFO); +#ifdef _WIN32 + REQUIRE(return_value == 0xFFFFFFFFul); +#else // ^^^ _WIN32 / !_WIN32 vvv + if (WIFEXITED(return_value)) + { + REQUIRE(WEXITSTATUS(return_value) == 0x000000FFul); + } + else + { + FAIL(); + } +#endif // ^^^ _WIN32 +} + +TEST_CASE ("closes-exit-minus-one cmd_execute_and_capture_output", "[system.process]") +{ + auto test_program = Path(get_exe_path_of_current_process().parent_path()) / "closes-exit-minus-one"; + RedirectedProcessLaunchSettings settings; + settings.stdin_content = "this is some input that will be intentionally not read"; + auto run = cmd_execute_and_capture_output(Command{test_program}, settings).value_or_exit(VCPKG_LINE_INFO); +#ifdef _WIN32 + REQUIRE(run.exit_code == 0xFFFFFFFFul); +#else // ^^^ _WIN32 / !_WIN32 vvv + REQUIRE(run.exit_code == 0x000000FFul); +#endif // ^^^ _WIN32 +} + TEST_CASE ("no closes-stdin crash", "[system.process]") { auto test_program = Path(get_exe_path_of_current_process().parent_path()) / "closes-stdin"; From c16c0262f1286709aeeddc43ce614f152da7fc4a Mon Sep 17 00:00:00 2001 From: Billy O'Neal Date: Tue, 24 Sep 2024 13:29:40 -0700 Subject: [PATCH 10/39] Remove unnecessary use of std::array (#1496) std::array is actually not that cheap to compile and we did not really need it in these cases. ( https://raw.githubusercontent.com/ned14/stl-header-heft/master/graphs/msvs-2019.png ) --- include/vcpkg/base/util.h | 5 +++++ include/vcpkg/metrics.h | 7 +++---- src/vcpkg-test/metrics.cpp | 2 +- src/vcpkg-test/specifier.cpp | 8 ++++---- src/vcpkg/base/hash.cpp | 23 ++++++++++------------- src/vcpkg/base/messages.cpp | 13 +++++++++---- src/vcpkg/base/system.mac.cpp | 2 +- src/vcpkg/binarycaching.cpp | 2 +- src/vcpkg/cmakevars.cpp | 5 +++-- src/vcpkg/metrics.cpp | 16 ++++++++-------- src/vcpkg/vcpkgcmdarguments.cpp | 2 +- 11 files changed, 46 insertions(+), 39 deletions(-) diff --git a/include/vcpkg/base/util.h b/include/vcpkg/base/util.h index 968c6cd5cc..1b6baaf7c8 100644 --- a/include/vcpkg/base/util.h +++ b/include/vcpkg/base/util.h @@ -53,6 +53,11 @@ namespace vcpkg::Util const auto last = end(container); return std::find(first, last, item) != last; } + template + bool contains(const Vec (&container)[N], const Key& item) + { + return std::find(container, container + N, item) != container + N; + } template std::vector concat(View r1, View r2) { diff --git a/include/vcpkg/metrics.h b/include/vcpkg/metrics.h index b18ccf5c6e..ceec9d9522 100644 --- a/include/vcpkg/metrics.h +++ b/include/vcpkg/metrics.h @@ -4,7 +4,6 @@ #include -#include #include #include #include @@ -49,7 +48,7 @@ namespace vcpkg StringLiteral name; }; - extern const std::array(DefineMetric::COUNT)> all_define_metrics; + extern const DefineMetricEntry all_define_metrics[static_cast(DefineMetric::COUNT)]; enum class StringMetric { @@ -82,7 +81,7 @@ namespace vcpkg StringLiteral preregister_value; // mock values }; - extern const std::array(StringMetric::COUNT)> all_string_metrics; + extern const StringMetricEntry all_string_metrics[static_cast(StringMetric::COUNT)]; enum class BoolMetric { @@ -105,7 +104,7 @@ namespace vcpkg StringLiteral name; }; - extern const std::array(BoolMetric::COUNT)> all_bool_metrics; + extern const BoolMetricEntry all_bool_metrics[static_cast(BoolMetric::COUNT)]; // Batches metrics changes so they can be submitted under a single lock acquisition or // in a single JSON payload. diff --git a/src/vcpkg-test/metrics.cpp b/src/vcpkg-test/metrics.cpp index 728b33f4b7..dbd24d08a2 100644 --- a/src/vcpkg-test/metrics.cpp +++ b/src/vcpkg-test/metrics.cpp @@ -9,7 +9,7 @@ using namespace vcpkg; template -void validate_enum_values_and_names(const std::array& entries) +void validate_enum_values_and_names(const MetricEntry (&entries)[Size]) { static_assert(static_cast(decltype(entries[0].metric)::COUNT) == Size, "COUNT must be the last enum entry."); diff --git a/src/vcpkg-test/specifier.cpp b/src/vcpkg-test/specifier.cpp index 9eb9bce6df..4cf01825b3 100644 --- a/src/vcpkg-test/specifier.cpp +++ b/src/vcpkg-test/specifier.cpp @@ -22,13 +22,13 @@ TEST_CASE ("specifier conversion", "[specifier]") Util::sort(fspecs); REQUIRE(fspecs.size() == SPEC_SIZE); - std::array features = {"0", "1", "2", "3"}; - std::array specs = {&a_spec, &a_spec, &b_spec, &b_spec}; + constexpr const char* features[SPEC_SIZE] = {"0", "1", "2", "3"}; + PackageSpec* specs[SPEC_SIZE] = {&a_spec, &a_spec, &b_spec, &b_spec}; for (std::size_t i = 0; i < SPEC_SIZE; ++i) { - REQUIRE(features.at(i) == fspecs.at(i).feature()); - REQUIRE(*specs.at(i) == fspecs.at(i).spec()); + REQUIRE(features[i] == fspecs[i].feature()); + REQUIRE(*specs[i] == fspecs[i].spec()); } } } diff --git a/src/vcpkg/base/hash.cpp b/src/vcpkg/base/hash.cpp index 68799c62a0..c87bc6a1ec 100644 --- a/src/vcpkg/base/hash.cpp +++ b/src/vcpkg/base/hash.cpp @@ -267,20 +267,21 @@ namespace vcpkg::Hash add_to_unprocessed(&temp, &temp + 1); } + const auto chunk_end = m_chunk + chunk_size; // append 0 to the message so that the resulting length is just enough // to add the message length if (chunk_size - m_current_chunk_size < sizeof(m_message_length)) { // not enough space to add the message length // just resize and process full chunk - std::fill(chunk_begin(), m_chunk.end(), static_cast(0)); + std::fill(chunk_begin(), chunk_end, static_cast(0)); m_impl.process_full_chunk(m_chunk); m_current_chunk_size = 0; } - const auto before_length = m_chunk.end() - sizeof(m_message_length); + const auto before_length = chunk_end - sizeof(m_message_length); std::fill(chunk_begin(), before_length, static_cast(0)); - std::generate(before_length, m_chunk.end(), [length = message_length]() mutable { + std::generate(before_length, chunk_end, [length = message_length]() mutable { const auto result = top_bits(length); length <<= 8; return result; @@ -289,7 +290,7 @@ namespace vcpkg::Hash m_impl.process_full_chunk(m_chunk); } - auto chunk_begin() { return m_chunk.begin() + m_current_chunk_size; } + auto chunk_begin() { return m_chunk + m_current_chunk_size; } using underlying_type = typename ShaAlgorithm::underlying_type; using message_length_type = typename ShaAlgorithm::message_length_type; @@ -297,7 +298,7 @@ namespace vcpkg::Hash ShaAlgorithm m_impl{}; - std::array m_chunk{}; + uchar m_chunk[chunk_size] = {}; std::size_t m_current_chunk_size = 0; message_length_type m_message_length = 0; }; @@ -327,7 +328,7 @@ namespace vcpkg::Hash Sha256Algorithm() noexcept { clear(); } - void process_full_chunk(const std::array& chunk) noexcept + void process_full_chunk(const uchar (&chunk)[chunk_size]) noexcept { std::uint32_t words[64]; @@ -387,7 +388,7 @@ namespace vcpkg::Hash m_digest[7] = 0x5be0cd19; } - constexpr static std::array round_constants = { + constexpr static std::uint32_t round_constants[number_of_rounds] = { 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, @@ -413,7 +414,7 @@ namespace vcpkg::Hash Sha512Algorithm() noexcept { clear(); } - void process_full_chunk(const std::array& chunk) noexcept + void process_full_chunk(const uchar (&chunk)[chunk_size]) noexcept { std::uint64_t words[80]; @@ -473,7 +474,7 @@ namespace vcpkg::Hash m_digest[7] = 0x5be0cd19137e2179; } - constexpr static std::array round_constants = { + constexpr static std::uint64_t round_constants[number_of_rounds] = { 0x428a2f98d728ae22, 0x7137449123ef65cd, 0xb5c0fbcfec4d3b2f, 0xe9b5dba58189dbbc, 0x3956c25bf348b538, 0x59f111f1b605d019, 0x923f82a4af194f9b, 0xab1c5ed5da6d8118, 0xd807aa98a3030242, 0x12835b0145706fbe, 0x243185be4ee4b28c, 0x550c7dc3d5ffb4e2, 0x72be5d74f27b896f, 0x80deb1fe3b1696b1, 0x9bdc06a725c71235, @@ -496,10 +497,6 @@ namespace vcpkg::Hash std::uint64_t m_digest[8]; }; - - // This is required on older compilers, since it was required in C++14 - constexpr std::array Sha256Algorithm::round_constants; - constexpr std::array Sha512Algorithm::round_constants; #endif } diff --git a/src/vcpkg/base/messages.cpp b/src/vcpkg/base/messages.cpp index c6f664f06f..d2a19e3313 100644 --- a/src/vcpkg/base/messages.cpp +++ b/src/vcpkg/base/messages.cpp @@ -158,18 +158,23 @@ namespace vcpkg { static constexpr const size_t max_number_of_args = 5; + struct ExamplesArray + { + const StringLiteral* examples[max_number_of_args]; + }; + struct MessageData { StringLiteral name; - std::array arg_examples; + ExamplesArray arg_examples; const char* comment; StringLiteral builtin_message; }; template - constexpr std::array make_arg_examples_array(Args...) + constexpr ExamplesArray make_arg_examples_array(Args...) { - return std::array{&ArgExample::example...}; + return ExamplesArray{&ArgExample::example...}; } constexpr MessageData message_data[] = { @@ -205,7 +210,7 @@ namespace vcpkg { if (index >= detail::number_of_messages) Checks::unreachable(VCPKG_LINE_INFO); std::string msg = message_data[index].comment; - for (auto&& ex : message_data[index].arg_examples) + for (auto&& ex : message_data[index].arg_examples.examples) { if (ex == nullptr || ex->empty()) continue; if (!msg.empty()) msg.push_back(' '); diff --git a/src/vcpkg/base/system.mac.cpp b/src/vcpkg/base/system.mac.cpp index c99a330278..4543006161 100644 --- a/src/vcpkg/base/system.mac.cpp +++ b/src/vcpkg/base/system.mac.cpp @@ -51,7 +51,7 @@ namespace vcpkg { // this exclusion list is the taken from VS Code's source code // https://github.com/microsoft/vscode/blob/main/src/vs/base/node/macAddress.ts - static constexpr std::array invalid_macs{ + static constexpr StringLiteral invalid_macs[] = { "00:00:00:00:00:00", "ff:ff:ff:ff:ff:ff", // iBridge MAC address used on some Apple devices diff --git a/src/vcpkg/binarycaching.cpp b/src/vcpkg/binarycaching.cpp index 347c8242f5..1b093139cb 100644 --- a/src/vcpkg/binarycaching.cpp +++ b/src/vcpkg/binarycaching.cpp @@ -1834,7 +1834,7 @@ namespace vcpkg { std::vector invalid_keys; auto result = api_stable_format(url_template, [&](std::string&, StringView key) { - static constexpr std::array valid_keys = {"name", "version", "sha", "triplet"}; + static constexpr StringLiteral valid_keys[] = {"name", "version", "sha", "triplet"}; if (!Util::Vectors::contains(valid_keys, key)) { invalid_keys.push_back(key.to_string()); diff --git a/src/vcpkg/cmakevars.cpp b/src/vcpkg/cmakevars.cpp index 6e9f5abbda..ee262ec181 100644 --- a/src/vcpkg/cmakevars.cpp +++ b/src/vcpkg/cmakevars.cpp @@ -318,8 +318,9 @@ endfunction() { std::vector>> vars(1); // Hack: PackageSpecs should never have .name=="" - const auto file_path = create_tag_extraction_file(std::array, 1>{ - std::pair{FullPackageSpec{{"", triplet}, {}}, ""}}); + std::pair tag_extracts{FullPackageSpec{{"", triplet}, {}}, ""}; + const auto file_path = + create_tag_extraction_file(View>{&tag_extracts, 1}); launch_and_split(file_path, vars); paths.get_filesystem().remove(file_path, VCPKG_LINE_INFO); diff --git a/src/vcpkg/metrics.cpp b/src/vcpkg/metrics.cpp index db13a59da5..c9ba1e212d 100644 --- a/src/vcpkg/metrics.cpp +++ b/src/vcpkg/metrics.cpp @@ -30,10 +30,10 @@ namespace using namespace vcpkg; template - constexpr StringLiteral get_metric_name(const T metric, const std::array& entries) noexcept + constexpr StringLiteral get_metric_name(const T metric, const MetricEntry (&entries)[Size]) noexcept { auto metric_index = static_cast(metric); - if (metric_index < entries.size()) + if (metric_index < Size) { return entries[metric_index].name; } @@ -87,7 +87,7 @@ namespace namespace vcpkg { - const constexpr std::array(DefineMetric::COUNT)> all_define_metrics{{ + const constexpr DefineMetricEntry all_define_metrics[static_cast(DefineMetric::COUNT)] = { {DefineMetric::AssetSource, "asset-source"}, {DefineMetric::BinaryCachingAws, "binarycaching_aws"}, {DefineMetric::BinaryCachingAzBlob, "binarycaching_azblob"}, @@ -113,7 +113,7 @@ namespace vcpkg {DefineMetric::VersioningErrorVersion, "versioning-error-version"}, {DefineMetric::X_VcpkgRegistriesCache, "X_VCPKG_REGISTRIES_CACHE"}, {DefineMetric::X_WriteNugetPackagesConfig, "x-write-nuget-packages-config"}, - }}; + }; // SHA256s separated by colons, separated by commas static constexpr char plan_example[] = "0000000011111111aaaaaaaabbbbbbbbccccccccddddddddeeeeeeeeffffffff:" @@ -123,7 +123,7 @@ namespace vcpkg "0000000011111111aaaaaaaabbbbbbbbccccccccddddddddeeeeeeeeffffffff:" "0000000011111111aaaaaaaabbbbbbbbccccccccddddddddeeeeeeeeffffffff"; - const constexpr std::array(StringMetric::COUNT)> all_string_metrics{{ + const constexpr StringMetricEntry all_string_metrics[static_cast(StringMetric::COUNT)] = { // registryUri:id:version,... {StringMetric::AcquiredArtifacts, "acquired_artifacts", plan_example}, {StringMetric::ActivatedArtifacts, "activated_artifacts", plan_example}, @@ -146,9 +146,9 @@ namespace vcpkg {StringMetric::UserMac, "user_mac", "0"}, {StringMetric::VcpkgVersion, "vcpkg_version", "2999-12-31-unknownhash"}, {StringMetric::Warning, "warning", "warning"}, - }}; + }; - const constexpr std::array(BoolMetric::COUNT)> all_bool_metrics{{ + const constexpr BoolMetricEntry all_bool_metrics[static_cast(BoolMetric::COUNT)] = { {BoolMetric::DetectedContainer, "detected_container"}, {BoolMetric::DependencyGraphSuccess, "dependency-graph-success"}, {BoolMetric::FeatureFlagBinaryCaching, "feature-flag-binarycaching"}, @@ -159,7 +159,7 @@ namespace vcpkg {BoolMetric::FeatureFlagVersions, "feature-flag-versions"}, {BoolMetric::InstallManifestMode, "install_manifest_mode"}, {BoolMetric::OptionOverlayPorts, "option_overlay_ports"}, - }}; + }; void MetricsSubmission::track_elapsed_us(double value) { diff --git a/src/vcpkg/vcpkgcmdarguments.cpp b/src/vcpkg/vcpkgcmdarguments.cpp index 4247cf9018..8cdcd62312 100644 --- a/src/vcpkg/vcpkgcmdarguments.cpp +++ b/src/vcpkg/vcpkgcmdarguments.cpp @@ -66,7 +66,7 @@ namespace {EnvironmentVariableBuildNumber, "Generic"}, }; - constexpr std::array KNOWN_CI_REPOSITORY_IDENTIFIERS{ + constexpr StringLiteral KNOWN_CI_REPOSITORY_IDENTIFIERS[] = { // Azure Pipelines // https://learn.microsoft.com/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml#build-variables-devops-services EnvironmentVariableBuildRepositoryId, From b0393cbb6c0c6dcb4ae1db19fe2f58e56bcfebf8 Mon Sep 17 00:00:00 2001 From: "CSIGS@microsoft.com" Date: Wed, 25 Sep 2024 11:43:26 -0700 Subject: [PATCH 11/39] Juno: check in to juno/hb_cb3056d7-d122-4ef4-8657-e36080a7f8c6_20240925125314152. (#1498) --- src/localization/de/messages.json.lcl | 18 +++--------------- src/localization/es/messages.json.lcl | 18 +++--------------- src/localization/pt-BR/messages.json.lcl | 18 +++--------------- src/localization/ru/messages.json.lcl | 18 +++--------------- src/localization/zh-Hant/messages.json.lcl | 18 +++--------------- 5 files changed, 15 insertions(+), 75 deletions(-) diff --git a/src/localization/de/messages.json.lcl b/src/localization/de/messages.json.lcl index 1421117708..45105c0890 100644 --- a/src/localization/de/messages.json.lcl +++ b/src/localization/de/messages.json.lcl @@ -7054,15 +7054,12 @@ - + - + - + - - - @@ -11584,15 +11581,6 @@ - - - - - - - - - diff --git a/src/localization/es/messages.json.lcl b/src/localization/es/messages.json.lcl index a25aae64f1..acb029e1fa 100644 --- a/src/localization/es/messages.json.lcl +++ b/src/localization/es/messages.json.lcl @@ -7054,15 +7054,12 @@ - + - + - + - - - @@ -11584,15 +11581,6 @@ - - - - - - - - - diff --git a/src/localization/pt-BR/messages.json.lcl b/src/localization/pt-BR/messages.json.lcl index b3fbf41d53..b1fa2abbfb 100644 --- a/src/localization/pt-BR/messages.json.lcl +++ b/src/localization/pt-BR/messages.json.lcl @@ -7054,15 +7054,12 @@ - + - + - + - - - @@ -11584,15 +11581,6 @@ - - - - - - - - - diff --git a/src/localization/ru/messages.json.lcl b/src/localization/ru/messages.json.lcl index 900c95f95c..cb1775ee6e 100644 --- a/src/localization/ru/messages.json.lcl +++ b/src/localization/ru/messages.json.lcl @@ -7054,15 +7054,12 @@ - + - + - + - - - @@ -11587,15 +11584,6 @@ - - - - - - - - - diff --git a/src/localization/zh-Hant/messages.json.lcl b/src/localization/zh-Hant/messages.json.lcl index 2234a3a2c1..bc464be7b8 100644 --- a/src/localization/zh-Hant/messages.json.lcl +++ b/src/localization/zh-Hant/messages.json.lcl @@ -7054,15 +7054,12 @@ - + - + - + - - - @@ -11587,15 +11584,6 @@ - - - - - - - - - From 12dbef3638f720308d0c4083cbebab95e48238cf Mon Sep 17 00:00:00 2001 From: Embedded Bot Date: Thu, 26 Sep 2024 05:04:03 +0000 Subject: [PATCH 12/39] [localization][automated][ci skip] update locale files --- locales/messages.de.json | 2 +- locales/messages.es.json | 2 +- locales/messages.pt-BR.json | 2 +- locales/messages.ru.json | 2 +- locales/messages.zh-Hant.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/locales/messages.de.json b/locales/messages.de.json index 8f8f181107..f42559048f 100644 --- a/locales/messages.de.json +++ b/locales/messages.de.json @@ -664,7 +664,7 @@ "InstalledBy": "Installiert von {path}", "InstalledPackages": "Die folgenden Pakete sind bereits installiert:", "InstalledRequestedPackages": "Alle angeforderten Pakete sind derzeit installiert.", - "InstallingMavenFileFailure": "{path} installing Maven file, {command_line} failed with {exit_code}", + "InstallingMavenFileFailure": "{path} Beim Installieren der Maven-Datei ist {command_line} mit {exit_code} fehlgeschlagen.", "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", diff --git a/locales/messages.es.json b/locales/messages.es.json index 92aad113e2..c7263a8338 100644 --- a/locales/messages.es.json +++ b/locales/messages.es.json @@ -664,7 +664,7 @@ "InstalledBy": "Instalado por {path}", "InstalledPackages": "Los siguientes paquetes ya están instalados:", "InstalledRequestedPackages": "Todos los paquetes solicitados están instalados actualmente.", - "InstallingMavenFileFailure": "{path} installing Maven file, {command_line} failed with {exit_code}", + "InstallingMavenFileFailure": "{path} al instalar el archivo Maven, {command_line} produjo un error con {exit_code}", "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", diff --git a/locales/messages.pt-BR.json b/locales/messages.pt-BR.json index cbc85f9ac7..1971d3fc37 100644 --- a/locales/messages.pt-BR.json +++ b/locales/messages.pt-BR.json @@ -664,7 +664,7 @@ "InstalledBy": "Instalado por {path}", "InstalledPackages": "Os seguintes pacotes já estão instalados:", "InstalledRequestedPackages": "Todos os pacotes solicitados estão instalados no momento.", - "InstallingMavenFileFailure": "{path} installing Maven file, {command_line} failed with {exit_code}", + "InstallingMavenFileFailure": "{path} ao instalar o arquivo Maven, {command_line} falhou com {exit_code}", "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", diff --git a/locales/messages.ru.json b/locales/messages.ru.json index 661d02049e..bc26adde25 100644 --- a/locales/messages.ru.json +++ b/locales/messages.ru.json @@ -664,7 +664,7 @@ "InstalledBy": "Установлено посредством {path}", "InstalledPackages": "Следующие пакеты уже установлены:", "InstalledRequestedPackages": "Все запрашиваемые пакеты сейчас установлены.", - "InstallingMavenFileFailure": "{path} installing Maven file, {command_line} failed with {exit_code}", + "InstallingMavenFileFailure": "В {path} производится установка файла Maven, командная строка {command_line} выдала ошибку с кодом возврата {exit_code}", "InstallingOverlayPort": "производится установка порта наложения отсюда", "InstallingPackage": "Выполняется установка {action_index}/{count} {spec}…", "IntegrateBashHelp": "Включить завершение табуляции bash. Только для систем, отличных от Windows", diff --git a/locales/messages.zh-Hant.json b/locales/messages.zh-Hant.json index 3fe8ec9638..52b88bb3ed 100644 --- a/locales/messages.zh-Hant.json +++ b/locales/messages.zh-Hant.json @@ -664,7 +664,7 @@ "InstalledBy": "由 {path} 安裝", "InstalledPackages": "已安装下列套件:", "InstalledRequestedPackages": "目前已安装所有要求的套件。", - "InstallingMavenFileFailure": "{path} installing Maven file, {command_line} failed with {exit_code}", + "InstallingMavenFileFailure": "{path} 安裝 Maven 檔案時,{command_line} 失敗,{exit_code}", "InstallingOverlayPort": "正在從這裡安裝重疊連接埠", "InstallingPackage": "正在安裝 {action_index}/{count} {spec}...", "IntegrateBashHelp": "啟用 bash Tab 鍵自動完成。僅限非 Windows", From 81b4999bbb29966f8a180121504dbb1b7b335403 Mon Sep 17 00:00:00 2001 From: "CSIGS@microsoft.com" Date: Thu, 26 Sep 2024 13:05:10 -0700 Subject: [PATCH 13/39] Juno: check in to juno/hb_cb3056d7-d122-4ef4-8657-e36080a7f8c6_20240926125225148. (#1500) --- src/localization/cs/messages.json.lcl | 18 +++--------------- src/localization/fr/messages.json.lcl | 18 +++--------------- src/localization/it/messages.json.lcl | 18 +++--------------- src/localization/ko/messages.json.lcl | 18 +++--------------- src/localization/tr/messages.json.lcl | 18 +++--------------- 5 files changed, 15 insertions(+), 75 deletions(-) diff --git a/src/localization/cs/messages.json.lcl b/src/localization/cs/messages.json.lcl index d2bcced3f0..e41e9e817b 100644 --- a/src/localization/cs/messages.json.lcl +++ b/src/localization/cs/messages.json.lcl @@ -7054,15 +7054,12 @@ - + - + - + - - - @@ -11587,15 +11584,6 @@ - - - - - - - - - diff --git a/src/localization/fr/messages.json.lcl b/src/localization/fr/messages.json.lcl index 23845a0905..6e705a6bb3 100644 --- a/src/localization/fr/messages.json.lcl +++ b/src/localization/fr/messages.json.lcl @@ -7054,15 +7054,12 @@ - + - + - + - - - @@ -11584,15 +11581,6 @@ - - - - - - - - - diff --git a/src/localization/it/messages.json.lcl b/src/localization/it/messages.json.lcl index 25063afedf..61d7880fc4 100644 --- a/src/localization/it/messages.json.lcl +++ b/src/localization/it/messages.json.lcl @@ -7054,15 +7054,12 @@ - + - + - + - - - @@ -11587,15 +11584,6 @@ - - - - - - - - - diff --git a/src/localization/ko/messages.json.lcl b/src/localization/ko/messages.json.lcl index 61870159fb..2d2d71ccd6 100644 --- a/src/localization/ko/messages.json.lcl +++ b/src/localization/ko/messages.json.lcl @@ -7054,15 +7054,12 @@ - + - + - + - - - @@ -11584,15 +11581,6 @@ - - - - - - - - - diff --git a/src/localization/tr/messages.json.lcl b/src/localization/tr/messages.json.lcl index 0db35aacc2..2cbad230eb 100644 --- a/src/localization/tr/messages.json.lcl +++ b/src/localization/tr/messages.json.lcl @@ -7054,15 +7054,12 @@ - + - + - + - - - @@ -11587,15 +11584,6 @@ - - - - - - - - - From 72328bf976eeda5760e5f2eafc8f772446debdd3 Mon Sep 17 00:00:00 2001 From: Embedded Bot Date: Fri, 27 Sep 2024 05:04:15 +0000 Subject: [PATCH 14/39] [localization][automated][ci skip] update locale files --- locales/messages.cs.json | 2 +- locales/messages.fr.json | 2 +- locales/messages.it.json | 2 +- locales/messages.ko.json | 2 +- locales/messages.tr.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/locales/messages.cs.json b/locales/messages.cs.json index bced805c82..52ce4a6270 100644 --- a/locales/messages.cs.json +++ b/locales/messages.cs.json @@ -664,7 +664,7 @@ "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.", - "InstallingMavenFileFailure": "{path} installing Maven file, {command_line} failed with {exit_code}", + "InstallingMavenFileFailure": "{path} – instalace souboru Maven, {command_line}: selhalo s ukončovacím kódem {exit_code}", "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", diff --git a/locales/messages.fr.json b/locales/messages.fr.json index 635a7a2423..9870d996ef 100644 --- a/locales/messages.fr.json +++ b/locales/messages.fr.json @@ -664,7 +664,7 @@ "InstalledBy": "Installé par {path}", "InstalledPackages": "Les packages suivants sont déjà installés :", "InstalledRequestedPackages": "Tous les packages demandés sont actuellement installés.", - "InstallingMavenFileFailure": "{path} installing Maven file, {command_line} failed with {exit_code}", + "InstallingMavenFileFailure": "{path} l’installation du fichier Maven, {command_line} a échoué avec {exit_code}", "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", diff --git a/locales/messages.it.json b/locales/messages.it.json index 860b93ae9e..8b36e5ee4b 100644 --- a/locales/messages.it.json +++ b/locales/messages.it.json @@ -664,7 +664,7 @@ "InstalledBy": "Installato da {path}", "InstalledPackages": "I pacchetti seguenti sono già installati:", "InstalledRequestedPackages": "Tutti i pacchetti richiesti sono attualmente installati.", - "InstallingMavenFileFailure": "{path} installing Maven file, {command_line} failed with {exit_code}", + "InstallingMavenFileFailure": "{path} l'installazione del file Maven, {command_line} non è riuscita con {exit_code}", "InstallingOverlayPort": "installazione della porta di sovrimpressione da qui", "InstallingPackage": "Installing {action_index}/{count} {spec}...", "IntegrateBashHelp": "Abilitare il completamento tramite tabulazione bash. Solo non Windows", diff --git a/locales/messages.ko.json b/locales/messages.ko.json index 350f3ca56d..10a0908fb0 100644 --- a/locales/messages.ko.json +++ b/locales/messages.ko.json @@ -664,7 +664,7 @@ "InstalledBy": "{path}에 의해 설치됨", "InstalledPackages": "이미 설치되어 있는 패키지:", "InstalledRequestedPackages": "요청된 모든 패키지가 현재 설치되어 있습니다.", - "InstallingMavenFileFailure": "{path} installing Maven file, {command_line} failed with {exit_code}", + "InstallingMavenFileFailure": "{path}가 Maven 파일을 설치 중이며, {command_line}이 {exit_code}로 실패했음", "InstallingOverlayPort": "여기에서 오버레이 포트 설치", "InstallingPackage": "{action_index}/{count} {spec}을(를) 설치하는 중...", "IntegrateBashHelp": "bash 탭 완성을 사용합니다. 비 Windows 전용입니다.", diff --git a/locales/messages.tr.json b/locales/messages.tr.json index b9e8cb2f65..1a9120049e 100644 --- a/locales/messages.tr.json +++ b/locales/messages.tr.json @@ -664,7 +664,7 @@ "InstalledBy": "{path} tarafından yüklendi", "InstalledPackages": "Aşağıdaki paketler zaten yüklü:", "InstalledRequestedPackages": "İstenen tüm paketler şu anda yüklü.", - "InstallingMavenFileFailure": "{path} installing Maven file, {command_line} failed with {exit_code}", + "InstallingMavenFileFailure": "{path} Maven dosyası yükleme, {command_line} {exit_code} ile başarısız oldu", "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.", From 53380ae6b4d957002afb8e53b37a653112e3bd58 Mon Sep 17 00:00:00 2001 From: "CSIGS@microsoft.com" Date: Fri, 27 Sep 2024 18:49:24 -0700 Subject: [PATCH 15/39] Juno: check in to juno/hb_cb3056d7-d122-4ef4-8657-e36080a7f8c6_20240927125218337. (#1502) --- src/localization/ja/messages.json.lcl | 18 +++--------------- src/localization/pl/messages.json.lcl | 18 +++--------------- src/localization/zh-Hans/messages.json.lcl | 18 +++--------------- 3 files changed, 9 insertions(+), 45 deletions(-) diff --git a/src/localization/ja/messages.json.lcl b/src/localization/ja/messages.json.lcl index e03111e672..9dccf8111c 100644 --- a/src/localization/ja/messages.json.lcl +++ b/src/localization/ja/messages.json.lcl @@ -7054,15 +7054,12 @@ - + - + - + - - - @@ -11587,15 +11584,6 @@ - - - - - - - - - diff --git a/src/localization/pl/messages.json.lcl b/src/localization/pl/messages.json.lcl index fd040d7b95..71123566b4 100644 --- a/src/localization/pl/messages.json.lcl +++ b/src/localization/pl/messages.json.lcl @@ -7054,15 +7054,12 @@ - + - + - + - - - @@ -11584,15 +11581,6 @@ - - - - - - - - - diff --git a/src/localization/zh-Hans/messages.json.lcl b/src/localization/zh-Hans/messages.json.lcl index 194eb22379..240bab4583 100644 --- a/src/localization/zh-Hans/messages.json.lcl +++ b/src/localization/zh-Hans/messages.json.lcl @@ -7054,15 +7054,12 @@ - + - + - + - - - @@ -11587,15 +11584,6 @@ - - - - - - - - - From 5f229433560e7cb255fd2b1feb71feb541768d05 Mon Sep 17 00:00:00 2001 From: Embedded Bot Date: Sat, 28 Sep 2024 05:03:28 +0000 Subject: [PATCH 16/39] [localization][automated][ci skip] update locale files --- locales/messages.ja.json | 2 +- locales/messages.pl.json | 2 +- locales/messages.zh-Hans.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/locales/messages.ja.json b/locales/messages.ja.json index f88931f0dc..46fcf2a749 100644 --- a/locales/messages.ja.json +++ b/locales/messages.ja.json @@ -664,7 +664,7 @@ "InstalledBy": "{path} でインストール済み", "InstalledPackages": "次のパッケージは既にインストールされています。", "InstalledRequestedPackages": "要求されたすべてのパッケージが現時点でインストール済みです。", - "InstallingMavenFileFailure": "{path} installing Maven file, {command_line} failed with {exit_code}", + "InstallingMavenFileFailure": "Maven ファイルをインストールする {path}、{command_line} が {exit_code} で失敗しました", "InstallingOverlayPort": "ここからオーバーレイ ポートをインストールしています", "InstallingPackage": "{action_index}/{count} {spec} をインストールしています...", "IntegrateBashHelp": "bash タブ補完を有効にします。Windows 以外のみ", diff --git a/locales/messages.pl.json b/locales/messages.pl.json index 17c13c3c5d..9413ee66d7 100644 --- a/locales/messages.pl.json +++ b/locales/messages.pl.json @@ -664,7 +664,7 @@ "InstalledBy": "Zainstalowane przez {path}", "InstalledPackages": "Następujące pakiety są już zainstalowane:", "InstalledRequestedPackages": "Wszystkie żądane pakiety są obecnie zainstalowane.", - "InstallingMavenFileFailure": "{path} installing Maven file, {command_line} failed with {exit_code}", + "InstallingMavenFileFailure": "{path} instalowanie pliku Maven, polecenie {command_line} nie powiodło się z błędem {exit_code}", "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", diff --git a/locales/messages.zh-Hans.json b/locales/messages.zh-Hans.json index 47d6297057..24af636349 100644 --- a/locales/messages.zh-Hans.json +++ b/locales/messages.zh-Hans.json @@ -664,7 +664,7 @@ "InstalledBy": "已由 {path} 安装", "InstalledPackages": "已安装以下包:", "InstalledRequestedPackages": "当前已安装所有请求的包。", - "InstallingMavenFileFailure": "{path} installing Maven file, {command_line} failed with {exit_code}", + "InstallingMavenFileFailure": "{path} 安装 Maven 文件,{command_line} 失败,出现 {exit_code}", "InstallingOverlayPort": "正在从此处安装覆盖端口", "InstallingPackage": "正在安装 {action_index}/{count} 个 {spec}...", "IntegrateBashHelp": "启用 bash Tab-completion。仅限非 Windows", From 3122da72b1e4bf98bfc3d51937e6ad6cc4292cdf Mon Sep 17 00:00:00 2001 From: autoantwort <41973254+autoantwort@users.noreply.github.com> Date: Mon, 30 Sep 2024 21:05:13 +0200 Subject: [PATCH 17/39] Fix regression on windows: Env var names are case insensitive (#1501) --- src/vcpkg/base/system.process.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/vcpkg/base/system.process.cpp b/src/vcpkg/base/system.process.cpp index 2802758a37..5173864695 100644 --- a/src/vcpkg/base/system.process.cpp +++ b/src/vcpkg/base/system.process.cpp @@ -555,7 +555,7 @@ namespace vcpkg system32_env, "\\WindowsPowerShell\\v1.0\\"); - std::unordered_set env_strings = { + std::vector env_strings = { "ALLUSERSPROFILE", "APPDATA", "CommonProgramFiles", @@ -650,19 +650,25 @@ namespace vcpkg } else { - env_strings.emplace(std::move(var)); + env_strings.emplace_back(std::move(var)); } } } Environment env; + std::unordered_set env_strings_uppercase; + for (auto&& env_var : env_strings) + { + env_strings_uppercase.emplace(Strings::ascii_to_uppercase(env_var)); + } for (auto&& env_var : get_environment_variables()) { auto pos = env_var.find('='); auto key = env_var.substr(0, pos); - if (Util::Sets::contains(env_strings, key) || - Util::any_of(env_prefix_string, [&](auto&& group) { return Strings::starts_with(key, group); })) + if (Util::Sets::contains(env_strings_uppercase, Strings::ascii_to_uppercase(key)) || + Util::any_of(env_prefix_string, + [&](auto&& group) { return Strings::case_insensitive_ascii_starts_with(key, group); })) { auto value = pos == std::string::npos ? "" : env_var.substr(pos + 1); env.add_entry(key, value); From 8c47fbab171164d96fcb0484dead17afa944debb Mon Sep 17 00:00:00 2001 From: Billy O'Neal Date: Mon, 30 Sep 2024 12:26:51 -0700 Subject: [PATCH 18/39] Update vcpkg-scripts SHA 2024-09-30. (#1503) --- vcpkg-init/vcpkg-scripts-sha.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vcpkg-init/vcpkg-scripts-sha.txt b/vcpkg-init/vcpkg-scripts-sha.txt index ad6ba66835..e3d0058bc6 100644 --- a/vcpkg-init/vcpkg-scripts-sha.txt +++ b/vcpkg-init/vcpkg-scripts-sha.txt @@ -1 +1 @@ -fc358711d78c5dcb8f240daea628ecfee60fb164 +2960d7d80e8d09c84ae8abf15c12196c2ca7d39a From b267c7052f7c620179c79f1406f45e8a3090f087 Mon Sep 17 00:00:00 2001 From: Billy O'Neal Date: Mon, 30 Sep 2024 12:54:26 -0700 Subject: [PATCH 19/39] Fix unset on POSIX. (#1499) Should fix https://github.com/microsoft/vcpkg/issues/36025 --- vcpkg-artifacts/artifacts/activation.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vcpkg-artifacts/artifacts/activation.ts b/vcpkg-artifacts/artifacts/activation.ts index 262e57bb4a..693164a2b1 100644 --- a/vcpkg-artifacts/artifacts/activation.ts +++ b/vcpkg-artifacts/artifacts/activation.ts @@ -705,7 +705,7 @@ function generatePowerShellScript(variables: Record, } function generatePosixScript(variables: Record, aliases: Record): string { - return linq.entries(variables).select(([k, v]) => { return v ? `export ${k}="${v}"` : `unset ${k[0]}`; }).join('\n') + + return linq.entries(variables).select(([k, v]) => { return v ? `export ${k}="${v}"` : `unset ${k}`; }).join('\n') + '\n' + linq.entries(aliases).select(([k, v]) => { return v ? `${k}() {\n ${v} $* \n}` : `unset -f ${v} > /dev/null 2>&1`; }).join('\n') + '\n'; From 48946f6a7f0d16a883cdb6c5c3a3b774237570bf Mon Sep 17 00:00:00 2001 From: Billy O'Neal Date: Mon, 30 Sep 2024 12:54:53 -0700 Subject: [PATCH 20/39] Improve diagnostics when an invalid triplet name is supplied. (#1497) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Improve diagnostics when an invalid triplet name is supplied. This fixes a regression introduced in https://github.com/microsoft/vcpkg-tool/pull/1474 where an error message is added but the corresponding text being parsed is not. This was reported as https://github.com/microsoft/vcpkg/issues/41143 * Fix the unit tests for "hypens" 😅 * Fix comment for changed variable name --- azure-pipelines/end-to-end-tests-dir/cli.ps1 | 17 +++++++++++++++- include/vcpkg/base/message-data.inc.h | 14 ++++++++----- include/vcpkg/base/parse.h | 4 ++++ locales/messages.json | 11 +++++----- src/vcpkg-test/input.cpp | 21 +++++++++++++------- src/vcpkg-test/manifests.cpp | 12 +++++------ src/vcpkg-test/specifier.cpp | 16 +++++++-------- src/vcpkg/base/parse.cpp | 17 +++++++++++----- src/vcpkg/input.cpp | 19 +++++++++++------- 9 files changed, 87 insertions(+), 44 deletions(-) diff --git a/azure-pipelines/end-to-end-tests-dir/cli.ps1 b/azure-pipelines/end-to-end-tests-dir/cli.ps1 index 4aeb479df7..1e7268b238 100644 --- a/azure-pipelines/end-to-end-tests-dir/cli.ps1 +++ b/azure-pipelines/end-to-end-tests-dir/cli.ps1 @@ -50,7 +50,7 @@ $out = Run-VcpkgAndCaptureOutput -TestArgs @('install', 'this-is-super-not-a-#po Throw-IfNotFailed [string]$expected = @" -error: expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hypens. +error: expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hyphens. on expression: this-is-super-not-a-#port ^ @@ -76,6 +76,21 @@ if (-Not ($out.Replace("`r`n", "`n").EndsWith($expected))) throw 'Bad malformed --binarysource output; it was: ' + $out } +$out = Run-VcpkgAndCaptureOutput -TestArgs @('install', 'zlib', '--triplet', 'ARM-windows') +Throw-IfNotFailed + +$expected = @" +error: Invalid triplet name. Triplet names are all lowercase alphanumeric+hyphens. + on expression: ARM-windows + ^ +Built-in Triplets: +"@ + +if (-Not ($out.Replace("`r`n", "`n").StartsWith($expected))) +{ + throw 'Bad malformed triplet output. It was: ' + $out +} + $out = Run-VcpkgAndCaptureStdErr -TestArgs @('x-package-info', 'zlib#notaport', '--x-json', '--x-installed') Throw-IfNotFailed $expected = @" diff --git a/include/vcpkg/base/message-data.inc.h b/include/vcpkg/base/message-data.inc.h index 0f6b1dcdea..effc1651ef 100644 --- a/include/vcpkg/base/message-data.inc.h +++ b/include/vcpkg/base/message-data.inc.h @@ -2207,25 +2207,25 @@ DECLARE_MESSAGE( (msg::package_name, msg::url), "", "\"{package_name}\" is not a valid feature name. " - "Feature names must be lowercase alphanumeric+hypens and not reserved (see {url} for more information).") + "Feature names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).") DECLARE_MESSAGE(ParseIdentifierError, (msg::value, msg::url), "{value} is a lowercase identifier like 'boost'", "\"{value}\" is not a valid identifier. " - "Identifiers must be lowercase alphanumeric+hypens and not reserved (see {url} for more information).") + "Identifiers must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).") DECLARE_MESSAGE( ParsePackageNameNotEof, (msg::url), "", "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 {url} for more " + "in a port name. Port names are all lowercase alphanumeric+hyphens and not reserved (see {url} for more " "information).") DECLARE_MESSAGE( ParsePackageNameError, (msg::package_name, msg::url), "", "\"{package_name}\" is not a valid package name. " - "Package names must be lowercase alphanumeric+hypens and not reserved (see {url} for more information).") + "Package names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).") DECLARE_MESSAGE(ParsePackagePatternError, (msg::package_name, msg::url), "", @@ -2237,11 +2237,15 @@ DECLARE_MESSAGE( (), "", "expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be " - "in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hypens.") + "in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hyphens.") DECLARE_MESSAGE(ParseQualifiedSpecifierNotEofSquareBracket, (msg::version_spec), "", "expected the end of input parsing a package spec; did you mean {version_spec} instead?") +DECLARE_MESSAGE(ParseTripletNotEof, + (), + "", + "Invalid triplet name. Triplet names are all lowercase alphanumeric+hyphens.") DECLARE_MESSAGE(PathMustBeAbsolute, (msg::path), "", diff --git a/include/vcpkg/base/parse.h b/include/vcpkg/base/parse.h index 37263813c4..5ddd329adc 100644 --- a/include/vcpkg/base/parse.h +++ b/include/vcpkg/base/parse.h @@ -21,6 +21,10 @@ namespace vcpkg int column; }; + void append_caret_line(LocalizedString& res, + const Unicode::Utf8Decoder& it, + const Unicode::Utf8Decoder& start_of_line); + struct ParseMessage { SourceLoc location = {}; diff --git a/locales/messages.json b/locales/messages.json index 6284e559c8..afa5ba7e41 100644 --- a/locales/messages.json +++ b/locales/messages.json @@ -1252,19 +1252,20 @@ "ParagraphExpectedColonAfterField": "expected ':' after field name", "ParagraphExpectedFieldName": "expected field name", "ParagraphUnexpectedEndOfLine": "unexpected end of line, to span a blank line use \" .\"", - "ParseFeatureNameError": "\"{package_name}\" is not a valid feature name. Feature names must be lowercase alphanumeric+hypens and not reserved (see {url} for more information).", + "ParseFeatureNameError": "\"{package_name}\" is not a valid feature name. Feature names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", "_ParseFeatureNameError.comment": "An example of {package_name} is zlib. An example of {url} is https://github.com/microsoft/vcpkg.", - "ParseIdentifierError": "\"{value}\" is not a valid identifier. Identifiers must be lowercase alphanumeric+hypens and not reserved (see {url} for more information).", + "ParseIdentifierError": "\"{value}\" is not a valid identifier. Identifiers must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", "_ParseIdentifierError.comment": "{value} is a lowercase identifier like 'boost' An example of {url} is https://github.com/microsoft/vcpkg.", - "ParsePackageNameError": "\"{package_name}\" is not a valid package name. Package names must be lowercase alphanumeric+hypens and not reserved (see {url} for more information).", + "ParsePackageNameError": "\"{package_name}\" is not a valid package name. Package names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", "_ParsePackageNameError.comment": "An example of {package_name} is zlib. An example of {url} is https://github.com/microsoft/vcpkg.", - "ParsePackageNameNotEof": "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 {url} for more information).", + "ParsePackageNameNotEof": "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+hyphens and not reserved (see {url} for more information).", "_ParsePackageNameNotEof.comment": "An example of {url} is https://github.com/microsoft/vcpkg.", "ParsePackagePatternError": "\"{package_name}\" 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 {url} for more information).", "_ParsePackagePatternError.comment": "An example of {package_name} is zlib. An example of {url} is https://github.com/microsoft/vcpkg.", - "ParseQualifiedSpecifierNotEof": "expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hypens.", + "ParseQualifiedSpecifierNotEof": "expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hyphens.", "ParseQualifiedSpecifierNotEofSquareBracket": "expected the end of input parsing a package spec; did you mean {version_spec} instead?", "_ParseQualifiedSpecifierNotEofSquareBracket.comment": "An example of {version_spec} is zlib:x64-windows@1.0.0.", + "ParseTripletNotEof": "Invalid triplet name. Triplet names are all lowercase alphanumeric+hyphens.", "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", diff --git a/src/vcpkg-test/input.cpp b/src/vcpkg-test/input.cpp index 886acd4697..da14590da7 100644 --- a/src/vcpkg-test/input.cpp +++ b/src/vcpkg-test/input.cpp @@ -81,7 +81,7 @@ TEST_CASE ("parse_package_spec forbid illegal characters", "[input][parse_packag { REQUIRE( maybe_parsed.error() == - R"(error: expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hypens. + R"(error: expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hyphens. on expression: zlib#notaport ^)"); } @@ -111,10 +111,17 @@ TEST_CASE ("check_triplet rejects malformed triplet", "[input][check_triplet]") db.available_triplets.push_back(TripletFile{"invalid.triplet_name", "invalid.triplet_name.cmake"}); auto maybe_check = check_triplet("invalid.triplet_name", db); REQUIRE(!maybe_check.has_value()); - static constexpr StringLiteral expected_error{ - "error: expected the end of input parsing a package spec; this usually means the indicated character is not " - "allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hypens."}; - REQUIRE(maybe_check.error() == expected_error); + REQUIRE(!maybe_check.has_value()); + REQUIRE(maybe_check.error().data() == + R"(error: Invalid triplet name. Triplet names are all lowercase alphanumeric+hyphens. + on expression: invalid.triplet_name + ^ +Built-in Triplets: +Community Triplets: +Overlay Triplets from "invalid.triplet_name.cmake": + invalid.triplet_name +See https://learn.microsoft.com/vcpkg/users/triplets?WT.mc_id=vcpkg_inproduct_cli for more information. +)"); } TEST_CASE ("check_and_get_package_spec validates the triplet", "[input][check_and_get_package_spec]") @@ -153,7 +160,7 @@ TEST_CASE ("check_and_get_package_spec forbids malformed", "[input][check_and_ge REQUIRE( maybe_spec.error() == LocalizedString::from_raw( - R"(error: expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hypens. + R"(error: expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hyphens. on expression: zlib:x86-windows# ^)")); } @@ -222,7 +229,7 @@ TEST_CASE ("check_and_get_full_package_spec forbids malformed", "[input][check_a REQUIRE( maybe_spec.error() == LocalizedString::from_raw( - R"(error: expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hypens. + R"(error: expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hyphens. on expression: zlib[core]:x86-windows# ^)")); } diff --git a/src/vcpkg-test/manifests.cpp b/src/vcpkg-test/manifests.cpp index b144968e52..bbb20e0712 100644 --- a/src/vcpkg-test/manifests.cpp +++ b/src/vcpkg-test/manifests.cpp @@ -1419,7 +1419,7 @@ 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 " + + "names must be lowercase alphanumeric+hyphens and not reserved (see " + docs::manifests_url + " for more information)."); } @@ -1432,7 +1432,7 @@ 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 " + + "Feature names must be lowercase alphanumeric+hyphens and not reserved (see " + docs::manifests_url + " for more information)."); } @@ -1445,7 +1445,7 @@ 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 " + + "names must be lowercase alphanumeric+hyphens and not reserved (see " + docs::manifests_url + " for more information)."); } @@ -1458,7 +1458,7 @@ 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 " + + "Package names must be lowercase alphanumeric+hyphens and not reserved (see " + docs::manifests_url + " for more information)."); } @@ -1545,7 +1545,7 @@ 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 " + + "Feature names must be lowercase alphanumeric+hyphens and not reserved (see " + docs::manifests_url + " for more information)."); } @@ -1563,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 " + + "name. Feature names must be lowercase alphanumeric+hyphens and not reserved (see " + docs::manifests_url + " for more information)."); } diff --git a/src/vcpkg-test/specifier.cpp b/src/vcpkg-test/specifier.cpp index 4cf01825b3..9db6f1fa5e 100644 --- a/src/vcpkg-test/specifier.cpp +++ b/src/vcpkg-test/specifier.cpp @@ -98,7 +98,7 @@ TEST_CASE ("specifier parsing", "[specifier]") REQUIRE( s.error() == LocalizedString::from_raw( - R"(error: expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hypens. + R"(error: expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hyphens. on expression: zlib:x86-uwp: ^)")); } @@ -119,7 +119,7 @@ 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 )" + + 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+hyphens and not reserved (see )" + docs::vcpkg_json_ref_name + R"( for more information). on expression: zlib# ^)")); @@ -139,7 +139,7 @@ TEST_CASE ("specifier parsing", "[specifier]") REQUIRE( s.error() == LocalizedString::from_raw( - R"(error: expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hypens. + R"(error: expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hyphens. on expression: zlib# ^)")); } @@ -158,7 +158,7 @@ TEST_CASE ("specifier parsing", "[specifier]") REQUIRE( s.error() == LocalizedString::from_raw( - R"(error: expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hypens. + R"(error: expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hyphens. on expression: zlib:x86-uwp: ^)")); } @@ -196,7 +196,7 @@ TEST_CASE ("specifier parsing", "[specifier]") REQUIRE( s.error() == LocalizedString::from_raw( - R"(error: expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hypens. + R"(error: expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hyphens. on expression: zlib(windows)[co, re] ^)")); } @@ -215,7 +215,7 @@ TEST_CASE ("specifier parsing", "[specifier]") REQUIRE( s.error() == LocalizedString::from_raw( - R"(error: expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hypens. + R"(error: expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hyphens. on expression: zlib:x86-uwp (windows)[co, re] ^)")); } @@ -238,7 +238,7 @@ TEST_CASE ("specifier parsing", "[specifier]") REQUIRE( s.error() == LocalizedString::from_raw( - R"(error: expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hypens. + R"(error: expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hyphens. on expression: zlib:x64-windows[no-ending-square-bracket ^)")); } @@ -257,7 +257,7 @@ TEST_CASE ("specifier parsing", "[specifier]") REQUIRE( s.error() == LocalizedString::from_raw( - R"(error: expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hypens. + R"(error: expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hyphens. on expression: zlib:x64-windows[feature]suffix ^)")); } diff --git a/src/vcpkg/base/parse.cpp b/src/vcpkg/base/parse.cpp index a4d997ba4b..7f9b5e2293 100644 --- a/src/vcpkg/base/parse.cpp +++ b/src/vcpkg/base/parse.cpp @@ -22,11 +22,13 @@ namespace vcpkg } } - static void append_caret_line(LocalizedString& res, const SourceLoc& loc) + void append_caret_line(LocalizedString& res, + const Unicode::Utf8Decoder& cursor, + const Unicode::Utf8Decoder& start_of_line) { - auto line_end = Util::find_if(loc.it, ParserBase::is_lineend); + auto line_end = Util::find_if(cursor, ParserBase::is_lineend); StringView line = StringView{ - loc.start_of_line.pointer_to_current(), + start_of_line.pointer_to_current(), line_end.pointer_to_current(), }; @@ -41,8 +43,8 @@ namespace vcpkg std::string caret_string; caret_string.append(line_prefix_space, ' '); - // note *it is excluded because it is where the ^ goes - for (auto it = loc.start_of_line; it != loc.it; ++it) + // note *cursor is excluded because it is where the ^ goes + for (auto it = start_of_line; it != cursor; ++it) { if (*it == '\t') caret_string.push_back('\t'); @@ -57,6 +59,11 @@ namespace vcpkg res.append_indent().append_raw(caret_string); } + static void append_caret_line(LocalizedString& res, const SourceLoc& loc) + { + append_caret_line(res, loc.it, loc.start_of_line); + } + LocalizedString ParseMessage::format(StringView origin, MessageKind kind) const { LocalizedString res; diff --git a/src/vcpkg/input.cpp b/src/vcpkg/input.cpp index a8e85255c2..7345223884 100644 --- a/src/vcpkg/input.cpp +++ b/src/vcpkg/input.cpp @@ -24,17 +24,22 @@ namespace vcpkg [[nodiscard]] ExpectedL check_triplet(StringView name, const TripletDatabase& database) { - // Intentionally show the lowercased string - auto as_lower = Strings::ascii_to_lowercase(name); - - if (std::find_if_not(name.begin(), name.end(), ParserBase::is_package_name_char) != name.end()) + Unicode::Utf8Decoder start_of_line{name}; + for (auto cursor = start_of_line; !cursor.is_eof(); ++cursor) { - return msg::format_error(msgParseQualifiedSpecifierNotEof); + if (!ParserBase::is_package_name_char(*cursor)) + { + auto result = msg::format_error(msgParseTripletNotEof).append_raw('\n'); + append_caret_line(result, cursor, start_of_line); + result.append_raw('\n'); + append_help_topic_valid_triplet(result, database); + return result; + } } - if (!database.is_valid_triplet_canonical_name(as_lower)) + if (!database.is_valid_triplet_canonical_name(name)) { - LocalizedString result = msg::format_error(msgInvalidTriplet, msg::triplet = as_lower); + LocalizedString result = msg::format_error(msgInvalidTriplet, msg::triplet = name); result.append_raw('\n'); append_help_topic_valid_triplet(result, database); return result; From ab8988503c7cffabfd440b243a383c0a352a023d Mon Sep 17 00:00:00 2001 From: Billy O'Neal Date: Mon, 30 Sep 2024 12:55:55 -0700 Subject: [PATCH 21/39] x-add-version: Check that port-version is the next integer (#1495) --- .../default-baseline-2/vcpkg.json | 8 - ...id-inclusions-when-HAVE_-is-set-to-0.patch | 53 +++++ .../old-ports/zlib-1.2.11-8/CONTROL | 5 + .../old-ports/zlib-1.2.11-8/LICENSE | 20 ++ .../add_debug_postfix_on_mingw.patch | 13 + .../cmake_dont_build_more_than_needed.patch | 74 ++++++ .../old-ports/zlib-1.2.11-8/portfile.cmake | 54 +++++ .../old-ports/zlib-1.2.11-8/usage | 4 + ...id-inclusions-when-HAVE_-is-set-to-0.patch | 53 +++++ .../old-ports/zlib-1.2.11-9/CONTROL | 5 + .../old-ports/zlib-1.2.11-9/LICENSE | 20 ++ .../add_debug_postfix_on_mingw.patch | 13 + .../cmake_dont_build_more_than_needed.patch | 74 ++++++ .../old-ports/zlib-1.2.11-9/portfile.cmake | 54 +++++ .../old-ports/zlib-1.2.11-9/usage | 4 + .../cat/portfile.cmake | 0 .../cat/vcpkg.json | 0 .../dog/portfile.cmake | 0 .../dog/vcpkg.json | 0 .../duck/portfile.cmake | 0 .../duck/vcpkg.json | 0 .../ferret/portfile.cmake | 0 .../ferret/vcpkg.json | 0 .../fish/portfile.cmake | 0 .../fish/vcpkg.json | 0 .../mouse/portfile.cmake | 0 .../mouse/vcpkg.json | 0 .../baseline.json | 0 .../c-/cat.json | 0 .../d-/dog.json | 0 .../f-/fish.json | 0 .../m-/mouse.json | 0 .../versions/z-/zlib.json | 0 .../end-to-end-tests-dir/versions.ps1 | 142 ++++++++--- azure-pipelines/end-to-end-tests-prelude.ps1 | 27 ++- include/vcpkg/base/json.h | 1 - include/vcpkg/base/message-data.inc.h | 13 + locales/messages.json | 4 + src/vcpkg/base/json.cpp | 16 +- src/vcpkg/commands.add-version.cpp | 223 +++++++++++++----- src/vcpkg/vcpkgpaths.cpp | 22 +- 41 files changed, 760 insertions(+), 142 deletions(-) delete mode 100644 azure-pipelines/e2e-ports/version-files/default-baseline-2/vcpkg.json create mode 100644 azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-8/0001-Prevent-invalid-inclusions-when-HAVE_-is-set-to-0.patch create mode 100644 azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-8/CONTROL create mode 100644 azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-8/LICENSE create mode 100644 azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-8/add_debug_postfix_on_mingw.patch create mode 100644 azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-8/cmake_dont_build_more_than_needed.patch create mode 100644 azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-8/portfile.cmake create mode 100644 azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-8/usage create mode 100644 azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-9/0001-Prevent-invalid-inclusions-when-HAVE_-is-set-to-0.patch create mode 100644 azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-9/CONTROL create mode 100644 azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-9/LICENSE create mode 100644 azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-9/add_debug_postfix_on_mingw.patch create mode 100644 azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-9/cmake_dont_build_more_than_needed.patch create mode 100644 azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-9/portfile.cmake create mode 100644 azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-9/usage rename azure-pipelines/e2e-ports/version-files/{ports_incomplete => ports-incomplete}/cat/portfile.cmake (100%) rename azure-pipelines/e2e-ports/version-files/{ports_incomplete => ports-incomplete}/cat/vcpkg.json (100%) rename azure-pipelines/e2e-ports/version-files/{ports_incomplete => ports-incomplete}/dog/portfile.cmake (100%) rename azure-pipelines/e2e-ports/version-files/{ports_incomplete => ports-incomplete}/dog/vcpkg.json (100%) rename azure-pipelines/e2e-ports/version-files/{ports_incomplete => ports-incomplete}/duck/portfile.cmake (100%) rename azure-pipelines/e2e-ports/version-files/{ports_incomplete => ports-incomplete}/duck/vcpkg.json (100%) rename azure-pipelines/e2e-ports/version-files/{ports_incomplete => ports-incomplete}/ferret/portfile.cmake (100%) rename azure-pipelines/e2e-ports/version-files/{ports_incomplete => ports-incomplete}/ferret/vcpkg.json (100%) rename azure-pipelines/e2e-ports/version-files/{ports_incomplete => ports-incomplete}/fish/portfile.cmake (100%) rename azure-pipelines/e2e-ports/version-files/{ports_incomplete => ports-incomplete}/fish/vcpkg.json (100%) rename azure-pipelines/e2e-ports/version-files/{ports_incomplete => ports-incomplete}/mouse/portfile.cmake (100%) rename azure-pipelines/e2e-ports/version-files/{ports_incomplete => ports-incomplete}/mouse/vcpkg.json (100%) rename azure-pipelines/e2e-ports/version-files/{versions_incomplete => versions-incomplete}/baseline.json (100%) rename azure-pipelines/e2e-ports/version-files/{versions_incomplete => versions-incomplete}/c-/cat.json (100%) rename azure-pipelines/e2e-ports/version-files/{versions_incomplete => versions-incomplete}/d-/dog.json (100%) rename azure-pipelines/e2e-ports/version-files/{versions_incomplete => versions-incomplete}/f-/fish.json (100%) rename azure-pipelines/e2e-ports/version-files/{versions_incomplete => versions-incomplete}/m-/mouse.json (100%) rename azure-pipelines/e2e-ports/version-files/{default-baseline-2 => }/versions/z-/zlib.json (100%) diff --git a/azure-pipelines/e2e-ports/version-files/default-baseline-2/vcpkg.json b/azure-pipelines/e2e-ports/version-files/default-baseline-2/vcpkg.json deleted file mode 100644 index 0af3134646..0000000000 --- a/azure-pipelines/e2e-ports/version-files/default-baseline-2/vcpkg.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "default-baseline-test-2", - "version-string": "0", - "builtin-baseline": "d5cd6b8c74ee548cfc9ff83cefdac4843cc1503f", - "dependencies": [ - "zlib" - ] -} diff --git a/azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-8/0001-Prevent-invalid-inclusions-when-HAVE_-is-set-to-0.patch b/azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-8/0001-Prevent-invalid-inclusions-when-HAVE_-is-set-to-0.patch new file mode 100644 index 0000000000..8fe2b2f5a6 --- /dev/null +++ b/azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-8/0001-Prevent-invalid-inclusions-when-HAVE_-is-set-to-0.patch @@ -0,0 +1,53 @@ +diff --git a/zconf.h.cmakein b/zconf.h.cmakein +index a7f24cc..a1b359b 100644 +--- a/zconf.h.cmakein ++++ b/zconf.h.cmakein +@@ -434,11 +434,19 @@ typedef uLong FAR uLongf; + #endif + + #ifdef HAVE_UNISTD_H /* may be set to #if 1 by ./configure */ +-# define Z_HAVE_UNISTD_H ++# if ~(~HAVE_UNISTD_H + 0) == 0 && ~(~HAVE_UNISTD_H + 1) == 1 ++# define Z_HAVE_UNISTD_H ++# elif HAVE_UNISTD_H != 0 ++# define Z_HAVE_UNISTD_H ++# endif + #endif + + #ifdef HAVE_STDARG_H /* may be set to #if 1 by ./configure */ +-# define Z_HAVE_STDARG_H ++# if ~(~HAVE_STDARG_H + 0) == 0 && ~(~HAVE_STDARG_H + 1) == 1 ++# define Z_HAVE_STDARG_H ++# elif HAVE_STDARG_H != 0 ++# define Z_HAVE_STDARG_H ++# endif + #endif + + #ifdef STDC +diff --git a/zconf.h.in b/zconf.h.in +index 5e1d68a..32f53c8 100644 +--- a/zconf.h.in ++++ b/zconf.h.in +@@ -432,11 +432,19 @@ typedef uLong FAR uLongf; + #endif + + #ifdef HAVE_UNISTD_H /* may be set to #if 1 by ./configure */ +-# define Z_HAVE_UNISTD_H ++# if ~(~HAVE_UNISTD_H + 0) == 0 && ~(~HAVE_UNISTD_H + 1) == 1 ++# define Z_HAVE_UNISTD_H ++# elif HAVE_UNISTD_H != 0 ++# define Z_HAVE_UNISTD_H ++# endif + #endif + + #ifdef HAVE_STDARG_H /* may be set to #if 1 by ./configure */ +-# define Z_HAVE_STDARG_H ++# if ~(~HAVE_STDARG_H + 0) == 0 && ~(~HAVE_STDARG_H + 1) == 1 ++# define Z_HAVE_STDARG_H ++# elif HAVE_STDARG_H != 0 ++# define Z_HAVE_STDARG_H ++# endif + #endif + + #ifdef STDC + diff --git a/azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-8/CONTROL b/azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-8/CONTROL new file mode 100644 index 0000000000..3196577b55 --- /dev/null +++ b/azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-8/CONTROL @@ -0,0 +1,5 @@ +Source: zlib +Version: 1.2.11 +Port-Version: 8 +Homepage: https://www.zlib.net/ +Description: A compression library diff --git a/azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-8/LICENSE b/azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-8/LICENSE new file mode 100644 index 0000000000..ca5fddfe0d --- /dev/null +++ b/azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-8/LICENSE @@ -0,0 +1,20 @@ + Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + Jean-loup Gailly Mark Adler + jloup@gzip.org madler@alumni.caltech.edu \ No newline at end of file diff --git a/azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-8/add_debug_postfix_on_mingw.patch b/azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-8/add_debug_postfix_on_mingw.patch new file mode 100644 index 0000000000..22172ccfca --- /dev/null +++ b/azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-8/add_debug_postfix_on_mingw.patch @@ -0,0 +1,13 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 0fe939d..e4fc213 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -59,7 +59,7 @@ endif() + # + check_include_file(unistd.h Z_HAVE_UNISTD_H) + +-if(MSVC) ++if(WIN32) + set(CMAKE_DEBUG_POSTFIX "d") + add_definitions(-D_CRT_SECURE_NO_DEPRECATE) + add_definitions(-D_CRT_NONSTDC_NO_DEPRECATE) diff --git a/azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-8/cmake_dont_build_more_than_needed.patch b/azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-8/cmake_dont_build_more_than_needed.patch new file mode 100644 index 0000000000..a374f76d62 --- /dev/null +++ b/azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-8/cmake_dont_build_more_than_needed.patch @@ -0,0 +1,74 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 0fe939d..a1291d5 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -7,6 +7,7 @@ set(VERSION "1.2.11") + + option(ASM686 "Enable building i686 assembly implementation") + option(AMD64 "Enable building amd64 assembly implementation") ++option(SKIP_BUILD_EXAMPLES "Skip build of the examples" OFF) + + set(INSTALL_BIN_DIR "${CMAKE_INSTALL_PREFIX}/bin" CACHE PATH "Installation directory for executables") + set(INSTALL_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib" CACHE PATH "Installation directory for libraries") +@@ -124,9 +125,11 @@ set(ZLIB_SRCS + ) + + if(NOT MINGW) +- set(ZLIB_DLL_SRCS +- win32/zlib1.rc # If present will override custom build rule below. +- ) ++ if(BUILD_SHARED_LIBS) ++ set(ZLIB_DLL_SRCS ++ win32/zlib1.rc # If present will override custom build rule below. ++ ) ++ endif() + endif() + + if(CMAKE_COMPILER_IS_GNUCC) +@@ -180,11 +183,12 @@ if(MINGW) + -I ${CMAKE_CURRENT_BINARY_DIR} + -o ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj + -i ${CMAKE_CURRENT_SOURCE_DIR}/win32/zlib1.rc) +- set(ZLIB_DLL_SRCS ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj) ++ if(BUILD_SHARED_LIBS) ++ set(ZLIB_DLL_SRCS ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj) ++ endif() + endif(MINGW) + +-add_library(zlib SHARED ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_DLL_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS}) +-add_library(zlibstatic STATIC ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS}) ++add_library(zlib ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_DLL_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS}) + set_target_properties(zlib PROPERTIES DEFINE_SYMBOL ZLIB_DLL) + set_target_properties(zlib PROPERTIES SOVERSION 1) + +@@ -201,7 +205,7 @@ endif() + + if(UNIX) + # On unix-like platforms the library is almost always called libz +- set_target_properties(zlib zlibstatic PROPERTIES OUTPUT_NAME z) ++ set_target_properties(zlib PROPERTIES OUTPUT_NAME z) + if(NOT APPLE) + set_target_properties(zlib PROPERTIES LINK_FLAGS "-Wl,--version-script,\"${CMAKE_CURRENT_SOURCE_DIR}/zlib.map\"") + endif() +@@ -211,7 +215,7 @@ elseif(BUILD_SHARED_LIBS AND WIN32) + endif() + + if(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL ) +- install(TARGETS zlib zlibstatic ++ install(TARGETS zlib + RUNTIME DESTINATION "${INSTALL_BIN_DIR}" + ARCHIVE DESTINATION "${INSTALL_LIB_DIR}" + LIBRARY DESTINATION "${INSTALL_LIB_DIR}" ) +@@ -230,6 +234,7 @@ endif() + # Example binaries + #============================================================================ + ++if (NOT SKIP_BUILD_EXAMPLES) + add_executable(example test/example.c) + target_link_libraries(example zlib) + add_test(example example) +@@ -247,3 +252,4 @@ if(HAVE_OFF64_T) + target_link_libraries(minigzip64 zlib) + set_target_properties(minigzip64 PROPERTIES COMPILE_FLAGS "-D_FILE_OFFSET_BITS=64") + endif() ++endif() diff --git a/azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-8/portfile.cmake b/azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-8/portfile.cmake new file mode 100644 index 0000000000..0d63291a28 --- /dev/null +++ b/azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-8/portfile.cmake @@ -0,0 +1,54 @@ +set(VERSION 1.2.11) + +vcpkg_download_distfile(ARCHIVE_FILE + URLS "http://www.zlib.net/zlib-${VERSION}.tar.gz" "https://downloads.sourceforge.net/project/libpng/zlib/${VERSION}/zlib-${VERSION}.tar.gz" + FILENAME "zlib1211.tar.gz" + SHA512 73fd3fff4adeccd4894084c15ddac89890cd10ef105dd5e1835e1e9bbb6a49ff229713bd197d203edfa17c2727700fce65a2a235f07568212d820dca88b528ae +) + +vcpkg_extract_source_archive_ex( + OUT_SOURCE_PATH SOURCE_PATH + ARCHIVE ${ARCHIVE_FILE} + REF ${VERSION} + PATCHES + "cmake_dont_build_more_than_needed.patch" + "0001-Prevent-invalid-inclusions-when-HAVE_-is-set-to-0.patch" + "add_debug_postfix_on_mingw.patch" +) + +# This is generated during the cmake build +file(REMOVE ${SOURCE_PATH}/zconf.h) + +vcpkg_configure_cmake( + SOURCE_PATH ${SOURCE_PATH} + PREFER_NINJA + OPTIONS + -DSKIP_INSTALL_FILES=ON + -DSKIP_BUILD_EXAMPLES=ON + OPTIONS_DEBUG + -DSKIP_INSTALL_HEADERS=ON +) + +vcpkg_install_cmake() + +# Install the pkgconfig file +if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release") + if(VCPKG_TARGET_IS_WINDOWS) + vcpkg_replace_string(${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/zlib.pc "-lz" "-lzlib") + endif() + file(COPY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/zlib.pc DESTINATION ${CURRENT_PACKAGES_DIR}/lib/pkgconfig) +endif() +if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug") + if(VCPKG_TARGET_IS_WINDOWS) + vcpkg_replace_string(${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/zlib.pc "-lz" "-lzlibd") + endif() + file(COPY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/zlib.pc DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig) +endif() + +vcpkg_fixup_pkgconfig() + +file(INSTALL ${CMAKE_CURRENT_LIST_DIR}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright) + +vcpkg_copy_pdbs() + +file(COPY ${CMAKE_CURRENT_LIST_DIR}/usage DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT}) diff --git a/azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-8/usage b/azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-8/usage new file mode 100644 index 0000000000..0dfed74930 --- /dev/null +++ b/azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-8/usage @@ -0,0 +1,4 @@ +The package zlib is compatible with built-in CMake targets: + + find_package(ZLIB REQUIRED) + target_link_libraries(main PRIVATE ZLIB::ZLIB) diff --git a/azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-9/0001-Prevent-invalid-inclusions-when-HAVE_-is-set-to-0.patch b/azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-9/0001-Prevent-invalid-inclusions-when-HAVE_-is-set-to-0.patch new file mode 100644 index 0000000000..8fe2b2f5a6 --- /dev/null +++ b/azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-9/0001-Prevent-invalid-inclusions-when-HAVE_-is-set-to-0.patch @@ -0,0 +1,53 @@ +diff --git a/zconf.h.cmakein b/zconf.h.cmakein +index a7f24cc..a1b359b 100644 +--- a/zconf.h.cmakein ++++ b/zconf.h.cmakein +@@ -434,11 +434,19 @@ typedef uLong FAR uLongf; + #endif + + #ifdef HAVE_UNISTD_H /* may be set to #if 1 by ./configure */ +-# define Z_HAVE_UNISTD_H ++# if ~(~HAVE_UNISTD_H + 0) == 0 && ~(~HAVE_UNISTD_H + 1) == 1 ++# define Z_HAVE_UNISTD_H ++# elif HAVE_UNISTD_H != 0 ++# define Z_HAVE_UNISTD_H ++# endif + #endif + + #ifdef HAVE_STDARG_H /* may be set to #if 1 by ./configure */ +-# define Z_HAVE_STDARG_H ++# if ~(~HAVE_STDARG_H + 0) == 0 && ~(~HAVE_STDARG_H + 1) == 1 ++# define Z_HAVE_STDARG_H ++# elif HAVE_STDARG_H != 0 ++# define Z_HAVE_STDARG_H ++# endif + #endif + + #ifdef STDC +diff --git a/zconf.h.in b/zconf.h.in +index 5e1d68a..32f53c8 100644 +--- a/zconf.h.in ++++ b/zconf.h.in +@@ -432,11 +432,19 @@ typedef uLong FAR uLongf; + #endif + + #ifdef HAVE_UNISTD_H /* may be set to #if 1 by ./configure */ +-# define Z_HAVE_UNISTD_H ++# if ~(~HAVE_UNISTD_H + 0) == 0 && ~(~HAVE_UNISTD_H + 1) == 1 ++# define Z_HAVE_UNISTD_H ++# elif HAVE_UNISTD_H != 0 ++# define Z_HAVE_UNISTD_H ++# endif + #endif + + #ifdef HAVE_STDARG_H /* may be set to #if 1 by ./configure */ +-# define Z_HAVE_STDARG_H ++# if ~(~HAVE_STDARG_H + 0) == 0 && ~(~HAVE_STDARG_H + 1) == 1 ++# define Z_HAVE_STDARG_H ++# elif HAVE_STDARG_H != 0 ++# define Z_HAVE_STDARG_H ++# endif + #endif + + #ifdef STDC + diff --git a/azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-9/CONTROL b/azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-9/CONTROL new file mode 100644 index 0000000000..3196577b55 --- /dev/null +++ b/azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-9/CONTROL @@ -0,0 +1,5 @@ +Source: zlib +Version: 1.2.11 +Port-Version: 8 +Homepage: https://www.zlib.net/ +Description: A compression library diff --git a/azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-9/LICENSE b/azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-9/LICENSE new file mode 100644 index 0000000000..ca5fddfe0d --- /dev/null +++ b/azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-9/LICENSE @@ -0,0 +1,20 @@ + Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + Jean-loup Gailly Mark Adler + jloup@gzip.org madler@alumni.caltech.edu \ No newline at end of file diff --git a/azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-9/add_debug_postfix_on_mingw.patch b/azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-9/add_debug_postfix_on_mingw.patch new file mode 100644 index 0000000000..22172ccfca --- /dev/null +++ b/azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-9/add_debug_postfix_on_mingw.patch @@ -0,0 +1,13 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 0fe939d..e4fc213 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -59,7 +59,7 @@ endif() + # + check_include_file(unistd.h Z_HAVE_UNISTD_H) + +-if(MSVC) ++if(WIN32) + set(CMAKE_DEBUG_POSTFIX "d") + add_definitions(-D_CRT_SECURE_NO_DEPRECATE) + add_definitions(-D_CRT_NONSTDC_NO_DEPRECATE) diff --git a/azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-9/cmake_dont_build_more_than_needed.patch b/azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-9/cmake_dont_build_more_than_needed.patch new file mode 100644 index 0000000000..a374f76d62 --- /dev/null +++ b/azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-9/cmake_dont_build_more_than_needed.patch @@ -0,0 +1,74 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 0fe939d..a1291d5 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -7,6 +7,7 @@ set(VERSION "1.2.11") + + option(ASM686 "Enable building i686 assembly implementation") + option(AMD64 "Enable building amd64 assembly implementation") ++option(SKIP_BUILD_EXAMPLES "Skip build of the examples" OFF) + + set(INSTALL_BIN_DIR "${CMAKE_INSTALL_PREFIX}/bin" CACHE PATH "Installation directory for executables") + set(INSTALL_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib" CACHE PATH "Installation directory for libraries") +@@ -124,9 +125,11 @@ set(ZLIB_SRCS + ) + + if(NOT MINGW) +- set(ZLIB_DLL_SRCS +- win32/zlib1.rc # If present will override custom build rule below. +- ) ++ if(BUILD_SHARED_LIBS) ++ set(ZLIB_DLL_SRCS ++ win32/zlib1.rc # If present will override custom build rule below. ++ ) ++ endif() + endif() + + if(CMAKE_COMPILER_IS_GNUCC) +@@ -180,11 +183,12 @@ if(MINGW) + -I ${CMAKE_CURRENT_BINARY_DIR} + -o ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj + -i ${CMAKE_CURRENT_SOURCE_DIR}/win32/zlib1.rc) +- set(ZLIB_DLL_SRCS ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj) ++ if(BUILD_SHARED_LIBS) ++ set(ZLIB_DLL_SRCS ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj) ++ endif() + endif(MINGW) + +-add_library(zlib SHARED ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_DLL_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS}) +-add_library(zlibstatic STATIC ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS}) ++add_library(zlib ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_DLL_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS}) + set_target_properties(zlib PROPERTIES DEFINE_SYMBOL ZLIB_DLL) + set_target_properties(zlib PROPERTIES SOVERSION 1) + +@@ -201,7 +205,7 @@ endif() + + if(UNIX) + # On unix-like platforms the library is almost always called libz +- set_target_properties(zlib zlibstatic PROPERTIES OUTPUT_NAME z) ++ set_target_properties(zlib PROPERTIES OUTPUT_NAME z) + if(NOT APPLE) + set_target_properties(zlib PROPERTIES LINK_FLAGS "-Wl,--version-script,\"${CMAKE_CURRENT_SOURCE_DIR}/zlib.map\"") + endif() +@@ -211,7 +215,7 @@ elseif(BUILD_SHARED_LIBS AND WIN32) + endif() + + if(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL ) +- install(TARGETS zlib zlibstatic ++ install(TARGETS zlib + RUNTIME DESTINATION "${INSTALL_BIN_DIR}" + ARCHIVE DESTINATION "${INSTALL_LIB_DIR}" + LIBRARY DESTINATION "${INSTALL_LIB_DIR}" ) +@@ -230,6 +234,7 @@ endif() + # Example binaries + #============================================================================ + ++if (NOT SKIP_BUILD_EXAMPLES) + add_executable(example test/example.c) + target_link_libraries(example zlib) + add_test(example example) +@@ -247,3 +252,4 @@ if(HAVE_OFF64_T) + target_link_libraries(minigzip64 zlib) + set_target_properties(minigzip64 PROPERTIES COMPILE_FLAGS "-D_FILE_OFFSET_BITS=64") + endif() ++endif() diff --git a/azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-9/portfile.cmake b/azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-9/portfile.cmake new file mode 100644 index 0000000000..0d63291a28 --- /dev/null +++ b/azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-9/portfile.cmake @@ -0,0 +1,54 @@ +set(VERSION 1.2.11) + +vcpkg_download_distfile(ARCHIVE_FILE + URLS "http://www.zlib.net/zlib-${VERSION}.tar.gz" "https://downloads.sourceforge.net/project/libpng/zlib/${VERSION}/zlib-${VERSION}.tar.gz" + FILENAME "zlib1211.tar.gz" + SHA512 73fd3fff4adeccd4894084c15ddac89890cd10ef105dd5e1835e1e9bbb6a49ff229713bd197d203edfa17c2727700fce65a2a235f07568212d820dca88b528ae +) + +vcpkg_extract_source_archive_ex( + OUT_SOURCE_PATH SOURCE_PATH + ARCHIVE ${ARCHIVE_FILE} + REF ${VERSION} + PATCHES + "cmake_dont_build_more_than_needed.patch" + "0001-Prevent-invalid-inclusions-when-HAVE_-is-set-to-0.patch" + "add_debug_postfix_on_mingw.patch" +) + +# This is generated during the cmake build +file(REMOVE ${SOURCE_PATH}/zconf.h) + +vcpkg_configure_cmake( + SOURCE_PATH ${SOURCE_PATH} + PREFER_NINJA + OPTIONS + -DSKIP_INSTALL_FILES=ON + -DSKIP_BUILD_EXAMPLES=ON + OPTIONS_DEBUG + -DSKIP_INSTALL_HEADERS=ON +) + +vcpkg_install_cmake() + +# Install the pkgconfig file +if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release") + if(VCPKG_TARGET_IS_WINDOWS) + vcpkg_replace_string(${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/zlib.pc "-lz" "-lzlib") + endif() + file(COPY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/zlib.pc DESTINATION ${CURRENT_PACKAGES_DIR}/lib/pkgconfig) +endif() +if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug") + if(VCPKG_TARGET_IS_WINDOWS) + vcpkg_replace_string(${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/zlib.pc "-lz" "-lzlibd") + endif() + file(COPY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/zlib.pc DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig) +endif() + +vcpkg_fixup_pkgconfig() + +file(INSTALL ${CMAKE_CURRENT_LIST_DIR}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright) + +vcpkg_copy_pdbs() + +file(COPY ${CMAKE_CURRENT_LIST_DIR}/usage DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT}) diff --git a/azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-9/usage b/azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-9/usage new file mode 100644 index 0000000000..0dfed74930 --- /dev/null +++ b/azure-pipelines/e2e-ports/version-files/old-ports/zlib-1.2.11-9/usage @@ -0,0 +1,4 @@ +The package zlib is compatible with built-in CMake targets: + + find_package(ZLIB REQUIRED) + target_link_libraries(main PRIVATE ZLIB::ZLIB) diff --git a/azure-pipelines/e2e-ports/version-files/ports_incomplete/cat/portfile.cmake b/azure-pipelines/e2e-ports/version-files/ports-incomplete/cat/portfile.cmake similarity index 100% rename from azure-pipelines/e2e-ports/version-files/ports_incomplete/cat/portfile.cmake rename to azure-pipelines/e2e-ports/version-files/ports-incomplete/cat/portfile.cmake diff --git a/azure-pipelines/e2e-ports/version-files/ports_incomplete/cat/vcpkg.json b/azure-pipelines/e2e-ports/version-files/ports-incomplete/cat/vcpkg.json similarity index 100% rename from azure-pipelines/e2e-ports/version-files/ports_incomplete/cat/vcpkg.json rename to azure-pipelines/e2e-ports/version-files/ports-incomplete/cat/vcpkg.json diff --git a/azure-pipelines/e2e-ports/version-files/ports_incomplete/dog/portfile.cmake b/azure-pipelines/e2e-ports/version-files/ports-incomplete/dog/portfile.cmake similarity index 100% rename from azure-pipelines/e2e-ports/version-files/ports_incomplete/dog/portfile.cmake rename to azure-pipelines/e2e-ports/version-files/ports-incomplete/dog/portfile.cmake diff --git a/azure-pipelines/e2e-ports/version-files/ports_incomplete/dog/vcpkg.json b/azure-pipelines/e2e-ports/version-files/ports-incomplete/dog/vcpkg.json similarity index 100% rename from azure-pipelines/e2e-ports/version-files/ports_incomplete/dog/vcpkg.json rename to azure-pipelines/e2e-ports/version-files/ports-incomplete/dog/vcpkg.json diff --git a/azure-pipelines/e2e-ports/version-files/ports_incomplete/duck/portfile.cmake b/azure-pipelines/e2e-ports/version-files/ports-incomplete/duck/portfile.cmake similarity index 100% rename from azure-pipelines/e2e-ports/version-files/ports_incomplete/duck/portfile.cmake rename to azure-pipelines/e2e-ports/version-files/ports-incomplete/duck/portfile.cmake diff --git a/azure-pipelines/e2e-ports/version-files/ports_incomplete/duck/vcpkg.json b/azure-pipelines/e2e-ports/version-files/ports-incomplete/duck/vcpkg.json similarity index 100% rename from azure-pipelines/e2e-ports/version-files/ports_incomplete/duck/vcpkg.json rename to azure-pipelines/e2e-ports/version-files/ports-incomplete/duck/vcpkg.json diff --git a/azure-pipelines/e2e-ports/version-files/ports_incomplete/ferret/portfile.cmake b/azure-pipelines/e2e-ports/version-files/ports-incomplete/ferret/portfile.cmake similarity index 100% rename from azure-pipelines/e2e-ports/version-files/ports_incomplete/ferret/portfile.cmake rename to azure-pipelines/e2e-ports/version-files/ports-incomplete/ferret/portfile.cmake diff --git a/azure-pipelines/e2e-ports/version-files/ports_incomplete/ferret/vcpkg.json b/azure-pipelines/e2e-ports/version-files/ports-incomplete/ferret/vcpkg.json similarity index 100% rename from azure-pipelines/e2e-ports/version-files/ports_incomplete/ferret/vcpkg.json rename to azure-pipelines/e2e-ports/version-files/ports-incomplete/ferret/vcpkg.json diff --git a/azure-pipelines/e2e-ports/version-files/ports_incomplete/fish/portfile.cmake b/azure-pipelines/e2e-ports/version-files/ports-incomplete/fish/portfile.cmake similarity index 100% rename from azure-pipelines/e2e-ports/version-files/ports_incomplete/fish/portfile.cmake rename to azure-pipelines/e2e-ports/version-files/ports-incomplete/fish/portfile.cmake diff --git a/azure-pipelines/e2e-ports/version-files/ports_incomplete/fish/vcpkg.json b/azure-pipelines/e2e-ports/version-files/ports-incomplete/fish/vcpkg.json similarity index 100% rename from azure-pipelines/e2e-ports/version-files/ports_incomplete/fish/vcpkg.json rename to azure-pipelines/e2e-ports/version-files/ports-incomplete/fish/vcpkg.json diff --git a/azure-pipelines/e2e-ports/version-files/ports_incomplete/mouse/portfile.cmake b/azure-pipelines/e2e-ports/version-files/ports-incomplete/mouse/portfile.cmake similarity index 100% rename from azure-pipelines/e2e-ports/version-files/ports_incomplete/mouse/portfile.cmake rename to azure-pipelines/e2e-ports/version-files/ports-incomplete/mouse/portfile.cmake diff --git a/azure-pipelines/e2e-ports/version-files/ports_incomplete/mouse/vcpkg.json b/azure-pipelines/e2e-ports/version-files/ports-incomplete/mouse/vcpkg.json similarity index 100% rename from azure-pipelines/e2e-ports/version-files/ports_incomplete/mouse/vcpkg.json rename to azure-pipelines/e2e-ports/version-files/ports-incomplete/mouse/vcpkg.json diff --git a/azure-pipelines/e2e-ports/version-files/versions_incomplete/baseline.json b/azure-pipelines/e2e-ports/version-files/versions-incomplete/baseline.json similarity index 100% rename from azure-pipelines/e2e-ports/version-files/versions_incomplete/baseline.json rename to azure-pipelines/e2e-ports/version-files/versions-incomplete/baseline.json diff --git a/azure-pipelines/e2e-ports/version-files/versions_incomplete/c-/cat.json b/azure-pipelines/e2e-ports/version-files/versions-incomplete/c-/cat.json similarity index 100% rename from azure-pipelines/e2e-ports/version-files/versions_incomplete/c-/cat.json rename to azure-pipelines/e2e-ports/version-files/versions-incomplete/c-/cat.json diff --git a/azure-pipelines/e2e-ports/version-files/versions_incomplete/d-/dog.json b/azure-pipelines/e2e-ports/version-files/versions-incomplete/d-/dog.json similarity index 100% rename from azure-pipelines/e2e-ports/version-files/versions_incomplete/d-/dog.json rename to azure-pipelines/e2e-ports/version-files/versions-incomplete/d-/dog.json diff --git a/azure-pipelines/e2e-ports/version-files/versions_incomplete/f-/fish.json b/azure-pipelines/e2e-ports/version-files/versions-incomplete/f-/fish.json similarity index 100% rename from azure-pipelines/e2e-ports/version-files/versions_incomplete/f-/fish.json rename to azure-pipelines/e2e-ports/version-files/versions-incomplete/f-/fish.json diff --git a/azure-pipelines/e2e-ports/version-files/versions_incomplete/m-/mouse.json b/azure-pipelines/e2e-ports/version-files/versions-incomplete/m-/mouse.json similarity index 100% rename from azure-pipelines/e2e-ports/version-files/versions_incomplete/m-/mouse.json rename to azure-pipelines/e2e-ports/version-files/versions-incomplete/m-/mouse.json diff --git a/azure-pipelines/e2e-ports/version-files/default-baseline-2/versions/z-/zlib.json b/azure-pipelines/e2e-ports/version-files/versions/z-/zlib.json similarity index 100% rename from azure-pipelines/e2e-ports/version-files/default-baseline-2/versions/z-/zlib.json rename to azure-pipelines/e2e-ports/version-files/versions/z-/zlib.json diff --git a/azure-pipelines/end-to-end-tests-dir/versions.ps1 b/azure-pipelines/end-to-end-tests-dir/versions.ps1 index 342fe8eae7..6f4ac057e0 100644 --- a/azure-pipelines/end-to-end-tests-dir/versions.ps1 +++ b/azure-pipelines/end-to-end-tests-dir/versions.ps1 @@ -9,7 +9,6 @@ function Refresh-VersionFiles() { git -C $versionFilesPath @gitConfigOptions init git -C $versionFilesPath @gitConfigOptions add -A git -C $versionFilesPath @gitConfigOptions commit -m testing - git -C $versionFilesPath fetch https://github.com/vicroms/test-registries } Refresh-VersionFiles @@ -23,7 +22,7 @@ Throw-IfFailed # Test verify versions mkdir $VersionFilesRoot | Out-Null -Copy-Item -Recurse "$versionFilesPath/versions_incomplete" $VersionFilesRoot +Copy-Item -Recurse "$versionFilesPath/versions-incomplete" $VersionFilesRoot $portsRedirectArgsOK = @( "--feature-flags=versions", "--x-builtin-ports-root=$versionFilesPath/ports", @@ -31,8 +30,8 @@ $portsRedirectArgsOK = @( ) $portsRedirectArgsIncomplete = @( "--feature-flags=versions", - "--x-builtin-ports-root=$versionFilesPath/ports_incomplete", - "--x-builtin-registry-versions-dir=$VersionFilesRoot/versions_incomplete" + "--x-builtin-ports-root=$versionFilesPath/ports-incomplete", + "--x-builtin-registry-versions-dir=$VersionFilesRoot/versions-incomplete" ) $CurrentTest = "x-verify-ci-versions (All files OK)" Write-Host $CurrentTest @@ -75,10 +74,61 @@ $CurrentTest = "x-add-version mouse" # Missing baseline entry Run-Vcpkg @portsRedirectArgsIncomplete x-add-version mouse Throw-IfFailed + # Validate changes Run-Vcpkg @portsRedirectArgsIncomplete x-ci-verify-versions --verbose Throw-IfFailed +# Validate port-version +$CurrentTest = "x-add-version octopus" +Set-EmptyTestPort -Name octopus -Version 1.0 -PortVersion "1" -PortsRoot "$versionFilesPath/ports" +git -C $versionFilesPath @gitConfigOptions add -A +git -C $versionFilesPath @gitConfigOptions commit -m "add octopus 1.0#1" +$output = Run-VcpkgAndCaptureOutput @portsRedirectArgsOK x-add-version octopus +Throw-IfNotFailed +if ($output.Replace("`r`n", "`n") -notmatch @" +warning: In octopus, 1.0 is completely new version, so the "port-version" field should be removed. Remove "port-version", commit that change, and try again. To skip this check, rerun with --skip-version-format-check . +"@) { + throw "Expected detecting present port-version when a new version is added as bad" +} + +Run-Vcpkg @portsRedirectArgsOK x-add-version octopus --skip-version-format-check +Throw-IfFailed +git -C $versionFilesPath @gitConfigOptions add -A +git -C $versionFilesPath @gitConfigOptions commit -m "add octopus 1.0#1 to version database" + +Set-EmptyTestPort -Name octopus -Version 2.0 -PortVersion "1" -PortsRoot "$versionFilesPath/ports" +git -C $versionFilesPath @gitConfigOptions add -A +git -C $versionFilesPath @gitConfigOptions commit -m "add octopus 2.0#1" +$output = Run-VcpkgAndCaptureOutput @portsRedirectArgsOK x-add-version octopus +Throw-IfNotFailed +if ($output.Replace("`r`n", "`n") -notmatch @" +warning: In octopus, 2.0 is completely new version, so the "port-version" field should be removed. Remove "port-version", commit that change, and try again. To skip this check, rerun with --skip-version-format-check . +"@) { + throw "Expected detecting present port-version when a new version is added as bad" +} + +Run-Vcpkg @portsRedirectArgsOK x-add-version octopus --skip-version-format-check +Throw-IfFailed +git -C $versionFilesPath @gitConfigOptions add -A +git -C $versionFilesPath @gitConfigOptions commit -m "add octopus 2.0#1 to version database" + +Set-EmptyTestPort -Name octopus -Version 2.0 -PortVersion "3" -PortsRoot "$versionFilesPath/ports" +git -C $versionFilesPath @gitConfigOptions add -A +git -C $versionFilesPath @gitConfigOptions commit -m "add octopus 2.0#3" +$output = Run-VcpkgAndCaptureOutput @portsRedirectArgsOK x-add-version octopus +Throw-IfNotFailed +if ($output.Replace("`r`n", "`n") -notmatch @" +warning: In octopus, the current "port-version" for 2.0 is 1, so the next added "port-version" should be 2, but the port declares "port-version" 3. Change "port-version" to 2, commit that change, and try again. To skip this check, rerun with --skip-version-format-check . +"@) { + throw "Expected detecting present port-version when a new version is added as bad" +} + +Run-Vcpkg @portsRedirectArgsOK x-add-version octopus --skip-version-format-check +Throw-IfFailed +git -C $versionFilesPath @gitConfigOptions add -A +git -C $versionFilesPath @gitConfigOptions commit -m "add octopus 2.0#3 to version database" + $CurrentTest = "default baseline" $out = Run-VcpkgAndCaptureOutput @commonArgs "--feature-flags=versions" install --x-manifest-root=$versionFilesPath/default-baseline-1 Throw-IfNotFailed @@ -97,31 +147,63 @@ if (($out -notmatch ".*error: Failed to load port because versions are inconsist throw "Expected to fail due to mismatched versions between portfile and the version database" } -foreach ($opt_registries in @("",",registries")) +Write-Trace "testing baselines" +Copy-Item -Recurse "$versionFilesPath/old-ports/zlib-1.2.11-8" "$versionFilesPath/ports/zlib" +git -C $versionFilesPath @gitConfigOptions add -A +git -C $versionFilesPath @gitConfigOptions commit -m "set zlib-1.2.11-8" +Run-Vcpkg @portsRedirectArgsOK x-add-version zlib +Throw-IfFailed +git -C $versionFilesPath @gitConfigOptions add -A +git -C $versionFilesPath @gitConfigOptions commit -m "add zlib-1.2.11-8 to version database" +$baselineSha = git -C $versionFilesPath @gitConfigOptions rev-parse HEAD +Remove-Item -Recurse -Force -LiteralPath "$versionFilesPath/ports/zlib" +Copy-Item -Recurse "$versionFilesPath/old-ports/zlib-1.2.11-9" "$versionFilesPath/ports/zlib" +git -C $versionFilesPath @gitConfigOptions add -A +git -C $versionFilesPath @gitConfigOptions commit -m "set zlib-1.2.11-9" +Run-Vcpkg @portsRedirectArgsOK x-add-version zlib +Throw-IfFailed +git -C $versionFilesPath @gitConfigOptions add -A +git -C $versionFilesPath @gitConfigOptions commit -m "add zlib-1.2.11-9 to version database" + +$CurrentTest = "without default baseline 2 -- enabling versions should not change behavior" +Remove-Item -Recurse $buildtreesRoot/versioning_ -ErrorAction SilentlyContinue +Run-Vcpkg @commonArgs "--feature-flags=versions" install ` + "--dry-run" ` + "--x-manifest-root=$versionFilesPath/without-default-baseline-2" ` + "--x-builtin-registry-versions-dir=$versionFilesPath/versions" +Throw-IfFailed +Require-FileNotExists $buildtreesRoot/versioning_ + +$CurrentTest = "default baseline 2" +$baselinedVcpkgJson = @" { - Write-Trace "testing baselines: $opt_registries" - Refresh-VersionFiles - $CurrentTest = "without default baseline 2 -- enabling versions should not change behavior" - Remove-Item -Recurse $buildtreesRoot/versioning_ -ErrorAction SilentlyContinue - Run-Vcpkg @commonArgs "--feature-flags=versions$opt_registries" install ` - "--dry-run" ` - "--x-manifest-root=$versionFilesPath/without-default-baseline-2" ` - "--x-builtin-registry-versions-dir=$versionFilesPath/default-baseline-2/versions" - Throw-IfFailed - Require-FileNotExists $buildtreesRoot/versioning_ - - $CurrentTest = "default baseline 2" - Run-Vcpkg @commonArgs "--feature-flags=versions$opt_registries" install ` - "--dry-run" ` - "--x-manifest-root=$versionFilesPath/default-baseline-2" ` - "--x-builtin-registry-versions-dir=$versionFilesPath/default-baseline-2/versions" - Throw-IfFailed - Require-FileExists $buildtreesRoot/versioning_ - - $CurrentTest = "using version features fails without flag" - Run-Vcpkg @commonArgs "--feature-flags=-versions$opt_registries" install ` - "--dry-run" ` - "--x-manifest-root=$versionFilesPath/default-baseline-2" ` - "--x-builtin-registry-versions-dir=$versionFilesPath/default-baseline-2/versions" - Throw-IfNotFailed + "name": "default-baseline-test-2", + "version-string": "0", + "builtin-baseline": "$baselineSha", + "dependencies": [ + "zlib" + ] +} +"@ + +$defaultBaseline2 = "$TestingRoot/default-baseline-2" +if (Test-Path $defaultBaseline2) { + Remove-Item -Recurse -Force -LiteralPath $defaultBaseline2 | Out-Null } + +New-Item -ItemType Directory -Force $defaultBaseline2 | Out-Null +Set-Content -LiteralPath "$defaultBaseline2/vcpkg.json" -Value $baselinedVcpkgJson -NoNewline -Encoding Ascii + +Run-Vcpkg @commonArgs "--feature-flags=versions" install ` + "--dry-run" ` + "--x-manifest-root=$defaultBaseline2" ` + "--x-builtin-registry-versions-dir=$versionFilesPath/versions" +Throw-IfFailed +Require-FileExists $buildtreesRoot/versioning_ + +$CurrentTest = "using version features fails without flag" +Run-Vcpkg @commonArgs "--feature-flags=-versions" install ` + "--dry-run" ` + "--x-manifest-root=$defaultBaseline2" ` + "--x-builtin-registry-versions-dir=$versionFilesPath/versions" +Throw-IfNotFailed diff --git a/azure-pipelines/end-to-end-tests-prelude.ps1 b/azure-pipelines/end-to-end-tests-prelude.ps1 index 68c95949fb..ac968169d6 100644 --- a/azure-pipelines/end-to-end-tests-prelude.ps1 +++ b/azure-pipelines/end-to-end-tests-prelude.ps1 @@ -186,6 +186,7 @@ function Set-EmptyTestPort { [string]$Name, [Parameter(Mandatory)][ValidateNotNullOrWhitespace()] [string]$Version, + [string]$PortVersion, [Parameter(Mandatory)][ValidateNotNullOrWhitespace()] [string]$PortsRoot, [switch]$Malformed @@ -196,23 +197,25 @@ function Set-EmptyTestPort { New-Item -ItemType Directory -Force -Path $portDir | Out-Null Set-Content -Value "set(VCPKG_POLICY_EMPTY_PACKAGE enabled)" -LiteralPath (Join-Path $portDir 'portfile.cmake') -Encoding Ascii - if ($Malformed) { - # Add bad trailing comma - $json = @" -{ - "name": "$Name", - "version": "$Version", -} -"@ - } else { - $json = @" + $json = @" { "name": "$Name", "version": "$Version" -} "@ + + $json = $json.Replace("`r`n", "`n") + if (-not $null -eq $PortVersion) + { + $json += ",`n `"port-version`": $PortVersion" + } + + if ($Malformed) { + $json += ',' } - Set-Content -Value $json -LiteralPath (Join-Path $portDir 'vcpkg.json') -Encoding Ascii + + $json += "`n}`n" + + Set-Content -Value $json -LiteralPath (Join-Path $portDir 'vcpkg.json') -Encoding Ascii -NoNewline } Refresh-TestRoot diff --git a/include/vcpkg/base/json.h b/include/vcpkg/base/json.h index 29fc1d22d5..24cbceb80e 100644 --- a/include/vcpkg/base/json.h +++ b/include/vcpkg/base/json.h @@ -327,7 +327,6 @@ namespace vcpkg::Json JsonStyle style; }; - ExpectedL parse_file(const ReadOnlyFilesystem&, const Path&, std::error_code& ec); ExpectedL parse(StringView text, StringView origin); ParsedJson parse_file(LineInfo li, const ReadOnlyFilesystem&, const Path&); ExpectedL parse_object(StringView text, StringView origin); diff --git a/include/vcpkg/base/message-data.inc.h b/include/vcpkg/base/message-data.inc.h index effc1651ef..c4db50bea3 100644 --- a/include/vcpkg/base/message-data.inc.h +++ b/include/vcpkg/base/message-data.inc.h @@ -74,6 +74,19 @@ 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( + AddVersionPortVersionShouldBeGone, + (msg::package_name, msg::version), + "", + "In {package_name}, {version} is completely new version, so the \"port-version\" field should be removed. Remove " + "\"port-version\", commit that change, and try again. To skip this check, rerun with --skip-version-format-check .") +DECLARE_MESSAGE(AddVersionPortVersionShouldBeOneMore, + (msg::package_name, msg::version, msg::count, msg::expected_version, msg::actual_version), + "", + "In {package_name}, the current \"port-version\" for {version} is {count}, so the next added " + "\"port-version\" should be {expected_version}, but the port declares \"port-version\" " + "{actual_version}. Change \"port-version\" to {expected_version}, commit that change, and try again. " + "To skip this check, rerun with --skip-version-format-check .") DECLARE_MESSAGE(AddVersionSuggestVersionDate, (msg::package_name), "\"version-string\" and \"version-date\" are JSON keys, and --skip-version-format-check is a command " diff --git a/locales/messages.json b/locales/messages.json index afa5ba7e41..be4a9a9054 100644 --- a/locales/messages.json +++ b/locales/messages.json @@ -86,6 +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.", + "AddVersionPortVersionShouldBeGone": "In {package_name}, {version} is completely new version, so the \"port-version\" field should be removed. Remove \"port-version\", commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", + "_AddVersionPortVersionShouldBeGone.comment": "An example of {package_name} is zlib. An example of {version} is 1.3.8.", + "AddVersionPortVersionShouldBeOneMore": "In {package_name}, the current \"port-version\" for {version} is {count}, so the next added \"port-version\" should be {expected_version}, but the port declares \"port-version\" {actual_version}. Change \"port-version\" to {expected_version}, commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", + "_AddVersionPortVersionShouldBeOneMore.comment": "An example of {package_name} is zlib. An example of {version} is 1.3.8. An example of {count} is 42. An example of {expected_version} is 1.3.8. An example of {actual_version} is 1.3.8.", "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 .", diff --git a/src/vcpkg/base/json.cpp b/src/vcpkg/base/json.cpp index 83c2d58ffd..e65c51e65a 100644 --- a/src/vcpkg/base/json.cpp +++ b/src/vcpkg/base/json.cpp @@ -1102,26 +1102,16 @@ namespace vcpkg::Json return true; } - ExpectedL parse_file(const ReadOnlyFilesystem& fs, const Path& json_file, std::error_code& ec) - { - auto res = fs.read_contents(json_file, ec); - if (ec) - { - return format_filesystem_call_error(ec, "read_contents", {json_file}); - } - - return parse(res, json_file); - } - ParsedJson parse_file(vcpkg::LineInfo li, const ReadOnlyFilesystem& fs, const Path& json_file) { std::error_code ec; - auto ret = parse_file(fs, json_file, ec); + auto disk_contents = fs.read_contents(json_file, ec); if (ec) { Checks::msg_exit_with_error(li, format_filesystem_call_error(ec, "read_contents", {json_file})); } - return std::move(ret).value_or_exit(VCPKG_LINE_INFO); + + return parse(disk_contents, json_file).value_or_exit(VCPKG_LINE_INFO); } ExpectedL parse(StringView json, StringView origin) { return Parser::parse(json, origin); } diff --git a/src/vcpkg/commands.add-version.cpp b/src/vcpkg/commands.add-version.cpp index 7c57ac2b97..72e0b8afd7 100644 --- a/src/vcpkg/commands.add-version.cpp +++ b/src/vcpkg/commands.add-version.cpp @@ -54,30 +54,32 @@ namespace { return insert_version_to_json_object(obj, version.version, JsonIdVersionString); } + Checks::unreachable(VCPKG_LINE_INFO); } - void check_used_version_scheme(const SchemedVersion& version, const std::string& port_name) + bool check_used_version_scheme(const SchemedVersion& version, const std::string& port_name) { if (version.scheme == VersionScheme::String) { if (DateVersion::try_parse(version.version.text)) { - 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)); + msg::println(msg::format(msgAddVersionSuggestVersionDate, msg::package_name = port_name) + .append_raw("\n") + .append(msgSeeURL, msg::url = docs::version_schemes)); + return true; } + if (DotVersion::try_parse_relaxed(version.version.text)) { - 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)); + msg::println(msg::format(msgAddVersionSuggestVersionRelaxed, msg::package_name = port_name) + .append_raw("\n") + .append(msgSeeURL, msg::url = docs::version_schemes)); + return true; } } + + return false; } Json::Object serialize_baseline(const std::map>& baseline) @@ -111,24 +113,19 @@ namespace return output_object; } - void write_baseline_file(const Filesystem& fs, - const std::map>& baseline_map, - const Path& output_path) + static void write_json_file(const Filesystem& fs, const Json::Object& obj, const Path& output_path) { auto new_path = output_path + ".tmp"; fs.create_directories(output_path.parent_path(), VCPKG_LINE_INFO); - fs.write_contents(new_path, Json::stringify(serialize_baseline(baseline_map)), VCPKG_LINE_INFO); + fs.write_contents(new_path, Json::stringify(obj), VCPKG_LINE_INFO); fs.rename(new_path, output_path, VCPKG_LINE_INFO); } - void write_versions_file(const Filesystem& fs, - const std::vector& versions, - const Path& output_path) + static void write_versions_file(const Filesystem& fs, + const std::vector& versions, + const Path& output_path) { - auto new_path = output_path + ".tmp"; - fs.create_directories(output_path.parent_path(), VCPKG_LINE_INFO); - fs.write_contents(new_path, Json::stringify(serialize_versions(versions)), VCPKG_LINE_INFO); - fs.rename(new_path, output_path, VCPKG_LINE_INFO); + write_json_file(fs, serialize_versions(versions), output_path); } UpdateResult update_baseline_version(const VcpkgPaths& paths, @@ -153,8 +150,10 @@ namespace msg::version = version, msg::path = baseline_path); } + return UpdateResult::NotUpdated; } + baseline_version = version; } else @@ -162,12 +161,13 @@ namespace baseline_map.emplace(port_name, version); } - write_baseline_file(fs, baseline_map, baseline_path); + write_json_file(fs, serialize_baseline(baseline_map), baseline_path); if (print_success) { msg::println( Color::success, msgAddVersionAddedVersionToFile, msg::version = version, msg::path = baseline_path); } + return UpdateResult::Updated; } @@ -194,8 +194,30 @@ namespace { if (!skip_version_format_check) { - check_used_version_scheme(port_version, port_name); + if (check_used_version_scheme(port_version, port_name)) + { + if (!keep_going) + { + return UpdateResult::NotUpdated; + } + + Checks::exit_fail(VCPKG_LINE_INFO); + } + + if (port_version.version.port_version != 0) + { + msg::println_warning(msgAddVersionPortVersionShouldBeGone, + msg::package_name = port_name, + msg::version = port_version.version.text); + if (keep_going) + { + return UpdateResult::NotUpdated; + } + + Checks::exit_fail(VCPKG_LINE_INFO); + } } + std::vector new_entry{{port_version, git_tree}}; write_versions_file(fs, new_entry, maybe_maybe_versions.versions_file_path); if (print_success) @@ -207,15 +229,38 @@ namespace .append_raw(' ') .append(msgAddVersionNewFile)); } + return UpdateResult::Updated; } - 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; }); - if (found_same_sha != versions_end) + const GitVersionDbEntry* exactly_matching_sha_version_entry = nullptr; + GitVersionDbEntry* exactly_matching_version_entry = nullptr; + const GitVersionDbEntry* highest_matching_version_entry = nullptr; + for (auto&& version_entry : *versions) { - if (found_same_sha->version.version == port_version.version) + if (version_entry.version.version.text == port_version.version.text) + { + if (version_entry.version.version.port_version == port_version.version.port_version) + { + exactly_matching_version_entry = &version_entry; + } + + if (!highest_matching_version_entry || highest_matching_version_entry->version.version.port_version < + version_entry.version.version.port_version) + { + highest_matching_version_entry = &version_entry; + } + } + + if (version_entry.git_tree == git_tree) + { + exactly_matching_sha_version_entry = &version_entry; + } + } + + if (exactly_matching_sha_version_entry) + { + if (exactly_matching_version_entry == exactly_matching_sha_version_entry) { if (print_success) { @@ -224,11 +269,13 @@ namespace msg::version = port_version.version, msg::path = maybe_maybe_versions.versions_file_path); } + return UpdateResult::NotUpdated; } + msg::println_warning(msg::format(msgAddVersionPortFilesShaUnchanged, msg::package_name = port_name, - msg::version = found_same_sha->version.version) + msg::version = port_version.version) .append_raw("\n-- SHA: ") .append_raw(git_tree) .append_raw("\n-- ") @@ -238,15 +285,15 @@ namespace .append_raw("\n*** ") .append(msgSeeURL, msg::url = docs::add_version_command_url) .append_raw("\n***")); - if (keep_going) return UpdateResult::NotUpdated; + if (keep_going) + { + return UpdateResult::NotUpdated; + } + Checks::exit_fail(VCPKG_LINE_INFO); } - auto it = std::find_if(versions->begin(), versions_end, [&](const GitVersionDbEntry& entry) -> bool { - return entry.version.version == port_version.version; - }); - - if (it != versions_end) + if (exactly_matching_version_entry) { if (!overwrite_version) { @@ -255,7 +302,7 @@ namespace .append_raw('\n') .append(msgAddVersionVersionIs, msg::version = port_version.version) .append_raw('\n') - .append(msgAddVersionOldShaIs, msg::commit_sha = it->git_tree) + .append(msgAddVersionOldShaIs, msg::commit_sha = exactly_matching_version_entry->git_tree) .append_raw('\n') .append(msgAddVersionNewShaIs, msg::commit_sha = git_tree) .append_raw('\n') @@ -267,12 +314,46 @@ namespace .append_raw("\n***") .append(msgAddVersionNoFilesUpdated) .append_raw("***")); - if (keep_going) return UpdateResult::NotUpdated; + if (keep_going) + { + return UpdateResult::NotUpdated; + } + Checks::exit_fail(VCPKG_LINE_INFO); } - it->version = port_version; - it->git_tree = git_tree; + exactly_matching_version_entry->git_tree = git_tree; + } + else if (!skip_version_format_check && port_version.version.port_version != 0 && + !highest_matching_version_entry) + { + msg::println_warning(msgAddVersionPortVersionShouldBeGone, + msg::package_name = port_name, + msg::version = port_version.version.text); + if (keep_going) + { + return UpdateResult::NotUpdated; + } + + Checks::exit_fail(VCPKG_LINE_INFO); + } + else if (!skip_version_format_check && port_version.version.port_version != 0 && + highest_matching_version_entry->version.version.port_version != + (port_version.version.port_version - 1)) + { + msg::println_warning(msgAddVersionPortVersionShouldBeOneMore, + msg::package_name = port_name, + msg::version = port_version.version.text, + msg::count = highest_matching_version_entry->version.version.port_version, + msg::expected_version = + highest_matching_version_entry->version.version.port_version + 1, + msg::actual_version = port_version.version.port_version); + if (keep_going) + { + return UpdateResult::NotUpdated; + } + + Checks::exit_fail(VCPKG_LINE_INFO); } else { @@ -281,7 +362,15 @@ namespace if (!skip_version_format_check) { - check_used_version_scheme(port_version, port_name); + if (check_used_version_scheme(port_version, port_name)) + { + if (!keep_going) + { + return UpdateResult::NotUpdated; + } + + Checks::exit_fail(VCPKG_LINE_INFO); + } } write_versions_file(fs, *versions, maybe_maybe_versions.versions_file_path); @@ -292,6 +381,7 @@ namespace msg::version = port_version.version, msg::path = maybe_maybe_versions.versions_file_path); } + return UpdateResult::Updated; } @@ -313,7 +403,7 @@ namespace vcpkg Undocumented, AutocompletePriority::Public, 0, - 1, + SIZE_MAX, {AddVersionSwitches}, nullptr, }; @@ -335,15 +425,7 @@ namespace vcpkg } std::vector port_names; - if (!parsed_args.command_arguments.empty()) - { - if (add_all) - { - msg::println_warning(msgAddVersionIgnoringOptionAll, msg::option = SwitchAll); - } - port_names.emplace_back(parsed_args.command_arguments[0]); - } - else + if (parsed_args.command_arguments.empty()) { Checks::msg_check_exit( VCPKG_LINE_INFO, @@ -357,6 +439,15 @@ namespace vcpkg port_names.emplace_back(port_dir.stem().to_string()); } } + else + { + if (add_all) + { + msg::println_warning(msgAddVersionIgnoringOptionAll, msg::option = SwitchAll); + } + + port_names = std::move(parsed_args.command_arguments); + } auto baseline_map = [&]() -> std::map> { if (!fs.exists(baseline_path, IgnoreErrors{})) @@ -364,6 +455,7 @@ namespace vcpkg std::map> ret; return ret; } + auto maybe_baseline_map = vcpkg::get_builtin_baseline(paths); return maybe_baseline_map.value_or_exit(VCPKG_LINE_INFO); }(); @@ -388,15 +480,18 @@ namespace vcpkg for (auto&& port_name : port_names) { 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}) - .maybe_scfl; + auto load_result = Paragraphs::try_load_port_required( + fs, port_name, PortLocation{paths.builtin_ports_directory() / port_name}); + auto& maybe_scfl = load_result.maybe_scfl; auto scfl = maybe_scfl.get(); if (!scfl) { msg::println(Color::error, maybe_scfl.error()); - Checks::check_exit(VCPKG_LINE_INFO, !add_all); + if (!add_all) + { + Checks::exit_fail(VCPKG_LINE_INFO); + } + continue; } @@ -406,10 +501,9 @@ namespace vcpkg if (scfl->control_path.filename() == FileVcpkgDotJson) { - const auto current_file_content = fs.read_contents(scfl->control_path, VCPKG_LINE_INFO); const auto json = serialize_manifest(*scfl->source_control_file); const auto formatted_content = Json::stringify(json); - if (current_file_content != formatted_content) + if (load_result.on_disk_contents != formatted_content) { std::string command_line = "vcpkg format-manifest "; append_shell_escaped(command_line, scfl->control_path); @@ -418,11 +512,12 @@ namespace vcpkg .append_raw('\n') .append(msgAddVersionFormatPortSuggestion, msg::command_line = command_line) .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); + .append(msgSeeURL, msg::url = docs::format_manifest_command_url)); + if (!add_all) + { + Checks::exit_fail(VCPKG_LINE_INFO); + } + continue; } } @@ -449,6 +544,7 @@ namespace vcpkg if (add_all) continue; Checks::exit_fail(VCPKG_LINE_INFO); } + const auto& git_tree = git_tree_it->second; auto updated_versions_file = update_version_db_file(paths, port_name, @@ -466,6 +562,7 @@ namespace vcpkg msg::println(msgAddVersionNoFilesUpdatedForPort, msg::package_name = port_name); } } + Checks::exit_success(VCPKG_LINE_INFO); } } // namespace vcpkg diff --git a/src/vcpkg/vcpkgpaths.cpp b/src/vcpkg/vcpkgpaths.cpp index 77e107f5ce..8635927c72 100644 --- a/src/vcpkg/vcpkgpaths.cpp +++ b/src/vcpkg/vcpkgpaths.cpp @@ -489,30 +489,22 @@ namespace { vcpkg::LockFile ret; std::error_code ec; - auto maybe_lock_contents = Json::parse_file(fs, p, ec); + auto lockfile_disk_contents = fs.read_contents(p, ec); if (ec) { Debug::print("Failed to load lockfile: ", ec.message(), "\n"); return ret; } - else if (auto lock_contents = maybe_lock_contents.get()) - { - auto& doc = lock_contents->value; - if (!doc.is_object()) - { - Debug::print("Lockfile was not an object\n"); - return ret; - } - - ret.lockdata = lockdata_from_json_object(doc.object(VCPKG_LINE_INFO)); - return ret; - } - else + auto maybe_lock_data = Json::parse_object(lockfile_disk_contents, p); + if (auto lock_data = maybe_lock_data.get()) { - Debug::print("Failed to load lockfile:\n", maybe_lock_contents.error()); + ret.lockdata = lockdata_from_json_object(*lock_data); return ret; } + + Debug::print("Failed to load lockfile:\n", maybe_lock_data.error()); + return ret; } } // unnamed namespace From 492612868dc7e73678bb23231ad2892e00b5d0ce Mon Sep 17 00:00:00 2001 From: Embedded Bot Date: Tue, 1 Oct 2024 05:03:37 +0000 Subject: [PATCH 22/39] [localization][automated][ci skip] update locale files --- locales/messages.cs.json | 13 ++++++++----- locales/messages.de.json | 13 ++++++++----- locales/messages.es.json | 13 ++++++++----- locales/messages.fr.json | 13 ++++++++----- locales/messages.it.json | 13 ++++++++----- locales/messages.ja.json | 13 ++++++++----- locales/messages.ko.json | 13 ++++++++----- locales/messages.pl.json | 13 ++++++++----- locales/messages.pt-BR.json | 13 ++++++++----- locales/messages.ru.json | 13 ++++++++----- locales/messages.tr.json | 13 ++++++++----- locales/messages.zh-Hans.json | 13 ++++++++----- locales/messages.zh-Hant.json | 13 ++++++++----- 13 files changed, 104 insertions(+), 65 deletions(-) diff --git a/locales/messages.cs.json b/locales/messages.cs.json index 52ce4a6270..14de23b3da 100644 --- a/locales/messages.cs.json +++ b/locales/messages.cs.json @@ -68,6 +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ý.", + "AddVersionPortVersionShouldBeGone": "In {package_name}, {version} is completely new version, so the \"port-version\" field should be removed. Remove \"port-version\", commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", + "AddVersionPortVersionShouldBeOneMore": "In {package_name}, the current \"port-version\" for {version} is {count}, so the next added \"port-version\" should be {expected_version}, but the port declares \"port-version\" {actual_version}. Change \"port-version\" to {expected_version}, commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", "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.", @@ -854,13 +856,14 @@ "ParagraphExpectedColonAfterField": "za názvem pole se očekával znak :", "ParagraphExpectedFieldName": "očekával se název pole", "ParagraphUnexpectedEndOfLine": "neočekávaný konec řádku, pokud chcete použít prázdný řádek, použijte znak .", - "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}).", + "ParseFeatureNameError": "\"{package_name}\" is not a valid feature name. Feature names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", + "ParseIdentifierError": "\"{value}\" is not a valid identifier. Identifiers must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", + "ParsePackageNameError": "\"{package_name}\" is not a valid package name. Package names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", + "ParsePackageNameNotEof": "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+hyphens and not reserved (see {url} for more information).", "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.", + "ParseQualifiedSpecifierNotEof": "expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hyphens.", "ParseQualifiedSpecifierNotEofSquareBracket": "Očekával se konec vstupu při parsování specifikace balíčku; neměli jste spíš na mysli {version_spec}?", + "ParseTripletNotEof": "Invalid triplet name. Triplet names are all lowercase alphanumeric+hyphens.", "PathMustBeAbsolute": "Hodnota proměnné prostředí X_VCPKG_REGISTRIES_CACHE není absolutní: {path}", "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)", diff --git a/locales/messages.de.json b/locales/messages.de.json index f42559048f..b68b343e0e 100644 --- a/locales/messages.de.json +++ b/locales/messages.de.json @@ -68,6 +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", + "AddVersionPortVersionShouldBeGone": "In {package_name}, {version} is completely new version, so the \"port-version\" field should be removed. Remove \"port-version\", commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", + "AddVersionPortVersionShouldBeOneMore": "In {package_name}, the current \"port-version\" for {version} is {count}, so the next added \"port-version\" should be {expected_version}, but the port declares \"port-version\" {actual_version}. Change \"port-version\" to {expected_version}, commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", "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", @@ -854,13 +856,14 @@ "ParagraphExpectedColonAfterField": "„:“ nach Feldname erwartet", "ParagraphExpectedFieldName": "erwarteter Feldname", "ParagraphUnexpectedEndOfLine": "unerwartetes Zeilenende. Verwenden Sie als span-Element eine leere Zeile mithilfe von „ “.", - "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}).", + "ParseFeatureNameError": "\"{package_name}\" is not a valid feature name. Feature names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", + "ParseIdentifierError": "\"{value}\" is not a valid identifier. Identifiers must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", + "ParsePackageNameError": "\"{package_name}\" is not a valid package name. Package names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", + "ParsePackageNameNotEof": "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+hyphens and not reserved (see {url} for more information).", "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.", + "ParseQualifiedSpecifierNotEof": "expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hyphens.", "ParseQualifiedSpecifierNotEofSquareBracket": "Es wurde das Ende der Eingabeanalyse einer Paketspezifikation erwartet. Meinten Sie stattdessen {version_spec}?", + "ParseTripletNotEof": "Invalid triplet name. Triplet names are all lowercase alphanumeric+hyphens.", "PathMustBeAbsolute": "Der Wert der Umgebungsvariablen X_VCPKG_REGISTRIES_CACHE ist nicht absolut: {path}", "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.", diff --git a/locales/messages.es.json b/locales/messages.es.json index c7263a8338..f6e6ef9688 100644 --- a/locales/messages.es.json +++ b/locales/messages.es.json @@ -68,6 +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.", + "AddVersionPortVersionShouldBeGone": "In {package_name}, {version} is completely new version, so the \"port-version\" field should be removed. Remove \"port-version\", commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", + "AddVersionPortVersionShouldBeOneMore": "In {package_name}, the current \"port-version\" for {version} is {count}, so the next added \"port-version\" should be {expected_version}, but the port declares \"port-version\" {actual_version}. Change \"port-version\" to {expected_version}, commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", "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}", @@ -854,13 +856,14 @@ "ParagraphExpectedColonAfterField": "se esperaba ':' después del nombre de campo", "ParagraphExpectedFieldName": "nombre de campo esperado", "ParagraphUnexpectedEndOfLine": "final de línea inesperado, para abarcar una línea en blanco use \" .\"", - "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).", + "ParseFeatureNameError": "\"{package_name}\" is not a valid feature name. Feature names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", + "ParseIdentifierError": "\"{value}\" is not a valid identifier. Identifiers must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", + "ParsePackageNameError": "\"{package_name}\" is not a valid package name. Package names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", + "ParsePackageNameNotEof": "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+hyphens and not reserved (see {url} for more information).", "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.", + "ParseQualifiedSpecifierNotEof": "expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hyphens.", "ParseQualifiedSpecifierNotEofSquareBracket": "se esperaba el final de la entrada analizando una especificación de paquete; ¿Quería decir {version_spec} en su lugar?", + "ParseTripletNotEof": "Invalid triplet name. Triplet names are all lowercase alphanumeric+hyphens.", "PathMustBeAbsolute": "El valor de la variable de entorno X_VCPKG_REGISTRIES_CACHE no es absoluto: {path}", "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)", diff --git a/locales/messages.fr.json b/locales/messages.fr.json index 9870d996ef..42f1d31408 100644 --- a/locales/messages.fr.json +++ b/locales/messages.fr.json @@ -68,6 +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.", + "AddVersionPortVersionShouldBeGone": "In {package_name}, {version} is completely new version, so the \"port-version\" field should be removed. Remove \"port-version\", commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", + "AddVersionPortVersionShouldBeOneMore": "In {package_name}, the current \"port-version\" for {version} is {count}, so the next added \"port-version\" should be {expected_version}, but the port declares \"port-version\" {actual_version}. Change \"port-version\" to {expected_version}, commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", "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}.", @@ -854,13 +856,14 @@ "ParagraphExpectedColonAfterField": "':' attendu après le nom du champ", "ParagraphExpectedFieldName": "nom de champ attendu", "ParagraphUnexpectedEndOfLine": "fin de ligne inattendue, pour couvrir une ligne vide, utilisez « . »", - "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).", + "ParseFeatureNameError": "\"{package_name}\" is not a valid feature name. Feature names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", + "ParseIdentifierError": "\"{value}\" is not a valid identifier. Identifiers must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", + "ParsePackageNameError": "\"{package_name}\" is not a valid package name. Package names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", + "ParsePackageNameNotEof": "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+hyphens and not reserved (see {url} for more information).", "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.", + "ParseQualifiedSpecifierNotEof": "expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hyphens.", "ParseQualifiedSpecifierNotEofSquareBracket": "fin attendue d’entrée analysant une spécification de package. Vouliez-vous dire {version_spec} à la place ?", + "ParseTripletNotEof": "Invalid triplet name. Triplet names are all lowercase alphanumeric+hyphens.", "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", "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é)", diff --git a/locales/messages.it.json b/locales/messages.it.json index 8b36e5ee4b..d9a823d7d7 100644 --- a/locales/messages.it.json +++ b/locales/messages.it.json @@ -68,6 +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", + "AddVersionPortVersionShouldBeGone": "In {package_name}, {version} is completely new version, so the \"port-version\" field should be removed. Remove \"port-version\", commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", + "AddVersionPortVersionShouldBeOneMore": "In {package_name}, the current \"port-version\" for {version} is {count}, so the next added \"port-version\" should be {expected_version}, but the port declares \"port-version\" {actual_version}. Change \"port-version\" to {expected_version}, commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", "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}", @@ -854,13 +856,14 @@ "ParagraphExpectedColonAfterField": "previsto ':' dopo il nome del campo", "ParagraphExpectedFieldName": "previsto un nome di campo", "ParagraphUnexpectedEndOfLine": "fine riga imprevista, per estendere una riga vuota, usare \" .\"", - "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}).", + "ParseFeatureNameError": "\"{package_name}\" is not a valid feature name. Feature names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", + "ParseIdentifierError": "\"{value}\" is not a valid identifier. Identifiers must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", + "ParsePackageNameError": "\"{package_name}\" is not a valid package name. Package names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", + "ParsePackageNameNotEof": "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+hyphens and not reserved (see {url} for more information).", "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.", + "ParseQualifiedSpecifierNotEof": "expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hyphens.", "ParseQualifiedSpecifierNotEofSquareBracket": "è prevista la fine dell'analisi dell'input di una specifica del pacchetto; si intendeva invece {version_spec}?", + "ParseTripletNotEof": "Invalid triplet name. Triplet names are all lowercase alphanumeric+hyphens.", "PathMustBeAbsolute": "Il valore della variabile di ambiente X_VCPKG_REGISTRIES_CACHE non è assoluto: {path}", "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)", diff --git a/locales/messages.ja.json b/locales/messages.ja.json index 46fcf2a749..9a4c722079 100644 --- a/locales/messages.ja.json +++ b/locales/messages.ja.json @@ -68,6 +68,8 @@ "AddVersionPortFilesShaChanged": "{package_name} のチェックイン ファイルが変更されましたが、バージョンは更新されませんでした", "AddVersionPortFilesShaUnchanged": "{package_name} のチェックイン ファイルはバージョン {version} から変更されていません", "AddVersionPortHasImproperFormat": "{package_name} が正しく書式設定されていません", + "AddVersionPortVersionShouldBeGone": "In {package_name}, {version} is completely new version, so the \"port-version\" field should be removed. Remove \"port-version\", commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", + "AddVersionPortVersionShouldBeOneMore": "In {package_name}, the current \"port-version\" for {version} is {count}, so the next added \"port-version\" should be {expected_version}, but the port declares \"port-version\" {actual_version}. Change \"port-version\" to {expected_version}, commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", "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} にコミットされていない変更があります", @@ -854,13 +856,14 @@ "ParagraphExpectedColonAfterField": "フィールド名の後に ':' が必要です", "ParagraphExpectedFieldName": "フィールド名が必要です", "ParagraphUnexpectedEndOfLine": "予期しない行の終わりです。空白行にまたがる場合は \" .\" を使用します", - "ParseFeatureNameError": "\"{package_name}\" は有効な機能名ではありません。機能名は小文字の英数字とハイフンにする必要があり、また、予約されていないことが必須になります (詳細については、{url} を参照してください)。", - "ParseIdentifierError": "\"{値}\" は有効な識別子ではありません。識別子は小文字の英数字とハイフンにする必要があり、また、予約されていないことが必須になります (詳細については、{url} を参照してください)。", - "ParsePackageNameError": "\"{package_name}\" は有効なパッケージ名ではありません。パッケージ名は小文字の英数字とハイフンにする必要があり、また、予約されていないことが必須になります (詳細については、{url} を参照してください)。", - "ParsePackageNameNotEof": "パッケージ名の入力解析の終了が必要です。 これは通常、指定された文字がポート名に使用できないことを意味します。ポート名はすべて小文字の英数字 + ハイペンであり、予約されていません (詳細については、{url} を参照してください)。", + "ParseFeatureNameError": "\"{package_name}\" is not a valid feature name. Feature names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", + "ParseIdentifierError": "\"{value}\" is not a valid identifier. Identifiers must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", + "ParsePackageNameError": "\"{package_name}\" is not a valid package name. Package names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", + "ParsePackageNameNotEof": "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+hyphens and not reserved (see {url} for more information).", "ParsePackagePatternError": "\"{package_name}\" は有効なパッケージ パターンではありません。パッケージ パターンではワイルドカード文字 (*) を 1 つだけ使用し、それをそのパターンの最後の文字にする必要があります (詳細については、{url} を参照してください)。", - "ParseQualifiedSpecifierNotEof": "パッケージ仕様の入力解析の終了が必要です。 これは通常、指定された文字がパッケージ仕様で使用できないことを意味します。ポート名、トリプレット名、機能名はすべて小文字の英数字 + ハイフンです。", + "ParseQualifiedSpecifierNotEof": "expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hyphens.", "ParseQualifiedSpecifierNotEofSquareBracket": "パッケージ仕様の入力解析の終了が必要です。代わりに {version_spec} ですか?", + "ParseTripletNotEof": "Invalid triplet name. Triplet names are all lowercase alphanumeric+hyphens.", "PathMustBeAbsolute": "環境変数 X_VCPKG_REGISTRIES_CACHE の値が絶対ではありません: {path}", "PerformingPostBuildValidation": "ビルド後の検証の実行", "PortBugBinDirExists": "${{CURRENT_PACKAGES_DIR}}/{path} が存在しますが、静的ビルドには含めてはなりません。このメッセージを非表示にするには、set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled) を追加します", diff --git a/locales/messages.ko.json b/locales/messages.ko.json index 10a0908fb0..a46a71814f 100644 --- a/locales/messages.ko.json +++ b/locales/messages.ko.json @@ -68,6 +68,8 @@ "AddVersionPortFilesShaChanged": "{package_name}에 대해 체크 인된 파일이 변경되었지만 버전이 업데이트되지 않았습니다.", "AddVersionPortFilesShaUnchanged": "{package_name}에 대한 체크 인 파일이 버전 {version}에서 변경되지 않았습니다.", "AddVersionPortHasImproperFormat": "{package_name}의 형식이 잘못되었음", + "AddVersionPortVersionShouldBeGone": "In {package_name}, {version} is completely new version, so the \"port-version\" field should be removed. Remove \"port-version\", commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", + "AddVersionPortVersionShouldBeOneMore": "In {package_name}, the current \"port-version\" for {version} is {count}, so the next added \"port-version\" should be {expected_version}, but the port declares \"port-version\" {actual_version}. Change \"port-version\" to {expected_version}, commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", "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}에 대해 커밋되지 않은 변경 내용이 있습니다.", @@ -854,13 +856,14 @@ "ParagraphExpectedColonAfterField": "필드 이름 뒤에 ':'이 필요합니다.", "ParagraphExpectedFieldName": "필드 이름이 필요합니다.", "ParagraphUnexpectedEndOfLine": "예기치 않은 줄의 끝입니다. 빈 줄을 포괄하려면 \" .\"를 사용하세요.", - "ParseFeatureNameError": "\"{package_name}\"은(는) 유효한 기능 이름이 아닙니다. 기능 이름은 소문자 영숫자+하이픈이어야 하며 예약되지 않아야 합니다(자세한 내용은 {url} 참조).", - "ParseIdentifierError": "\"{value}\"는 유효한 식별자가 아닙니다. 식별자는 소문자 영숫자+하이픈이어야 하며 예약되지 않아야 합니다(자세한 내용은 {url} 참조).", - "ParsePackageNameError": "\"{package_name}\"은(는) 유효한 패키지 이름이 아닙니다. 패키지 이름은 소문자 영숫자+하이픈이어야 하며 예약되지 않아야 합니다(자세한 내용은 {url} 참조).", - "ParsePackageNameNotEof": "패키지 이름을 구문 분석하는 입력의 끝이 필요합니다. 이는 일반적으로 표시된 문자가 포트 이름에 포함될 수 없음을 의미합니다. 포트 이름은 모두 소문자 영숫자+하이픈이며 예약되어 있지 않습니다(자세한 내용은 {url} 참조).", + "ParseFeatureNameError": "\"{package_name}\" is not a valid feature name. Feature names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", + "ParseIdentifierError": "\"{value}\" is not a valid identifier. Identifiers must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", + "ParsePackageNameError": "\"{package_name}\" is not a valid package name. Package names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", + "ParsePackageNameNotEof": "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+hyphens and not reserved (see {url} for more information).", "ParsePackagePatternError": "\"{package_name}\"은(는) 유효한 패키지 패턴이 아닙니다. 패키지 패턴에는 와일드카드 문자(*)를 하나만 사용해야 하며 패턴의 맨 끝에 써야 합니다(자세한 내용은 {url} 참조).", - "ParseQualifiedSpecifierNotEof": "패키지 사양을 구문 분석하는 입력의 끝이 필요합니다. 이는 일반적으로 표시된 문자가 패키지 사양에 포함될 수 없음을 의미합니다. 포트, 트리플렛 및 기능 이름은 모두 소문자 영숫자+하이픈입니다.", + "ParseQualifiedSpecifierNotEof": "expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hyphens.", "ParseQualifiedSpecifierNotEofSquareBracket": "패키지 사양을 구문 분석하는 입력의 끝이 필요합니다. 대신 {version_spec}을(를) 의미했나요?", + "ParseTripletNotEof": "Invalid triplet name. Triplet names are all lowercase alphanumeric+hyphens.", "PathMustBeAbsolute": "환경 변수 X_VCPKG_REGISTRIES_CACHE 값이 절댓값이 아닙니다. {path}", "PerformingPostBuildValidation": "빌드 후 유효성 검사를 수행하는 중", "PortBugBinDirExists": "${{CURRENT_PACKAGES_DIR}}/{path}이(가) 존재하지만 정적 빌드에는 없어야 합니다. 이 메시지를 표시하지 않도록 설정하려면 set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled)을 추가합니다.", diff --git a/locales/messages.pl.json b/locales/messages.pl.json index 9413ee66d7..1abe650348 100644 --- a/locales/messages.pl.json +++ b/locales/messages.pl.json @@ -68,6 +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", + "AddVersionPortVersionShouldBeGone": "In {package_name}, {version} is completely new version, so the \"port-version\" field should be removed. Remove \"port-version\", commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", + "AddVersionPortVersionShouldBeOneMore": "In {package_name}, the current \"port-version\" for {version} is {count}, so the next added \"port-version\" should be {expected_version}, but the port declares \"port-version\" {actual_version}. Change \"port-version\" to {expected_version}, commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", "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}", @@ -854,13 +856,14 @@ "ParagraphExpectedColonAfterField": "oczekiwany znak „„:\"po nazwie pola", "ParagraphExpectedFieldName": "oczekiwana nazwa pola", "ParagraphUnexpectedEndOfLine": "nieoczekiwany koniec wiersza, aby objąć pusty wiersz, użyj znaku „ .”", - "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).", + "ParseFeatureNameError": "\"{package_name}\" is not a valid feature name. Feature names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", + "ParseIdentifierError": "\"{value}\" is not a valid identifier. Identifiers must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", + "ParsePackageNameError": "\"{package_name}\" is not a valid package name. Package names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", + "ParsePackageNameNotEof": "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+hyphens and not reserved (see {url} for more information).", "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.", + "ParseQualifiedSpecifierNotEof": "expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hyphens.", "ParseQualifiedSpecifierNotEofSquareBracket": "oczekiwano końca danych wejściowych analizujących specyfikację pakietu; czy zamiast tego chodziło Ci o {version_spec}?", + "ParseTripletNotEof": "Invalid triplet name. Triplet names are all lowercase alphanumeric+hyphens.", "PathMustBeAbsolute": "Wartość zmiennej środowiskowej X_VCPKG_REGISTRIES_CACHE nie jest bezwzględna: {path}", "PerformingPostBuildValidation": "-- Przeprowadzanie weryfikacji po kompilacji", "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)", diff --git a/locales/messages.pt-BR.json b/locales/messages.pt-BR.json index 1971d3fc37..713f4e66dc 100644 --- a/locales/messages.pt-BR.json +++ b/locales/messages.pt-BR.json @@ -68,6 +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", + "AddVersionPortVersionShouldBeGone": "In {package_name}, {version} is completely new version, so the \"port-version\" field should be removed. Remove \"port-version\", commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", + "AddVersionPortVersionShouldBeOneMore": "In {package_name}, the current \"port-version\" for {version} is {count}, so the next added \"port-version\" should be {expected_version}, but the port declares \"port-version\" {actual_version}. Change \"port-version\" to {expected_version}, commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", "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}", @@ -854,13 +856,14 @@ "ParagraphExpectedColonAfterField": "esperado ':' após o nome do campo", "ParagraphExpectedFieldName": "nome do campo esperado", "ParagraphUnexpectedEndOfLine": "fim de linha inesperado, para abranger uma linha em branco, use \".\"", - "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).", + "ParseFeatureNameError": "\"{package_name}\" is not a valid feature name. Feature names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", + "ParseIdentifierError": "\"{value}\" is not a valid identifier. Identifiers must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", + "ParsePackageNameError": "\"{package_name}\" is not a valid package name. Package names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", + "ParsePackageNameNotEof": "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+hyphens and not reserved (see {url} for more information).", "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.", + "ParseQualifiedSpecifierNotEof": "expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hyphens.", "ParseQualifiedSpecifierNotEofSquareBracket": "esperado o fim da análise de entrada de uma especificação de pacote; você quis dizer {version_spec}?", + "ParseTripletNotEof": "Invalid triplet name. Triplet names are all lowercase alphanumeric+hyphens.", "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", "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)", diff --git a/locales/messages.ru.json b/locales/messages.ru.json index bc26adde25..7094b6fb02 100644 --- a/locales/messages.ru.json +++ b/locales/messages.ru.json @@ -68,6 +68,8 @@ "AddVersionPortFilesShaChanged": "зарегистрированные файлы для {package_name} изменились, но версия не обновлена", "AddVersionPortFilesShaUnchanged": "зарегистрированные файлы для {package_name} не изменялись с версии {version}", "AddVersionPortHasImproperFormat": "Неверный формат {package_name}", + "AddVersionPortVersionShouldBeGone": "In {package_name}, {version} is completely new version, so the \"port-version\" field should be removed. Remove \"port-version\", commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", + "AddVersionPortVersionShouldBeOneMore": "In {package_name}, the current \"port-version\" for {version} is {count}, so the next added \"port-version\" should be {expected_version}, but the port declares \"port-version\" {actual_version}. Change \"port-version\" to {expected_version}, commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", "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} есть незафиксированные изменения", @@ -854,13 +856,14 @@ "ParagraphExpectedColonAfterField": "требуется \":\" после имени поля", "ParagraphExpectedFieldName": "ожидаемое имя поля", "ParagraphUnexpectedEndOfLine": "непредвиденный конец строки, чтобы заполнить пустую строку, используйте \" .\"", - "ParseFeatureNameError": "\"{package_name}\" не является допустимым именем компонента. Имена компонентов должны содержать строчные буквы, цифры и дефисы и не должны быть зарезервированы (см. {url} для получения дополнительных сведений).", - "ParseIdentifierError": "\"{value}\" не является допустимым идентификатором. Идентификаторы должны содержать строчные буквы, цифры и дефисы и не должны быть зарезервированы (см. {url} для получения дополнительных сведений).", - "ParsePackageNameError": "\"{package_name}\" не является допустимым именем пакета. Имена пакетов должны содержать строчные буквы, цифры и дефисы и не должны быть зарезервированы (см. {url} для получения дополнительных сведений).", - "ParsePackageNameNotEof": "ожидался конец ввода при анализе имени пакета; обычно это означает, что имя порта не может содержать указанный символ. Имена пакетов могут содержать только строчные буквы, цифры и дефисы и не должны быть зарезервированы (подробнее см. {url}).", + "ParseFeatureNameError": "\"{package_name}\" is not a valid feature name. Feature names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", + "ParseIdentifierError": "\"{value}\" is not a valid identifier. Identifiers must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", + "ParsePackageNameError": "\"{package_name}\" is not a valid package name. Package names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", + "ParsePackageNameNotEof": "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+hyphens and not reserved (see {url} for more information).", "ParsePackagePatternError": "\"{package_name}\" не является допустимым шаблоном пакета. Шаблоны пакетов должны использовать только один подстановочный знак (*), который должен быть последним символом в шаблоне (см. {url} для получения дополнительных сведений).", - "ParseQualifiedSpecifierNotEof": "ожидался конец ввода при анализе спецификации пакета; обычно это означает, что спецификация пакета не может содержать указанный символ. Имена портов, триплетов и функций могут содержать строчные буквы, цифры и дефисы.", + "ParseQualifiedSpecifierNotEof": "expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hyphens.", "ParseQualifiedSpecifierNotEofSquareBracket": "ожидался конец ввода при анализе спецификации пакета; может быть, вы хотели вместо этого указать {version_spec}?", + "ParseTripletNotEof": "Invalid triplet name. Triplet names are all lowercase alphanumeric+hyphens.", "PathMustBeAbsolute": "Значение переменной среды X_VCPKG_REGISTRIES_CACHE не является абсолютным: {path}", "PerformingPostBuildValidation": "Выполнение проверки после сборки", "PortBugBinDirExists": "${{CURRENT_PACKAGES_DIR}}/{path} существует, но не должен находиться в статической сборке. Чтобы скрыть это сообщение, добавьте set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled)", diff --git a/locales/messages.tr.json b/locales/messages.tr.json index 1a9120049e..7b221e9031 100644 --- a/locales/messages.tr.json +++ b/locales/messages.tr.json @@ -68,6 +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ş.", + "AddVersionPortVersionShouldBeGone": "In {package_name}, {version} is completely new version, so the \"port-version\" field should be removed. Remove \"port-version\", commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", + "AddVersionPortVersionShouldBeOneMore": "In {package_name}, the current \"port-version\" for {version} is {count}, so the next added \"port-version\" should be {expected_version}, but the port declares \"port-version\" {actual_version}. Change \"port-version\" to {expected_version}, commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", "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", @@ -854,13 +856,14 @@ "ParagraphExpectedColonAfterField": "alan adından sonra ':' bekleniyor", "ParagraphExpectedFieldName": "alan adı bekleniyor", "ParagraphUnexpectedEndOfLine": "beklenmeyen satır sonu, boş satırı uzatmak için \" .\" kullanın", - "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).", + "ParseFeatureNameError": "\"{package_name}\" is not a valid feature name. Feature names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", + "ParseIdentifierError": "\"{value}\" is not a valid identifier. Identifiers must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", + "ParsePackageNameError": "\"{package_name}\" is not a valid package name. Package names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", + "ParsePackageNameNotEof": "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+hyphens and not reserved (see {url} for more information).", "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.", + "ParseQualifiedSpecifierNotEof": "expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hyphens.", "ParseQualifiedSpecifierNotEofSquareBracket": "bir paket belirtimini ayrıştıran giriş sonu bekleniyordu; Aslında şunu mu demek istediniz: {version_spec}?", + "ParseTripletNotEof": "Invalid triplet name. Triplet names are all lowercase alphanumeric+hyphens.", "PathMustBeAbsolute": "X_VCPKG_REGISTRIES_CACHE ortam değişkeninin değeri mutlak değil: {path}", "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", diff --git a/locales/messages.zh-Hans.json b/locales/messages.zh-Hans.json index 24af636349..351ff7a7d5 100644 --- a/locales/messages.zh-Hans.json +++ b/locales/messages.zh-Hans.json @@ -68,6 +68,8 @@ "AddVersionPortFilesShaChanged": "{package_name} 的已签入文件已更改,但版本未更新", "AddVersionPortFilesShaUnchanged": "{package_name} 的已签入文件与版本 {version} 没有更改", "AddVersionPortHasImproperFormat": "{package_name} 格式不正确", + "AddVersionPortVersionShouldBeGone": "In {package_name}, {version} is completely new version, so the \"port-version\" field should be removed. Remove \"port-version\", commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", + "AddVersionPortVersionShouldBeOneMore": "In {package_name}, the current \"port-version\" for {version} is {count}, so the next added \"port-version\" should be {expected_version}, but the port declares \"port-version\" {actual_version}. Change \"port-version\" to {expected_version}, commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", "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} 存在未提交的更改", @@ -854,13 +856,14 @@ "ParagraphExpectedColonAfterField": "字段名称后应为 \":\"", "ParagraphExpectedFieldName": "应为域名", "ParagraphUnexpectedEndOfLine": "意外行尾,要跨越空白行,请使用 \" .\"", - "ParseFeatureNameError": "“{package_name}”不是有效的功能名称。功能名称必须由小写字母数字字符和连字符组成,且不得为预留值(有关详细信息,请参阅 {url})。", - "ParseIdentifierError": "\"{value}\" 不是有效的标识符。标识符必须由小写字母数字字符和连字符组成,且不得为预留值(有关详细信息,请参阅 {url})。", - "ParsePackageNameError": "“{package_name}”不是有效的包名称。包名称必须由小写字母数字字符和连字符组成,且不得为预留值(有关详细信息,请参阅 {url})。", - "ParsePackageNameNotEof": "预期输入末尾分析包名称;这通常意味着端口名称中不允许使用所指字符。端口名称全部为小写字母数字 + 连字符且不是保留内容(有关详细信息,请参阅 {url})。", + "ParseFeatureNameError": "\"{package_name}\" is not a valid feature name. Feature names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", + "ParseIdentifierError": "\"{value}\" is not a valid identifier. Identifiers must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", + "ParsePackageNameError": "\"{package_name}\" is not a valid package name. Package names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", + "ParsePackageNameNotEof": "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+hyphens and not reserved (see {url} for more information).", "ParsePackagePatternError": "“{package_name}”不是有效的包模式。包模式只能使用一个通配符(*),并且它必须是模式中的最后一个字符(有关详细信息,请参阅 {url})。", - "ParseQualifiedSpecifierNotEof": "预期输入末尾分析包规范;这通常意味着指示的字符不允许出现在包规范中。端口、三元组和功能名称均为小写字母数字 + 连字符。", + "ParseQualifiedSpecifierNotEof": "expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hyphens.", "ParseQualifiedSpecifierNotEofSquareBracket": "预期输入末尾分析包规范;你是否指的是 {version_spec}?", + "ParseTripletNotEof": "Invalid triplet name. Triplet names are all lowercase alphanumeric+hyphens.", "PathMustBeAbsolute": "环境变量 X_VCPKG_REGISTRIES_CACHE 的值不是绝对值: {path}", "PerformingPostBuildValidation": "正在执行生成后验证", "PortBugBinDirExists": "存在 ${{CURRENT_PACKAGES_DIR}}/{path},但它不应在静态生成中。若要抑制此消息,请添加 set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled)", diff --git a/locales/messages.zh-Hant.json b/locales/messages.zh-Hant.json index 52b88bb3ed..046221c7a1 100644 --- a/locales/messages.zh-Hant.json +++ b/locales/messages.zh-Hant.json @@ -68,6 +68,8 @@ "AddVersionPortFilesShaChanged": "{package_name} 的簽入檔案已變更,但版本未更新", "AddVersionPortFilesShaUnchanged": "{package_name} 的簽入檔案與版本 {version} 為不變的", "AddVersionPortHasImproperFormat": "{package_name} 的格式不正確", + "AddVersionPortVersionShouldBeGone": "In {package_name}, {version} is completely new version, so the \"port-version\" field should be removed. Remove \"port-version\", commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", + "AddVersionPortVersionShouldBeOneMore": "In {package_name}, the current \"port-version\" for {version} is {count}, so the next added \"port-version\" should be {expected_version}, but the port declares \"port-version\" {actual_version}. Change \"port-version\" to {expected_version}, commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", "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} 有未承諾的變更", @@ -854,13 +856,14 @@ "ParagraphExpectedColonAfterField": "欄位名稱後面必須要有 ':'", "ParagraphExpectedFieldName": "必須要有欄位名稱", "ParagraphUnexpectedEndOfLine": "非預期的行尾,若要跨空白行,請使用 \" .\"", - "ParseFeatureNameError": "\"{package_name}\" 並非有效的功能名稱。功能名稱必須是小寫英數字元+連字號,且未保留 (如需詳細資訊,請參閱 {url})", - "ParseIdentifierError": "\"{value}\" 並非有效的識別碼。識別碼必須是小寫英數字元+連字號,且未保留 (如需詳細資訊,請參閱 {url})。", - "ParsePackageNameError": "\"{package_name}\" 並非有效的套件名稱。套件名稱必須是小寫英數字元+連字號,且未保留 (如需詳細資訊,請參閱 {url})。", - "ParsePackageNameNotEof": "預期輸入剖析套件名稱的結尾; 這通常表示指示的字元不能位於連接埠名稱中。連接埠名稱都必須是小寫英數字元+連字號,且未保留 (如需詳細資訊,請參閱 {url})。", + "ParseFeatureNameError": "\"{package_name}\" is not a valid feature name. Feature names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", + "ParseIdentifierError": "\"{value}\" is not a valid identifier. Identifiers must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", + "ParsePackageNameError": "\"{package_name}\" is not a valid package name. Package names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", + "ParsePackageNameNotEof": "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+hyphens and not reserved (see {url} for more information).", "ParsePackagePatternError": "\"{package_name}\" 並非有效的套件模式。套件模式僅可使用一個萬用字元 (*),且其必須是模式中的最後一個字元 (如需詳細資訊,請參閱 {url})。", - "ParseQualifiedSpecifierNotEof": "預期輸入剖析套件規格的結尾; 這通常表示指示的字元不能位於套件規格中。連接埠、三元組和功能名稱都必須是小寫英數字元+連字號。", + "ParseQualifiedSpecifierNotEof": "expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hyphens.", "ParseQualifiedSpecifierNotEofSquareBracket": "預期輸入剖析套件規格的結尾; 您是指 {version_spec} 嗎?", + "ParseTripletNotEof": "Invalid triplet name. Triplet names are all lowercase alphanumeric+hyphens.", "PathMustBeAbsolute": "環境變數 X_VCPKG_REGISTRIES_CACHE 的值不是絕對: {path}", "PerformingPostBuildValidation": "正在執行建置後驗證", "PortBugBinDirExists": "${{CURRENT_PACKAGES_DIR}}/{path} 存在,但不應在靜態組建中。若要隱藏此訊息,請新增 set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled)", From e09c0296ea37fab5ca7410a1814313d4836d781b Mon Sep 17 00:00:00 2001 From: "CSIGS@microsoft.com" Date: Thu, 3 Oct 2024 13:51:59 -0700 Subject: [PATCH 23/39] Juno: check in to juno/hb_cb3056d7-d122-4ef4-8657-e36080a7f8c6_20241002125125959. (#1504) --- src/localization/de/messages.json.lcl | 60 +++++++++++++++++----- src/localization/es/messages.json.lcl | 60 +++++++++++++++++----- src/localization/fr/messages.json.lcl | 60 +++++++++++++++++----- src/localization/ja/messages.json.lcl | 60 +++++++++++++++++----- src/localization/ko/messages.json.lcl | 60 +++++++++++++++++----- src/localization/pt-BR/messages.json.lcl | 52 ++++++++++++++++--- src/localization/ru/messages.json.lcl | 56 ++++++++++++++++---- src/localization/tr/messages.json.lcl | 60 +++++++++++++++++----- src/localization/zh-Hans/messages.json.lcl | 56 ++++++++++++++++---- 9 files changed, 424 insertions(+), 100 deletions(-) diff --git a/src/localization/de/messages.json.lcl b/src/localization/de/messages.json.lcl index 45105c0890..e8bc5136a2 100644 --- a/src/localization/de/messages.json.lcl +++ b/src/localization/de/messages.json.lcl @@ -730,6 +730,24 @@ + + + + + + + + + + + + + + + + + + @@ -8970,43 +8988,49 @@ - + - + + + + - + - + - + - + - + - + - + - + + + + @@ -9024,10 +9048,13 @@ - + - + + + + @@ -9040,6 +9067,15 @@ + + + + + + + + + diff --git a/src/localization/es/messages.json.lcl b/src/localization/es/messages.json.lcl index acb029e1fa..ba8a06da53 100644 --- a/src/localization/es/messages.json.lcl +++ b/src/localization/es/messages.json.lcl @@ -730,6 +730,24 @@ + + + + + + + + + + + + + + + + + + @@ -8970,43 +8988,49 @@ - + - + + + + - + - + - + - + - + - + - + - + + + + @@ -9024,10 +9048,13 @@ - + - + + + + @@ -9040,6 +9067,15 @@ + + + + + + + + + diff --git a/src/localization/fr/messages.json.lcl b/src/localization/fr/messages.json.lcl index 6e705a6bb3..585458bd27 100644 --- a/src/localization/fr/messages.json.lcl +++ b/src/localization/fr/messages.json.lcl @@ -730,6 +730,24 @@ + + + + + + + + + + + + + + + + + + @@ -8970,43 +8988,49 @@ - + - + + + + - + - + - + - + - + - + - + - + + + + @@ -9024,10 +9048,13 @@ - + - + + + + @@ -9040,6 +9067,15 @@ + + + + + + + + + diff --git a/src/localization/ja/messages.json.lcl b/src/localization/ja/messages.json.lcl index 9dccf8111c..9ca6b14dc6 100644 --- a/src/localization/ja/messages.json.lcl +++ b/src/localization/ja/messages.json.lcl @@ -730,6 +730,24 @@ + + + + + + + + + + + + + + + + + + @@ -8973,43 +8991,49 @@ - + - + + + + - + - + - + - + - + - + - + - + + + + @@ -9027,10 +9051,13 @@ - + - + + + + @@ -9043,6 +9070,15 @@ + + + + + + + + + diff --git a/src/localization/ko/messages.json.lcl b/src/localization/ko/messages.json.lcl index 2d2d71ccd6..860ec7ef26 100644 --- a/src/localization/ko/messages.json.lcl +++ b/src/localization/ko/messages.json.lcl @@ -730,6 +730,24 @@ + + + + + + + + + + + + + + + + + + @@ -8970,43 +8988,49 @@ - + - + + + + - + - + - + - + - + - + - + - + + + + @@ -9024,10 +9048,13 @@ - + - + + + + @@ -9040,6 +9067,15 @@ + + + + + + + + + diff --git a/src/localization/pt-BR/messages.json.lcl b/src/localization/pt-BR/messages.json.lcl index b1fa2abbfb..8875b3d6e3 100644 --- a/src/localization/pt-BR/messages.json.lcl +++ b/src/localization/pt-BR/messages.json.lcl @@ -730,6 +730,24 @@ + + + + + + + + + + + + + + + + + + @@ -8970,43 +8988,49 @@ - + + + + - + - + - + - + - + - + + + + @@ -9024,10 +9048,13 @@ - + + + + @@ -9040,6 +9067,15 @@ + + + + + + + + + diff --git a/src/localization/ru/messages.json.lcl b/src/localization/ru/messages.json.lcl index cb1775ee6e..99c030557d 100644 --- a/src/localization/ru/messages.json.lcl +++ b/src/localization/ru/messages.json.lcl @@ -730,6 +730,24 @@ + + + + + + + + + + + + + + + + + + @@ -8973,43 +8991,49 @@ - + - + + + + - + - + - + - + - + - + - + + + + @@ -9027,10 +9051,13 @@ - + + + + @@ -9043,6 +9070,15 @@ + + + + + + + + + diff --git a/src/localization/tr/messages.json.lcl b/src/localization/tr/messages.json.lcl index 2cbad230eb..f1212f3246 100644 --- a/src/localization/tr/messages.json.lcl +++ b/src/localization/tr/messages.json.lcl @@ -730,6 +730,24 @@ + + + + + + + + + + + + + + + + + + @@ -8973,43 +8991,49 @@ - + - + + + + - + - + - + - + - + - + - + - + + + + @@ -9027,10 +9051,13 @@ - + - + + + + @@ -9043,6 +9070,15 @@ + + + + + + + + + diff --git a/src/localization/zh-Hans/messages.json.lcl b/src/localization/zh-Hans/messages.json.lcl index 240bab4583..7aff9f5e98 100644 --- a/src/localization/zh-Hans/messages.json.lcl +++ b/src/localization/zh-Hans/messages.json.lcl @@ -730,6 +730,24 @@ + + + + + + + + + + + + + + + + + + @@ -8973,43 +8991,49 @@ - + - + + + + - + - + - + - + - + - + - + + + + @@ -9027,10 +9051,13 @@ - + + + + @@ -9043,6 +9070,15 @@ + + + + + + + + + From 14b84e9045ef02027551100bd9aef2e9886eadac Mon Sep 17 00:00:00 2001 From: "CSIGS@microsoft.com" Date: Thu, 3 Oct 2024 13:52:14 -0700 Subject: [PATCH 24/39] Juno: check in to juno/hb_cb3056d7-d122-4ef4-8657-e36080a7f8c6_20241003125335816. (#1505) --- src/localization/cs/messages.json.lcl | 60 +++++++++++++++++++++------ src/localization/it/messages.json.lcl | 60 +++++++++++++++++++++------ src/localization/pl/messages.json.lcl | 60 +++++++++++++++++++++------ 3 files changed, 144 insertions(+), 36 deletions(-) diff --git a/src/localization/cs/messages.json.lcl b/src/localization/cs/messages.json.lcl index e41e9e817b..08456ec4b7 100644 --- a/src/localization/cs/messages.json.lcl +++ b/src/localization/cs/messages.json.lcl @@ -730,6 +730,24 @@ + + + + + + + + + + + + + + + + + + @@ -8973,43 +8991,49 @@ - + - + + + + - + - + - + - + - + - + - + - + + + + @@ -9027,10 +9051,13 @@ - + - + + + + @@ -9043,6 +9070,15 @@ + + + + + + + + + diff --git a/src/localization/it/messages.json.lcl b/src/localization/it/messages.json.lcl index 61d7880fc4..d2f227f343 100644 --- a/src/localization/it/messages.json.lcl +++ b/src/localization/it/messages.json.lcl @@ -730,6 +730,24 @@ + + + + + + + + + + + + + + + + + + @@ -8973,43 +8991,49 @@ - + - + + + + - + - + - + - + - + - + - + - + + + + @@ -9027,10 +9051,13 @@ - + - + + + + @@ -9043,6 +9070,15 @@ + + + + + + + + + diff --git a/src/localization/pl/messages.json.lcl b/src/localization/pl/messages.json.lcl index 71123566b4..98d2e8d5dc 100644 --- a/src/localization/pl/messages.json.lcl +++ b/src/localization/pl/messages.json.lcl @@ -730,6 +730,24 @@ + + + + + + + + + + + + + + + + + + @@ -8970,43 +8988,49 @@ - + - + + + + - + - + - + - + - + - + - + - + + + + @@ -9024,10 +9048,13 @@ - + - + + + + @@ -9040,6 +9067,15 @@ + + + + + + + + + From c681dfebd865b64536cf8440ee99dbd80650fb5c Mon Sep 17 00:00:00 2001 From: Embedded Bot Date: Fri, 4 Oct 2024 05:03:09 +0000 Subject: [PATCH 25/39] [localization][automated][ci skip] update locale files --- locales/messages.cs.json | 16 ++++++++-------- locales/messages.de.json | 16 ++++++++-------- locales/messages.es.json | 16 ++++++++-------- locales/messages.fr.json | 16 ++++++++-------- locales/messages.it.json | 16 ++++++++-------- locales/messages.ja.json | 16 ++++++++-------- locales/messages.ko.json | 16 ++++++++-------- locales/messages.pl.json | 16 ++++++++-------- locales/messages.pt-BR.json | 16 ++++++++-------- locales/messages.ru.json | 16 ++++++++-------- locales/messages.tr.json | 16 ++++++++-------- locales/messages.zh-Hans.json | 16 ++++++++-------- 12 files changed, 96 insertions(+), 96 deletions(-) diff --git a/locales/messages.cs.json b/locales/messages.cs.json index 14de23b3da..1b884f1881 100644 --- a/locales/messages.cs.json +++ b/locales/messages.cs.json @@ -68,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ý.", - "AddVersionPortVersionShouldBeGone": "In {package_name}, {version} is completely new version, so the \"port-version\" field should be removed. Remove \"port-version\", commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", - "AddVersionPortVersionShouldBeOneMore": "In {package_name}, the current \"port-version\" for {version} is {count}, so the next added \"port-version\" should be {expected_version}, but the port declares \"port-version\" {actual_version}. Change \"port-version\" to {expected_version}, commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", + "AddVersionPortVersionShouldBeGone": "V názvu {package_name} je {version} zcela nová verze, takže pole port-version by mělo být odebráno. Odeberte pole port-version, potvrďte danou změnu a zkuste to znovu. Pokud chcete tuto kontrolu přeskočit, opakujte spuštění s parametrem --skip-version-format-check.", + "AddVersionPortVersionShouldBeOneMore": "Aktuální hodnota port-version v názvu {package_name} pro {version} je {count}, takže další přidaná hodnota port-version by měla být {expected_version}, ale port deklaruje port-version {actual_version}. Změňte hodnotu pole port-version na {expected_version}, potvrďte tuto změnu a zkuste to znovu. Pokud chcete tuto kontrolu přeskočit, opakujte spuštění s parametrem --skip-version-format-check.", "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.", @@ -856,14 +856,14 @@ "ParagraphExpectedColonAfterField": "za názvem pole se očekával znak :", "ParagraphExpectedFieldName": "očekával se název pole", "ParagraphUnexpectedEndOfLine": "neočekávaný konec řádku, pokud chcete použít prázdný řádek, použijte znak .", - "ParseFeatureNameError": "\"{package_name}\" is not a valid feature name. Feature names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", - "ParseIdentifierError": "\"{value}\" is not a valid identifier. Identifiers must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", - "ParsePackageNameError": "\"{package_name}\" is not a valid package name. Package names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", - "ParsePackageNameNotEof": "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+hyphens and not reserved (see {url} for more information).", + "ParseFeatureNameError": "{package_name} není platný název funkce. Názvy funkcí musí obsahovat malé alfanumerické znaky a spojovníky a nesmí být vyhrazené (další informace najdete na adrese {url}).", + "ParseIdentifierError": "{value} není platný identifikátor. Identifikátory musí obsahovat malé alfanumerické znaky a spojovní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í obsahovat malé alfanumerické znaky a spojovní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 a 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": "expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hyphens.", + "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ů, trojic 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}?", - "ParseTripletNotEof": "Invalid triplet name. Triplet names are all lowercase alphanumeric+hyphens.", + "ParseTripletNotEof": "Neplatný název trojice. Názvy trojic obsahují pouze malé alfanumerické znaky a spojovníky.", "PathMustBeAbsolute": "Hodnota proměnné prostředí X_VCPKG_REGISTRIES_CACHE není absolutní: {path}", "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)", diff --git a/locales/messages.de.json b/locales/messages.de.json index b68b343e0e..67f1154161 100644 --- a/locales/messages.de.json +++ b/locales/messages.de.json @@ -68,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", - "AddVersionPortVersionShouldBeGone": "In {package_name}, {version} is completely new version, so the \"port-version\" field should be removed. Remove \"port-version\", commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", - "AddVersionPortVersionShouldBeOneMore": "In {package_name}, the current \"port-version\" for {version} is {count}, so the next added \"port-version\" should be {expected_version}, but the port declares \"port-version\" {actual_version}. Change \"port-version\" to {expected_version}, commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", + "AddVersionPortVersionShouldBeGone": "In {package_name} ist {version} eine völlig neue Version, daher sollte das Feld „port-version“ entfernt werden. Entfernen Sie „port-version“, committen Sie diese Änderung, und versuchen Sie es noch mal. Führen Sie zum Überspringen dieser Überprüfung erneut „--skip-version-format-check“ aus.", + "AddVersionPortVersionShouldBeOneMore": "In {package_name} ist die aktuelle „Portversion“ für {version} {count}, daher sollte die nächste hinzugefügte „port-version“ {expected_version} sein, aber der Port deklariert „port-version“ {actual_version}. Ändern Sie „port-version“ in {expected_version}, committen Sie diese Änderung, und versuchen Sie es noch mal. Führen Sie zum Überspringen dieser Überprüfung erneut „--skip-version-format-check“ aus.", "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", @@ -856,14 +856,14 @@ "ParagraphExpectedColonAfterField": "„:“ nach Feldname erwartet", "ParagraphExpectedFieldName": "erwarteter Feldname", "ParagraphUnexpectedEndOfLine": "unerwartetes Zeilenende. Verwenden Sie als span-Element eine leere Zeile mithilfe von „ “.", - "ParseFeatureNameError": "\"{package_name}\" is not a valid feature name. Feature names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", - "ParseIdentifierError": "\"{value}\" is not a valid identifier. Identifiers must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", - "ParsePackageNameError": "\"{package_name}\" is not a valid package name. Package names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", - "ParsePackageNameNotEof": "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+hyphens and not reserved (see {url} for more information).", + "ParseFeatureNameError": "„{package_name}“ ist kein gültiger Featurename. Featurenamen müssen alphanumerisch+Bindestriche in Kleinbuchstaben sein und dürfen nicht reserviert sein (weitere Informationen finden Sie unter {url}).", + "ParseIdentifierError": "„{value}“ ist kein gültiger Bezeichner. Bezeichner müssen alphanumerisch+Bindestriche in Kleinbuchstaben sein und dürfen nicht reserviert sein (weitere Informationen finden Sie unter {url}).", + "ParsePackageNameError": "„{package_name}“ ist kein gültiger Paketname. Paketnamen müssen alphanumerisch+Bindestriche in Kleinbuchstaben sein 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 müssen alphanumerisch+Bindestriche in Kleinbuchstaben sein 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": "expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hyphens.", + "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 müssen alphanumerisch+Bindestriche in Kleinbuchstaben sein.", "ParseQualifiedSpecifierNotEofSquareBracket": "Es wurde das Ende der Eingabeanalyse einer Paketspezifikation erwartet. Meinten Sie stattdessen {version_spec}?", - "ParseTripletNotEof": "Invalid triplet name. Triplet names are all lowercase alphanumeric+hyphens.", + "ParseTripletNotEof": "Ungültiger Tripletname. Tripletnamen müssen alphanumerisch+Bindestriche in Kleinbuchstaben sein.", "PathMustBeAbsolute": "Der Wert der Umgebungsvariablen X_VCPKG_REGISTRIES_CACHE ist nicht absolut: {path}", "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.", diff --git a/locales/messages.es.json b/locales/messages.es.json index f6e6ef9688..2f9274444f 100644 --- a/locales/messages.es.json +++ b/locales/messages.es.json @@ -68,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.", - "AddVersionPortVersionShouldBeGone": "In {package_name}, {version} is completely new version, so the \"port-version\" field should be removed. Remove \"port-version\", commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", - "AddVersionPortVersionShouldBeOneMore": "In {package_name}, the current \"port-version\" for {version} is {count}, so the next added \"port-version\" should be {expected_version}, but the port declares \"port-version\" {actual_version}. Change \"port-version\" to {expected_version}, commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", + "AddVersionPortVersionShouldBeGone": "En {package_name}, {version} es una versión completamente nueva, por lo que se debe quitar el campo \"port-version\". Quite \"port-version\", confirme ese cambio e inténtelo de nuevo. Para omitir esta comprobación, vuelva a ejecutar con --skip-version-format-check.", + "AddVersionPortVersionShouldBeOneMore": "En {package_name}, el valor actual de \"port-version\" para {version} es {count}, por lo que el siguiente \"port-version\" agregado debe ser {expected_version}, pero el puerto declara \"port-version\" {actual_version}. Cambie \"port-version\" a {expected_version}, confirme ese cambio e inténtelo de nuevo. Para omitir esta comprobación, vuelva a ejecutar con --skip-version-format-check.", "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}", @@ -856,14 +856,14 @@ "ParagraphExpectedColonAfterField": "se esperaba ':' después del nombre de campo", "ParagraphExpectedFieldName": "nombre de campo esperado", "ParagraphUnexpectedEndOfLine": "final de línea inesperado, para abarcar una línea en blanco use \" .\"", - "ParseFeatureNameError": "\"{package_name}\" is not a valid feature name. Feature names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", - "ParseIdentifierError": "\"{value}\" is not a valid identifier. Identifiers must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", - "ParsePackageNameError": "\"{package_name}\" is not a valid package name. Package names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", - "ParsePackageNameNotEof": "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+hyphens and not reserved (see {url} for more information).", + "ParseFeatureNameError": "\"{package_name}\" no es un nombre de característica válido. Los nombres de característica deben ser alfanuméricos y guiones en minúsculas y no deben estar reservados (consulte {url} para obtener más información).", + "ParseIdentifierError": "\"{value}\" no es un identificador válido. Los identificadores deben ser alfanuméricos y guiones en minúsculas y no deben estar reservados (consulte {url} para obtener más información).", + "ParsePackageNameError": "\"{package_name}\" no es un nombre de paquete válido. Los nombres de paquete deben ser alfanuméricos y guiones en minúsculas y no deben 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. Los nombres de puerto son alfanuméricos y guiones en minúsculas y no están 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": "expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hyphens.", + "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 todos alfanuméricos y guiones en minúsculas.", "ParseQualifiedSpecifierNotEofSquareBracket": "se esperaba el final de la entrada analizando una especificación de paquete; ¿Quería decir {version_spec} en su lugar?", - "ParseTripletNotEof": "Invalid triplet name. Triplet names are all lowercase alphanumeric+hyphens.", + "ParseTripletNotEof": "Nombre de triplete no válido. Todos los nombres de triplete son alfanuméricos y guiones en minúsculas.", "PathMustBeAbsolute": "El valor de la variable de entorno X_VCPKG_REGISTRIES_CACHE no es absoluto: {path}", "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)", diff --git a/locales/messages.fr.json b/locales/messages.fr.json index 42f1d31408..c9a099dff6 100644 --- a/locales/messages.fr.json +++ b/locales/messages.fr.json @@ -68,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.", - "AddVersionPortVersionShouldBeGone": "In {package_name}, {version} is completely new version, so the \"port-version\" field should be removed. Remove \"port-version\", commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", - "AddVersionPortVersionShouldBeOneMore": "In {package_name}, the current \"port-version\" for {version} is {count}, so the next added \"port-version\" should be {expected_version}, but the port declares \"port-version\" {actual_version}. Change \"port-version\" to {expected_version}, commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", + "AddVersionPortVersionShouldBeGone": "Dans {package_name}, {version} est une version complètement nouvelle, donc le champ « port-version » doit être supprimé. Supprimez « port-version », validez cette modification et réessayez. Pour ignorer cette vérification, réexécutez avec --skip-version-format-check .", + "AddVersionPortVersionShouldBeOneMore": "Dans {package_name}, la « version de port » actuelle pour {version} est {count}, donc la prochaine « version de port » ajoutée devrait être {expected_version}, mais le port déclare la « version de port » {actual_version}. Remplacez « port-version » par {expected_version}, validez cette modification et réessayez. Pour ignorer cette vérification, réexécutez avec --skip-version-format-check .", "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}.", @@ -856,14 +856,14 @@ "ParagraphExpectedColonAfterField": "':' attendu après le nom du champ", "ParagraphExpectedFieldName": "nom de champ attendu", "ParagraphUnexpectedEndOfLine": "fin de ligne inattendue, pour couvrir une ligne vide, utilisez « . »", - "ParseFeatureNameError": "\"{package_name}\" is not a valid feature name. Feature names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", - "ParseIdentifierError": "\"{value}\" is not a valid identifier. Identifiers must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", - "ParsePackageNameError": "\"{package_name}\" is not a valid package name. Package names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", - "ParsePackageNameNotEof": "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+hyphens and not reserved (see {url} for more information).", + "ParseFeatureNameError": "« {package_name} » n'est pas un nom de fonctionnalité valide. Les noms de fonctionnalités doivent être alphanumériques minuscules + tirets et non réservés (voir {url} pour plus d'informations).", + "ParseIdentifierError": "\"{value}\" n'est pas un identifiant valide. Les identifiants doivent être alphanumériques minuscules + tirets 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 packages doivent être alphanumériques minuscules + tirets et non réservés (voir {url} pour plus d'informations).", + "ParsePackageNameNotEof": "attend la fin de l'analyse d'entrée d'un nom de package ; cela signifie généralement que le caractère indiqué n'est pas autorisé à figurer dans un nom de port. Les noms de port sont tous alphanumériques minuscules + tirets et ne sont pas réservés (voir {url} pour 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": "expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hyphens.", + "ParseQualifiedSpecifierNotEof": "attend la fin de l'analyse d'entrée d'une spécification de package ; cela signifie généralement que le caractère indiqué n'est pas autorisé à figurer dans une spécification de package. Les noms de port, de triplet et de fonctionnalité sont tous des caractères alphanumériques minuscules + tirets.", "ParseQualifiedSpecifierNotEofSquareBracket": "fin attendue d’entrée analysant une spécification de package. Vouliez-vous dire {version_spec} à la place ?", - "ParseTripletNotEof": "Invalid triplet name. Triplet names are all lowercase alphanumeric+hyphens.", + "ParseTripletNotEof": "Nom de triplet non valide. Les noms des triplets sont tous des lettres minuscules alphanumériques + tirets.", "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", "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é)", diff --git a/locales/messages.it.json b/locales/messages.it.json index d9a823d7d7..e71a92d8b5 100644 --- a/locales/messages.it.json +++ b/locales/messages.it.json @@ -68,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", - "AddVersionPortVersionShouldBeGone": "In {package_name}, {version} is completely new version, so the \"port-version\" field should be removed. Remove \"port-version\", commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", - "AddVersionPortVersionShouldBeOneMore": "In {package_name}, the current \"port-version\" for {version} is {count}, so the next added \"port-version\" should be {expected_version}, but the port declares \"port-version\" {actual_version}. Change \"port-version\" to {expected_version}, commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", + "AddVersionPortVersionShouldBeGone": "In {package_name}, la versione di {version} è completamente nuova, di conseguenza è necessario rimuovere il campo \"port-version\". Rimuovere \"port-version\", eseguire il commit della modifica e riprovare. Per ignorare questo controllo, eseguire di nuovo con --skip-version-format-check.", + "AddVersionPortVersionShouldBeOneMore": "In {package_name}, è {count} l'impostazione \"port-version\" corrente per {version}, quindi la successiva \"port-version\" aggiunta deve essere {expected_version}, ma la porta dichiara \"port-version\" {actual_version}. Modificare \"port-version\" in {expected_version}, eseguire il commit della modifica e riprovare. Per ignorare questo controllo, eseguire di nuovo con --skip-version-format-check.", "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}", @@ -856,14 +856,14 @@ "ParagraphExpectedColonAfterField": "previsto ':' dopo il nome del campo", "ParagraphExpectedFieldName": "previsto un nome di campo", "ParagraphUnexpectedEndOfLine": "fine riga imprevista, per estendere una riga vuota, usare \" .\"", - "ParseFeatureNameError": "\"{package_name}\" is not a valid feature name. Feature names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", - "ParseIdentifierError": "\"{value}\" is not a valid identifier. Identifiers must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", - "ParsePackageNameError": "\"{package_name}\" is not a valid package name. Package names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", - "ParsePackageNameNotEof": "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+hyphens and not reserved (see {url} for more information).", + "ParseFeatureNameError": "\"{package_name}\" non è un nome di funzionalità valido. I nomi delle funzionalità devono essere alfanumerici minuscoli + trattini 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 (per altre informazioni, vedere {url}).", + "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 + trattini 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": "expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hyphens.", + "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 + trattini.", "ParseQualifiedSpecifierNotEofSquareBracket": "è prevista la fine dell'analisi dell'input di una specifica del pacchetto; si intendeva invece {version_spec}?", - "ParseTripletNotEof": "Invalid triplet name. Triplet names are all lowercase alphanumeric+hyphens.", + "ParseTripletNotEof": "Il nome della tripletta non è valido. I nomi delle triple sono tutti caratteri alfanumerici minuscoli + trattini.", "PathMustBeAbsolute": "Il valore della variabile di ambiente X_VCPKG_REGISTRIES_CACHE non è assoluto: {path}", "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)", diff --git a/locales/messages.ja.json b/locales/messages.ja.json index 9a4c722079..46a70799a7 100644 --- a/locales/messages.ja.json +++ b/locales/messages.ja.json @@ -68,8 +68,8 @@ "AddVersionPortFilesShaChanged": "{package_name} のチェックイン ファイルが変更されましたが、バージョンは更新されませんでした", "AddVersionPortFilesShaUnchanged": "{package_name} のチェックイン ファイルはバージョン {version} から変更されていません", "AddVersionPortHasImproperFormat": "{package_name} が正しく書式設定されていません", - "AddVersionPortVersionShouldBeGone": "In {package_name}, {version} is completely new version, so the \"port-version\" field should be removed. Remove \"port-version\", commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", - "AddVersionPortVersionShouldBeOneMore": "In {package_name}, the current \"port-version\" for {version} is {count}, so the next added \"port-version\" should be {expected_version}, but the port declares \"port-version\" {actual_version}. Change \"port-version\" to {expected_version}, commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", + "AddVersionPortVersionShouldBeGone": "{package_name} では、{version} は完全に新しいバージョンであるため、\"port-version\" フィールドは削除する必要があります。\"port-version\" を削除し、その変更をコミットしてから、もう一度お試しください。このチェックをスキップするには、--skip-version-format-check を指定して再実行してください。", + "AddVersionPortVersionShouldBeOneMore": "{package_name} では、{version} の現在の \"port-version\" が {count} であるため、次に追加される \"port-version\" は {expected_version} であるはずですが、ポートでは \"port-version\" {actual_version} が宣言されています。\"port-version\" を {expected_version} に変更し、その変更をコミットしてから、もう一度お試しください。このチェックをスキップするには、--skip-version-format-check を指定して再実行してください。", "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} にコミットされていない変更があります", @@ -856,14 +856,14 @@ "ParagraphExpectedColonAfterField": "フィールド名の後に ':' が必要です", "ParagraphExpectedFieldName": "フィールド名が必要です", "ParagraphUnexpectedEndOfLine": "予期しない行の終わりです。空白行にまたがる場合は \" .\" を使用します", - "ParseFeatureNameError": "\"{package_name}\" is not a valid feature name. Feature names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", - "ParseIdentifierError": "\"{value}\" is not a valid identifier. Identifiers must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", - "ParsePackageNameError": "\"{package_name}\" is not a valid package name. Package names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", - "ParsePackageNameNotEof": "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+hyphens and not reserved (see {url} for more information).", + "ParseFeatureNameError": "\"{package_name}\" は有効な機能名ではありません。機能名には小文字の英数字とハイフンのみを使用する必要があり、また、予約されていないことが必須になります (詳細については、{url} を参照してください)。", + "ParseIdentifierError": "\"{value}\" は有効な識別子ではありません。識別子には小文字の英数字とハイフンのみを使用する必要があり、また、予約されていないことが必須になります (詳細については、{url} を参照してください)。", + "ParsePackageNameError": "\"{package_name}\" は有効なパッケージ名ではありません。パッケージ名には小文字の英数字とハイフンのみを使用する必要があり、また、予約されていないことが必須になります (詳細については、{url} を参照してください)。", + "ParsePackageNameNotEof": "パッケージ名の入力解析の終了が必要です。これは通常、指定された文字がポート名に使用できないことを意味します。ポート名には小文字の英数字とハイフンのみを使用する必要があり、また、予約されていないことが必須になります (詳細については、{url} を参照してください)。", "ParsePackagePatternError": "\"{package_name}\" は有効なパッケージ パターンではありません。パッケージ パターンではワイルドカード文字 (*) を 1 つだけ使用し、それをそのパターンの最後の文字にする必要があります (詳細については、{url} を参照してください)。", - "ParseQualifiedSpecifierNotEof": "expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hyphens.", + "ParseQualifiedSpecifierNotEof": "パッケージ仕様の入力解析の終了が必要です。これは通常、指定された文字がパッケージ仕様で使用できないことを意味します。ポート名、トリプレット名、機能名は小文字の英数字とハイフンのみです。", "ParseQualifiedSpecifierNotEofSquareBracket": "パッケージ仕様の入力解析の終了が必要です。代わりに {version_spec} ですか?", - "ParseTripletNotEof": "Invalid triplet name. Triplet names are all lowercase alphanumeric+hyphens.", + "ParseTripletNotEof": "トリプレット名が無効です。トリプレット名は小文字の英数字とハイフンのみです。", "PathMustBeAbsolute": "環境変数 X_VCPKG_REGISTRIES_CACHE の値が絶対ではありません: {path}", "PerformingPostBuildValidation": "ビルド後の検証の実行", "PortBugBinDirExists": "${{CURRENT_PACKAGES_DIR}}/{path} が存在しますが、静的ビルドには含めてはなりません。このメッセージを非表示にするには、set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled) を追加します", diff --git a/locales/messages.ko.json b/locales/messages.ko.json index a46a71814f..2a83e79da9 100644 --- a/locales/messages.ko.json +++ b/locales/messages.ko.json @@ -68,8 +68,8 @@ "AddVersionPortFilesShaChanged": "{package_name}에 대해 체크 인된 파일이 변경되었지만 버전이 업데이트되지 않았습니다.", "AddVersionPortFilesShaUnchanged": "{package_name}에 대한 체크 인 파일이 버전 {version}에서 변경되지 않았습니다.", "AddVersionPortHasImproperFormat": "{package_name}의 형식이 잘못되었음", - "AddVersionPortVersionShouldBeGone": "In {package_name}, {version} is completely new version, so the \"port-version\" field should be removed. Remove \"port-version\", commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", - "AddVersionPortVersionShouldBeOneMore": "In {package_name}, the current \"port-version\" for {version} is {count}, so the next added \"port-version\" should be {expected_version}, but the port declares \"port-version\" {actual_version}. Change \"port-version\" to {expected_version}, commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", + "AddVersionPortVersionShouldBeGone": "{package_name}에서 {version}은(는) 완전히 새로운 버전이므로 \"포트 버전\" 필드를 제거해야 합니다. \"포트 버전\"을 제거하고 변경 내용을 커밋한 후 다시 시도하십시오. 이 검사를 건너뛰려면 --skip-version-format-check를 사용하여 를 다시 실행합니다.", + "AddVersionPortVersionShouldBeOneMore": "{package_name}에서 {version}의 현재 \"port-version\"은 {count}이므로 다음으로 추가된 \"포트 버전\"은 {expected_version}이어야 하지만 포트는 \"포트 버전\" {actual_version}을(를) 선언합니다. \"포트 버전\"을 {expected_version}(으)로 변경하고 변경 내용을 커밋한 후 다시 시도하세요. 이 검사를 건너뛰려면 --skip-version-format-check를 사용하여 를 다시 실행합니다.", "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}에 대해 커밋되지 않은 변경 내용이 있습니다.", @@ -856,14 +856,14 @@ "ParagraphExpectedColonAfterField": "필드 이름 뒤에 ':'이 필요합니다.", "ParagraphExpectedFieldName": "필드 이름이 필요합니다.", "ParagraphUnexpectedEndOfLine": "예기치 않은 줄의 끝입니다. 빈 줄을 포괄하려면 \" .\"를 사용하세요.", - "ParseFeatureNameError": "\"{package_name}\" is not a valid feature name. Feature names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", - "ParseIdentifierError": "\"{value}\" is not a valid identifier. Identifiers must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", - "ParsePackageNameError": "\"{package_name}\" is not a valid package name. Package names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", - "ParsePackageNameNotEof": "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+hyphens and not reserved (see {url} for more information).", + "ParseFeatureNameError": "\"{package_name}\"은(는) 올바른 기능 이름이 아닙니다. 기능 이름은 소문자 영숫자+하이픈이어야 하며 예약되지 않아야 합니다(자세한 내용은 {url} 참조).", + "ParseIdentifierError": "\"{value}\"은(는) 올바른 식별자가 아닙니다. 식별자는 소문자 영숫자+하이픈이어야 하며 예약되지 않아야 합니다(자세한 내용은 {url} 참조).", + "ParsePackageNameError": "\"{package_name}\"은(는) 올바른 패키지 이름이 아닙니다. 패키지 이름은 소문자 영숫자+하이픈이어야 하며 예약되지 않아야 합니다(자세한 내용은 {url} 참조).", + "ParsePackageNameNotEof": "패키지 이름을 구문 분석하는 입력의 끝이 필요합니다. 즉, 일반적으로 표시된 문자가 포트 이름에 포함될 수 없습니다. 포트 이름은 모두 소문자 영숫자+하이픈이며 예약되지 않아야 합니다(자세한 내용은 {url} 참조).", "ParsePackagePatternError": "\"{package_name}\"은(는) 유효한 패키지 패턴이 아닙니다. 패키지 패턴에는 와일드카드 문자(*)를 하나만 사용해야 하며 패턴의 맨 끝에 써야 합니다(자세한 내용은 {url} 참조).", - "ParseQualifiedSpecifierNotEof": "expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hyphens.", + "ParseQualifiedSpecifierNotEof": "패키지 사양을 구문 분석하는 입력의 끝이 필요합니다. 즉, 일반적으로 표시된 문자가 패키지 사양에 포함될 수 없습니다. 포트, 삼중 및 기능 이름은 모두 소문자 영숫자+하이픈입니다.", "ParseQualifiedSpecifierNotEofSquareBracket": "패키지 사양을 구문 분석하는 입력의 끝이 필요합니다. 대신 {version_spec}을(를) 의미했나요?", - "ParseTripletNotEof": "Invalid triplet name. Triplet names are all lowercase alphanumeric+hyphens.", + "ParseTripletNotEof": "세 자리 이름이 잘못되었습니다. 세 개의 이름은 모두 소문자 영숫자+하이픈입니다.", "PathMustBeAbsolute": "환경 변수 X_VCPKG_REGISTRIES_CACHE 값이 절댓값이 아닙니다. {path}", "PerformingPostBuildValidation": "빌드 후 유효성 검사를 수행하는 중", "PortBugBinDirExists": "${{CURRENT_PACKAGES_DIR}}/{path}이(가) 존재하지만 정적 빌드에는 없어야 합니다. 이 메시지를 표시하지 않도록 설정하려면 set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled)을 추가합니다.", diff --git a/locales/messages.pl.json b/locales/messages.pl.json index 1abe650348..9a13372480 100644 --- a/locales/messages.pl.json +++ b/locales/messages.pl.json @@ -68,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", - "AddVersionPortVersionShouldBeGone": "In {package_name}, {version} is completely new version, so the \"port-version\" field should be removed. Remove \"port-version\", commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", - "AddVersionPortVersionShouldBeOneMore": "In {package_name}, the current \"port-version\" for {version} is {count}, so the next added \"port-version\" should be {expected_version}, but the port declares \"port-version\" {actual_version}. Change \"port-version\" to {expected_version}, commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", + "AddVersionPortVersionShouldBeGone": "W pakiecie {package_name} wersja {version} jest zupełnie nową wersją, dlatego należy usunąć pole „port-version”. Usuń pole „port-version”, zatwierdź tę zmianę i spróbuj ponownie. Aby pominąć to sprawdzenie, uruchom ponownie polecenie --skip-version-format-check.", + "AddVersionPortVersionShouldBeOneMore": "W pakiecie {package_name} bieżące pole „port-version” dla wersji {version} to {count}, więc następną dodaną wersją „port-version” powinna być {expected_version}, ale port deklaruje pole „port-version” o wartości {actual_version}. Zmień wartość pola „port-version” na {expected_version}, zatwierdź tę zmianę i spróbuj ponownie. Aby pominąć to sprawdzenie, uruchom ponownie polecenie --skip-version-format-check.", "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}", @@ -856,14 +856,14 @@ "ParagraphExpectedColonAfterField": "oczekiwany znak „„:\"po nazwie pola", "ParagraphExpectedFieldName": "oczekiwana nazwa pola", "ParagraphUnexpectedEndOfLine": "nieoczekiwany koniec wiersza, aby objąć pusty wiersz, użyj znaku „ .”", - "ParseFeatureNameError": "\"{package_name}\" is not a valid feature name. Feature names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", - "ParseIdentifierError": "\"{value}\" is not a valid identifier. Identifiers must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", - "ParsePackageNameError": "\"{package_name}\" is not a valid package name. Package names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", - "ParsePackageNameNotEof": "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+hyphens and not reserved (see {url} for more information).", + "ParseFeatureNameError": "„{package_name}” nie jest prawidłową nazwą funkcji. Nazwy funkcji muszą składać się z małych znaków alfanumerycznych i łączników, i nie mogą być zastrzeżone (zobacz {url}, aby uzyskać więcej informacji).", + "ParseIdentifierError": "„{value}” nie jest prawidłowym identyfikatorem. Identyfikatory muszą składać się z małych znaków alfanumerycznych i łączników, i nie mogą być zastrzeżone (zobacz {url}, aby uzyskać więcej informacji).", + "ParsePackageNameError": "„{package_name}” nie jest prawidłową nazwą pakietu. Nazwy pakietów muszą składać się z małych znaków alfanumerycznych i łączników, i nie mogą być zastrzeżone (zobacz {url}, aby uzyskać więcej informacji).", + "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 składają się z małych znaków alfanumerycznych i łączników, i nie są 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": "expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hyphens.", + "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, trypletów i funkcji składają się z małych znaków alfanumerycznych i łączników.", "ParseQualifiedSpecifierNotEofSquareBracket": "oczekiwano końca danych wejściowych analizujących specyfikację pakietu; czy zamiast tego chodziło Ci o {version_spec}?", - "ParseTripletNotEof": "Invalid triplet name. Triplet names are all lowercase alphanumeric+hyphens.", + "ParseTripletNotEof": "Nieprawidłowa nazwa trypletu. Nazwy trypletów składają się z małych znaków alfanumerycznych i łączników.", "PathMustBeAbsolute": "Wartość zmiennej środowiskowej X_VCPKG_REGISTRIES_CACHE nie jest bezwzględna: {path}", "PerformingPostBuildValidation": "-- Przeprowadzanie weryfikacji po kompilacji", "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)", diff --git a/locales/messages.pt-BR.json b/locales/messages.pt-BR.json index 713f4e66dc..1d3cfa8532 100644 --- a/locales/messages.pt-BR.json +++ b/locales/messages.pt-BR.json @@ -68,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", - "AddVersionPortVersionShouldBeGone": "In {package_name}, {version} is completely new version, so the \"port-version\" field should be removed. Remove \"port-version\", commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", - "AddVersionPortVersionShouldBeOneMore": "In {package_name}, the current \"port-version\" for {version} is {count}, so the next added \"port-version\" should be {expected_version}, but the port declares \"port-version\" {actual_version}. Change \"port-version\" to {expected_version}, commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", + "AddVersionPortVersionShouldBeGone": "Em {package_name}, {version} é uma versão completamente nova, portanto, o campo “port-version” deve ser removido. Remova \"port-version\", confirme essa alteração e tente novamente. Para ignorar essa verificação, execute novamente com --skip-version-format-check.", + "AddVersionPortVersionShouldBeOneMore": "Em {package_name}, a \"port-version\" atual para {version} é {count}, portanto, a próxima \"port-version\" adicionada deveria ser {expected_version}, mas a porta declara a \"port-version\" {actual_version}. Altere \"port-version\" para {expected_version}, confirme essa alteração e tente novamente. Para ignorar essa verificação, execute novamente com --skip-version-format-check.", "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}", @@ -856,14 +856,14 @@ "ParagraphExpectedColonAfterField": "esperado ':' após o nome do campo", "ParagraphExpectedFieldName": "nome do campo esperado", "ParagraphUnexpectedEndOfLine": "fim de linha inesperado, para abranger uma linha em branco, use \".\"", - "ParseFeatureNameError": "\"{package_name}\" is not a valid feature name. Feature names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", - "ParseIdentifierError": "\"{value}\" is not a valid identifier. Identifiers must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", - "ParsePackageNameError": "\"{package_name}\" is not a valid package name. Package names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", - "ParsePackageNameNotEof": "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+hyphens and not reserved (see {url} for more information).", + "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": "expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hyphens.", + "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}?", - "ParseTripletNotEof": "Invalid triplet name. Triplet names are all lowercase alphanumeric+hyphens.", + "ParseTripletNotEof": "Nome de tripleto inválido. Os nomes de tripletos são alfanuméricos minúsculos + hifens.", "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", "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)", diff --git a/locales/messages.ru.json b/locales/messages.ru.json index 7094b6fb02..2ebe3f0b23 100644 --- a/locales/messages.ru.json +++ b/locales/messages.ru.json @@ -68,8 +68,8 @@ "AddVersionPortFilesShaChanged": "зарегистрированные файлы для {package_name} изменились, но версия не обновлена", "AddVersionPortFilesShaUnchanged": "зарегистрированные файлы для {package_name} не изменялись с версии {version}", "AddVersionPortHasImproperFormat": "Неверный формат {package_name}", - "AddVersionPortVersionShouldBeGone": "In {package_name}, {version} is completely new version, so the \"port-version\" field should be removed. Remove \"port-version\", commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", - "AddVersionPortVersionShouldBeOneMore": "In {package_name}, the current \"port-version\" for {version} is {count}, so the next added \"port-version\" should be {expected_version}, but the port declares \"port-version\" {actual_version}. Change \"port-version\" to {expected_version}, commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", + "AddVersionPortVersionShouldBeGone": "В {package_name} {version} — это совершенно новая версия, поэтому поле \"port-version\" следует удалить. Удалите \"port-version\", зафиксируйте это изменение и повторите попытку. Чтобы пропустить эту проверку, запустите ее повторно с параметром --skip-version-format-check.", + "AddVersionPortVersionShouldBeOneMore": "В {package_name} текущая \"port-version\" для {version} — {count}, поэтому следующая добавляемая \"port-version\" должна быть {expected_version}, но порт объявляет \"port-version\" {actual_version}. Измените \"port-version\" на {expected_version}, зафиксируйте это изменение и повторите попытку. Чтобы пропустить эту проверку, запустите ее повторно с параметром --skip-version-format-check.", "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} есть незафиксированные изменения", @@ -856,14 +856,14 @@ "ParagraphExpectedColonAfterField": "требуется \":\" после имени поля", "ParagraphExpectedFieldName": "ожидаемое имя поля", "ParagraphUnexpectedEndOfLine": "непредвиденный конец строки, чтобы заполнить пустую строку, используйте \" .\"", - "ParseFeatureNameError": "\"{package_name}\" is not a valid feature name. Feature names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", - "ParseIdentifierError": "\"{value}\" is not a valid identifier. Identifiers must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", - "ParsePackageNameError": "\"{package_name}\" is not a valid package name. Package names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", - "ParsePackageNameNotEof": "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+hyphens and not reserved (see {url} for more information).", + "ParseFeatureNameError": "\"{package_name}\" не является допустимым именем компонента. Имена функций должны состоять из строчных букв, цифр и дефисов и не быть зарезервированными (для получения дополнительной информации см. {url}).", + "ParseIdentifierError": "\"{value}\" не является допустимым идентификатором. Идентификаторы должны содержать строчные буквы, цифры и дефисы и не должны быть зарезервированы (см. {url} для получения дополнительных сведений).", + "ParsePackageNameError": "\"{package_name}\" не является допустимым именем пакета. Имена пакетов должны состоять из строчных букв, цифр и дефисов и не быть зарезервированными (для получения дополнительной информации см. {url}).", + "ParsePackageNameNotEof": "ожидался конец ввода при анализе имени пакета; обычно это означает, что имя порта не может содержать указанный символ. Имена портов могут содержать только строчные буквы, цифры и дефисы и не должны быть зарезервированы (подробнее см. {url}).", "ParsePackagePatternError": "\"{package_name}\" не является допустимым шаблоном пакета. Шаблоны пакетов должны использовать только один подстановочный знак (*), который должен быть последним символом в шаблоне (см. {url} для получения дополнительных сведений).", - "ParseQualifiedSpecifierNotEof": "expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hyphens.", + "ParseQualifiedSpecifierNotEof": "ожидался конец ввода при анализе спецификации пакета; обычно это означает, что спецификация пакета не может содержать указанный символ. Имена портов, триплетов и функций могут содержать строчные буквы, цифры и дефисы.", "ParseQualifiedSpecifierNotEofSquareBracket": "ожидался конец ввода при анализе спецификации пакета; может быть, вы хотели вместо этого указать {version_spec}?", - "ParseTripletNotEof": "Invalid triplet name. Triplet names are all lowercase alphanumeric+hyphens.", + "ParseTripletNotEof": "Недопустимое имя триады. Все имена триад состоят из строчных букв, цифр и дефисов.", "PathMustBeAbsolute": "Значение переменной среды X_VCPKG_REGISTRIES_CACHE не является абсолютным: {path}", "PerformingPostBuildValidation": "Выполнение проверки после сборки", "PortBugBinDirExists": "${{CURRENT_PACKAGES_DIR}}/{path} существует, но не должен находиться в статической сборке. Чтобы скрыть это сообщение, добавьте set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled)", diff --git a/locales/messages.tr.json b/locales/messages.tr.json index 7b221e9031..a5db2c3a67 100644 --- a/locales/messages.tr.json +++ b/locales/messages.tr.json @@ -68,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ş.", - "AddVersionPortVersionShouldBeGone": "In {package_name}, {version} is completely new version, so the \"port-version\" field should be removed. Remove \"port-version\", commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", - "AddVersionPortVersionShouldBeOneMore": "In {package_name}, the current \"port-version\" for {version} is {count}, so the next added \"port-version\" should be {expected_version}, but the port declares \"port-version\" {actual_version}. Change \"port-version\" to {expected_version}, commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", + "AddVersionPortVersionShouldBeGone": "{package_name} adlı pakette, {version} sürümü tamamen yeni olduğundan \"bağlantı noktası sürümü\" alanı kaldırılmalıdır. \"bağlantı noktası sürümü\" öğesini kaldırın, bu değişikliği işleyin ve yeniden deneyin. Bu denetimi atlamak için, --skip-version-format-check parametreleriyle yeniden çalıştırın.", + "AddVersionPortVersionShouldBeOneMore": "{package_name} adlı pakette, {version} sürümü için geçerli \"bağlantı noktası-sürümü\" {count} adettir, bu nedenle eklenen sonraki \"bağlantı noktası sürümü\" {expected_version} olmalıdır, ancak bağlantı noktası {actual_version} \"bağlantı noktası-sürümü\" olarak bildirir. \"Bağlantı noktası sürümü\" değerini {expected_version} ile değiştirin, bu değişikliği işleyin ve yeniden deneyin. Bu denetimi atlamak için, --skip-version-format-check parametreleriyle yeniden çalıştırın.", "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", @@ -856,14 +856,14 @@ "ParagraphExpectedColonAfterField": "alan adından sonra ':' bekleniyor", "ParagraphExpectedFieldName": "alan adı bekleniyor", "ParagraphUnexpectedEndOfLine": "beklenmeyen satır sonu, boş satırı uzatmak için \" .\" kullanın", - "ParseFeatureNameError": "\"{package_name}\" is not a valid feature name. Feature names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", - "ParseIdentifierError": "\"{value}\" is not a valid identifier. Identifiers must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", - "ParsePackageNameError": "\"{package_name}\" is not a valid package name. Package names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", - "ParsePackageNameNotEof": "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+hyphens and not reserved (see {url} for more information).", + "ParseFeatureNameError": "\"{package_name}\" geçerli bir özellik adı değil. Özellik adları küçük alfasayısal karakterler ve kısa çizgilerden oluşmalıdır 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 küçük alfasayısal karakterler ve kısa çizgilerden oluşmalıdır 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 karakterler ve kısa çizgilerden oluşmalıdır 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 karakterler ve kısa çizgilerden oluşmalıdır 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": "expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hyphens.", + "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ü sadece küçük alfasayısal karakterler ve kısa çizgilerden oluşur.", "ParseQualifiedSpecifierNotEofSquareBracket": "bir paket belirtimini ayrıştıran giriş sonu bekleniyordu; Aslında şunu mu demek istediniz: {version_spec}?", - "ParseTripletNotEof": "Invalid triplet name. Triplet names are all lowercase alphanumeric+hyphens.", + "ParseTripletNotEof": "Geçersiz üçlü adı. Üçlü adları küçük alfasayısal karakterler ve kısa çizgilerden oluşur.", "PathMustBeAbsolute": "X_VCPKG_REGISTRIES_CACHE ortam değişkeninin değeri mutlak değil: {path}", "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", diff --git a/locales/messages.zh-Hans.json b/locales/messages.zh-Hans.json index 351ff7a7d5..ddd81a6fb2 100644 --- a/locales/messages.zh-Hans.json +++ b/locales/messages.zh-Hans.json @@ -68,8 +68,8 @@ "AddVersionPortFilesShaChanged": "{package_name} 的已签入文件已更改,但版本未更新", "AddVersionPortFilesShaUnchanged": "{package_name} 的已签入文件与版本 {version} 没有更改", "AddVersionPortHasImproperFormat": "{package_name} 格式不正确", - "AddVersionPortVersionShouldBeGone": "In {package_name}, {version} is completely new version, so the \"port-version\" field should be removed. Remove \"port-version\", commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", - "AddVersionPortVersionShouldBeOneMore": "In {package_name}, the current \"port-version\" for {version} is {count}, so the next added \"port-version\" should be {expected_version}, but the port declares \"port-version\" {actual_version}. Change \"port-version\" to {expected_version}, commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", + "AddVersionPortVersionShouldBeGone": "在 {package_name} 中,{version} 是全新的版本,因此应移除“port-version”字段。请移除“port-version”,提交更改,然后重试。若要跳过此检查,请使用 --skip-version-format-check 重新运行。", + "AddVersionPortVersionShouldBeOneMore": "在 {package_name} 中,{version} 的当前“port-version”为 {count},因此下一个添加的“port-version”应为 {expected_version},但端口声明为“port-version”{actual_version}。请将“port-version”更改为 {expected_version},提交更改,然后重试。若要跳过此检查,请使用 --skip-version-format-check 重新运行。", "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} 存在未提交的更改", @@ -856,14 +856,14 @@ "ParagraphExpectedColonAfterField": "字段名称后应为 \":\"", "ParagraphExpectedFieldName": "应为域名", "ParagraphUnexpectedEndOfLine": "意外行尾,要跨越空白行,请使用 \" .\"", - "ParseFeatureNameError": "\"{package_name}\" is not a valid feature name. Feature names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", - "ParseIdentifierError": "\"{value}\" is not a valid identifier. Identifiers must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", - "ParsePackageNameError": "\"{package_name}\" is not a valid package name. Package names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", - "ParsePackageNameNotEof": "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+hyphens and not reserved (see {url} for more information).", + "ParseFeatureNameError": "“{package_name}”不是有效的功能名称。功能名称必须为小写字母数字 + 连字符且不是保留内容(有关详细信息,请参阅 {url})。", + "ParseIdentifierError": "“{value}”不是有效的标识符。标识符必须为小写字母数字 + 连字符且不是保留内容(有关详细信息,请参阅 {url})。", + "ParsePackageNameError": "“{package_name}”不是有效的包名称。包名称必须为小写字母数字 + 连字符且不是保留内容(有关详细信息,请参阅 {url})。", + "ParsePackageNameNotEof": "预期输入末尾分析包名称;这通常意味着端口名称中不允许使用所指字符。端口名称全部为小写字母数字 + 连字符且不是保留内容(有关详细信息,请参阅 {url})。", "ParsePackagePatternError": "“{package_name}”不是有效的包模式。包模式只能使用一个通配符(*),并且它必须是模式中的最后一个字符(有关详细信息,请参阅 {url})。", - "ParseQualifiedSpecifierNotEof": "expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hyphens.", + "ParseQualifiedSpecifierNotEof": "预期输入末尾分析包规范;这通常意味着指示的字符不允许出现在包规范中。端口、三元组和功能名称均为小写字母数字 + 连字符。", "ParseQualifiedSpecifierNotEofSquareBracket": "预期输入末尾分析包规范;你是否指的是 {version_spec}?", - "ParseTripletNotEof": "Invalid triplet name. Triplet names are all lowercase alphanumeric+hyphens.", + "ParseTripletNotEof": "三元组名称无效。三元组名称均为小写字母数字 + 连字符。", "PathMustBeAbsolute": "环境变量 X_VCPKG_REGISTRIES_CACHE 的值不是绝对值: {path}", "PerformingPostBuildValidation": "正在执行生成后验证", "PortBugBinDirExists": "存在 ${{CURRENT_PACKAGES_DIR}}/{path},但它不应在静态生成中。若要抑制此消息,请添加 set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled)", From 00c55083f48558de7f2b9d9fa9690a83252ae112 Mon Sep 17 00:00:00 2001 From: Billy O'Neal Date: Wed, 9 Oct 2024 13:26:06 -0700 Subject: [PATCH 26/39] Enable extracting 7zNNNN-x64.exe with win32_extract_self_extracting_7z (#1506) --- src/vcpkg/archives.cpp | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/vcpkg/archives.cpp b/src/vcpkg/archives.cpp index 011813fbd4..0aee082352 100644 --- a/src/vcpkg/archives.cpp +++ b/src/vcpkg/archives.cpp @@ -242,7 +242,7 @@ namespace vcpkg #ifdef _WIN32 void win32_extract_self_extracting_7z(const Filesystem& fs, const Path& archive, const Path& to_path) { - constexpr static const char header_7z[] = "7z\xBC\xAF\x27\x1C"; + static constexpr StringLiteral header_7z = "7z\xBC\xAF\x27\x1C"; const Path stem = archive.stem(); const auto subext = stem.extension(); Checks::msg_check_exit(VCPKG_LINE_INFO, @@ -251,14 +251,24 @@ namespace vcpkg .append(msgMissingExtension, msg::extension = ".7.exe")); auto contents = fs.read_contents(archive, VCPKG_LINE_INFO); - const auto pos = contents.find(header_7z); + + // try to chop off the beginning of the self extractor before the embedded 7z archive + // some 7z self extractors, such as PortableGit-2.43.0-32-bit.7z.exe have 1 header + // some 7z self extractors, such as 7z2408-x64.exe, have 2 headers + auto pos = contents.find(header_7z.data(), 0, header_7z.size()); Checks::msg_check_exit(VCPKG_LINE_INFO, pos != std::string::npos, msg::format(msgPackageFailedtWhileExtracting, msg::value = "7zip", msg::path = archive) .append(msgMissing7zHeader)); + // no bounds check necessary because header_7z is nonempty: + auto pos2 = contents.find(header_7z.data(), pos + 1, header_7z.size()); + if (pos2 != std::string::npos) + { + pos = pos2; + } - contents = contents.substr(pos); - fs.write_contents(to_path, contents, VCPKG_LINE_INFO); + StringView contents_sv = contents; + fs.write_contents(to_path, contents_sv.substr(pos), VCPKG_LINE_INFO); } #endif From 09274371c703b50d9acc43f03fa06a4674bea467 Mon Sep 17 00:00:00 2001 From: "CSIGS@microsoft.com" Date: Wed, 9 Oct 2024 13:27:14 -0700 Subject: [PATCH 27/39] Juno: check in to juno/hb_cb3056d7-d122-4ef4-8657-e36080a7f8c6_20241008234846681. (#1507) --- src/localization/zh-Hant/messages.json.lcl | 56 ++++++++++++++++++---- 1 file changed, 46 insertions(+), 10 deletions(-) diff --git a/src/localization/zh-Hant/messages.json.lcl b/src/localization/zh-Hant/messages.json.lcl index bc464be7b8..d98a1031d6 100644 --- a/src/localization/zh-Hant/messages.json.lcl +++ b/src/localization/zh-Hant/messages.json.lcl @@ -730,6 +730,24 @@ + + + + + + + + + + + + + + + + + + @@ -8973,43 +8991,49 @@ - + - + + + + - + - + - + - + - + - + - + + + + @@ -9027,10 +9051,13 @@ - + + + + @@ -9043,6 +9070,15 @@ + + + + + + + + + From 3a7bec0bef66c5fa6455aab4f4d1f13dda94510d Mon Sep 17 00:00:00 2001 From: Embedded Bot Date: Thu, 10 Oct 2024 05:03:50 +0000 Subject: [PATCH 28/39] [localization][automated][ci skip] update locale files --- locales/messages.zh-Hant.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/locales/messages.zh-Hant.json b/locales/messages.zh-Hant.json index 046221c7a1..42f3775701 100644 --- a/locales/messages.zh-Hant.json +++ b/locales/messages.zh-Hant.json @@ -68,8 +68,8 @@ "AddVersionPortFilesShaChanged": "{package_name} 的簽入檔案已變更,但版本未更新", "AddVersionPortFilesShaUnchanged": "{package_name} 的簽入檔案與版本 {version} 為不變的", "AddVersionPortHasImproperFormat": "{package_name} 的格式不正確", - "AddVersionPortVersionShouldBeGone": "In {package_name}, {version} is completely new version, so the \"port-version\" field should be removed. Remove \"port-version\", commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", - "AddVersionPortVersionShouldBeOneMore": "In {package_name}, the current \"port-version\" for {version} is {count}, so the next added \"port-version\" should be {expected_version}, but the port declares \"port-version\" {actual_version}. Change \"port-version\" to {expected_version}, commit that change, and try again. To skip this check, rerun with --skip-version-format-check .", + "AddVersionPortVersionShouldBeGone": "{package_name} 中,{version} 是全新的版本,所以應該移除 \"port-version\" 欄位。請移除 \"port-version\" 並認可該變更,然後再試一次。如要跳過此檢查,請以 --skip-version-format-check 重新執行。", + "AddVersionPortVersionShouldBeOneMore": "{package_name} 中,{version} 目前的 \"port-version\" 為 {count},所以下一個新增的 \"port-version\" 應為 {expected_version},但連接埠宣告 \"port-version\" 為 {actual_version}。請變更 \"port-version\" 至 {expected_version} 並認可該變更,然後再試一次。如要跳過此檢查,請以 --skip-version-format-check 重新執行。", "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} 有未承諾的變更", @@ -856,14 +856,14 @@ "ParagraphExpectedColonAfterField": "欄位名稱後面必須要有 ':'", "ParagraphExpectedFieldName": "必須要有欄位名稱", "ParagraphUnexpectedEndOfLine": "非預期的行尾,若要跨空白行,請使用 \" .\"", - "ParseFeatureNameError": "\"{package_name}\" is not a valid feature name. Feature names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", - "ParseIdentifierError": "\"{value}\" is not a valid identifier. Identifiers must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", - "ParsePackageNameError": "\"{package_name}\" is not a valid package name. Package names must be lowercase alphanumeric+hyphens and not reserved (see {url} for more information).", - "ParsePackageNameNotEof": "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+hyphens and not reserved (see {url} for more information).", + "ParseFeatureNameError": "\"{package_name}\" 不是有效的功能名稱。功能名稱必須是小寫英數字元+連字號,且未保留 (如需詳細資訊,請參閱 {url})。", + "ParseIdentifierError": "\"{value}\" 不是有效的識別碼。識別碼必須是小寫英數字元+連字號,且未保留 (如需詳細資訊,請參閱 {url})。", + "ParsePackageNameError": "\"{package_name}\" 不是有效的套件名稱。套件名稱必須是小寫英數字元+連字號,且未保留 (如需詳細資訊,請參閱 {url})。", + "ParsePackageNameNotEof": "預期輸入剖析套件名稱的結尾; 這通常表示指示的字元不能位於連接埠名稱中。連接埠名稱都必須是小寫英數字元+連字號,且未保留 (如需詳細資訊,請參閱 {url})。", "ParsePackagePatternError": "\"{package_name}\" 並非有效的套件模式。套件模式僅可使用一個萬用字元 (*),且其必須是模式中的最後一個字元 (如需詳細資訊,請參閱 {url})。", - "ParseQualifiedSpecifierNotEof": "expected the end of input parsing a package spec; this usually means the indicated character is not allowed to be in a package spec. Port, triplet, and feature names are all lowercase alphanumeric+hyphens.", + "ParseQualifiedSpecifierNotEof": "預期輸入剖析套件規格的結尾; 這通常表示指示的字元不能位於套件規格中。連接埠、三元組和功能名稱都必須是小寫英數字元+連字號。", "ParseQualifiedSpecifierNotEofSquareBracket": "預期輸入剖析套件規格的結尾; 您是指 {version_spec} 嗎?", - "ParseTripletNotEof": "Invalid triplet name. Triplet names are all lowercase alphanumeric+hyphens.", + "ParseTripletNotEof": "三元組名稱無效。三元組名稱都必須是小寫英數字元+連字號。", "PathMustBeAbsolute": "環境變數 X_VCPKG_REGISTRIES_CACHE 的值不是絕對: {path}", "PerformingPostBuildValidation": "正在執行建置後驗證", "PortBugBinDirExists": "${{CURRENT_PACKAGES_DIR}}/{path} 存在,但不應在靜態組建中。若要隱藏此訊息,請新增 set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled)", From 7869ef3adbc5225037951bb06f2edb9506f9a7a5 Mon Sep 17 00:00:00 2001 From: Billy O'Neal Date: Wed, 16 Oct 2024 10:50:03 -0700 Subject: [PATCH 29/39] Make e2e tests slightly more explicit and consistent. (#1510) --- .../{overlays => }/absolute-paths/hash.in | 0 .../absolute-paths/portfile.cmake | 2 +- .../absolute-paths/source-comment.h.in | 0 .../{overlays => }/absolute-paths/source.h.in | 0 .../{overlays => }/absolute-paths/vcpkg.json | 0 .../classic-versions-a/portfile.cmake | 0 .../classic-versions-a/vcpkg.json | 0 .../classic-versions-b/portfile.cmake | 0 .../classic-versions-b/vcpkg.json | 0 .../set-detected-head-version/portfile.cmake | 0 .../set-detected-head-version/vcpkg.json | 0 .../{overlays => }/tool-control/CONTROL | 0 .../tool-control/portfile.cmake | 0 .../{overlays => }/tool-liba/portfile.cmake | 0 .../{overlays => }/tool-liba/vcpkg.json | 0 .../{overlays => }/tool-libb/portfile.cmake | 0 .../{overlays => }/tool-libb/vcpkg.json | 0 .../tool-manifest/portfile.cmake | 0 .../{overlays => }/tool-manifest/vcpkg.json | 0 .../portfile.cmake | 0 .../vcpkg.json | 0 .../portfile.cmake | 2 +- .../src/CMakeLists.txt | 0 .../src/many-targets.cpp | 0 .../src/many-targets.def | 0 .../src/many-targets.h | 0 .../vcpkg.json | 0 .../portfile.cmake | 0 .../vcpkg.json | 0 .../portfile.cmake | 0 .../vcpkg-default-features-fail/vcpkg.json | 0 .../vcpkg-empty-port/portfile.cmake | 0 .../vcpkg-empty-port/vcpkg.json | 0 .../vcpkg-explicit-usage/portfile.cmake | 0 .../vcpkg-explicit-usage/vcpkg.json | 0 .../portfile.cmake | 0 .../vcpkg-fail-if-depended-upon/vcpkg.json | 0 .../vcpkg-header-only/portfile.cmake | 0 .../vcpkg-header-only/vcpkg.json | 0 .../vcpkg-hello-world-1/portfile.cmake | 2 +- .../vcpkg-hello-world-1/src/CMakeLists.txt | 0 .../vcpkg-hello-world-1/src/hello-1.h | 0 .../vcpkg-hello-world-1/src/hello.cpp | 0 .../vcpkg-hello-world-1/src/hello.def | 0 .../vcpkg-hello-world-1/vcpkg.json | 0 .../vcpkg-hello-world-2/portfile.cmake | 2 +- .../vcpkg-hello-world-2/src/CMakeLists.txt | 0 .../vcpkg-hello-world-2/src/hello-2.h | 0 .../vcpkg-hello-world-2/src/hello.c | 0 .../vcpkg-hello-world-2/src/hello.def | 0 .../vcpkg-hello-world-2/vcpkg.json | 0 .../vcpkg-native-dependency/portfile.cmake | 0 .../vcpkg-native-dependency/vcpkg.json | 0 .../vcpkg-never-builds/portfile.cmake | 0 .../vcpkg-never-builds/vcpkg.json | 0 .../portfile.cmake | 0 .../vcpkg-port-config.cmake | 0 .../vcpkg-touch-missing-dependency/vcpkg.json | 0 .../vcpkg_touch.cmake | 0 .../{overlays => }/vcpkg-touch/portfile.cmake | 0 .../vcpkg-touch/vcpkg-port-config.cmake | 0 .../{overlays => }/vcpkg-touch/vcpkg.json | 0 .../vcpkg-touch/vcpkg_touch.cmake | 0 .../vcpkg-uses-test-cmake/portfile.cmake | 0 .../vcpkg-uses-test-cmake/vcpkg.json | 0 .../portfile.cmake | 0 .../vcpkg.json | 0 .../vcpkg-uses-touch/portfile.cmake | 0 .../vcpkg-uses-touch/vcpkg.json | 0 .../portfile.cmake | 0 .../vcpkg.json | 0 .../wrong-pkgconfig/portfile.cmake | 2 +- .../{overlays => }/wrong-pkgconfig/vcpkg.json | 0 .../wrong-pkgconfig/wrong-pkgconfig.pc.in | 0 .../backcompat-helpers.ps1 | 2 +- .../end-to-end-tests-dir/binary-caching.ps1 | 3 +- .../end-to-end-tests-dir/build-command.ps1 | 12 ++++---- .../end-to-end-tests-dir/build-missing.ps1 | 2 ++ .../end-to-end-tests-dir/build-test-ports.ps1 | 2 +- .../end-to-end-tests-dir/classic-versions.ps1 | 2 ++ .../clean-after-build.ps1 | 2 +- .../end-to-end-tests-dir/compilertracking.ps1 | 14 ++++------ .../end-to-end-tests-dir/keep-going.ps1 | 2 ++ .../end-to-end-tests-dir/manifests.ps1 | 1 + .../native-platform-dep.ps1 | 7 +++-- .../no-absolute-paths.ps1 | 2 +- .../end-to-end-tests-dir/only-downloads.ps1 | 6 ++-- .../end-to-end-tests-dir/tool-ports.ps1 | 12 ++++---- .../end-to-end-tests-dir/usage.ps1 | 3 +- .../end-to-end-tests-dir/vcpkg-root.ps1 | 2 +- .../end-to-end-tests-dir/wrong-pkgconfig.ps1 | 2 +- azure-pipelines/end-to-end-tests-prelude.ps1 | 4 +-- azure-pipelines/end-to-end-tests.ps1 | 28 +++++++++++++------ .../compilertracking/x64-linux.cmake | 0 .../compilertracking/x64-osx.cmake | 9 ++++++ .../compilertracking/x86-windows.cmake | 7 +++++ .../x64-linux-e2e.cmake | 0 .../x64-osx-e2e.cmake | 0 .../x64-windows-e2e.cmake | 0 99 files changed, 84 insertions(+), 50 deletions(-) rename azure-pipelines/e2e-ports/{overlays => }/absolute-paths/hash.in (100%) rename azure-pipelines/e2e-ports/{overlays => }/absolute-paths/portfile.cmake (92%) rename azure-pipelines/e2e-ports/{overlays => }/absolute-paths/source-comment.h.in (100%) rename azure-pipelines/e2e-ports/{overlays => }/absolute-paths/source.h.in (100%) rename azure-pipelines/e2e-ports/{overlays => }/absolute-paths/vcpkg.json (100%) rename azure-pipelines/e2e-ports/{overlays => }/classic-versions-a/portfile.cmake (100%) rename azure-pipelines/e2e-ports/{overlays => }/classic-versions-a/vcpkg.json (100%) rename azure-pipelines/e2e-ports/{overlays => }/classic-versions-b/portfile.cmake (100%) rename azure-pipelines/e2e-ports/{overlays => }/classic-versions-b/vcpkg.json (100%) rename azure-pipelines/e2e-ports/{overlays => }/set-detected-head-version/portfile.cmake (100%) rename azure-pipelines/e2e-ports/{overlays => }/set-detected-head-version/vcpkg.json (100%) rename azure-pipelines/e2e-ports/{overlays => }/tool-control/CONTROL (100%) rename azure-pipelines/e2e-ports/{overlays => }/tool-control/portfile.cmake (100%) rename azure-pipelines/e2e-ports/{overlays => }/tool-liba/portfile.cmake (100%) rename azure-pipelines/e2e-ports/{overlays => }/tool-liba/vcpkg.json (100%) rename azure-pipelines/e2e-ports/{overlays => }/tool-libb/portfile.cmake (100%) rename azure-pipelines/e2e-ports/{overlays => }/tool-libb/vcpkg.json (100%) rename azure-pipelines/e2e-ports/{overlays => }/tool-manifest/portfile.cmake (100%) rename azure-pipelines/e2e-ports/{overlays => }/tool-manifest/vcpkg.json (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-clean-after-build-test-port/portfile.cmake (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-clean-after-build-test-port/vcpkg.json (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-cmake-config-many-targets/portfile.cmake (74%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-cmake-config-many-targets/src/CMakeLists.txt (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-cmake-config-many-targets/src/many-targets.cpp (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-cmake-config-many-targets/src/many-targets.def (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-cmake-config-many-targets/src/many-targets.h (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-cmake-config-many-targets/vcpkg.json (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-default-features-fail-require-other-feature/portfile.cmake (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-default-features-fail-require-other-feature/vcpkg.json (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-default-features-fail/portfile.cmake (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-default-features-fail/vcpkg.json (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-empty-port/portfile.cmake (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-empty-port/vcpkg.json (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-explicit-usage/portfile.cmake (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-explicit-usage/vcpkg.json (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-fail-if-depended-upon/portfile.cmake (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-fail-if-depended-upon/vcpkg.json (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-header-only/portfile.cmake (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-header-only/vcpkg.json (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-hello-world-1/portfile.cmake (73%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-hello-world-1/src/CMakeLists.txt (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-hello-world-1/src/hello-1.h (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-hello-world-1/src/hello.cpp (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-hello-world-1/src/hello.def (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-hello-world-1/vcpkg.json (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-hello-world-2/portfile.cmake (73%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-hello-world-2/src/CMakeLists.txt (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-hello-world-2/src/hello-2.h (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-hello-world-2/src/hello.c (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-hello-world-2/src/hello.def (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-hello-world-2/vcpkg.json (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-native-dependency/portfile.cmake (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-native-dependency/vcpkg.json (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-never-builds/portfile.cmake (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-never-builds/vcpkg.json (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-touch-missing-dependency/portfile.cmake (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-touch-missing-dependency/vcpkg-port-config.cmake (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-touch-missing-dependency/vcpkg.json (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-touch-missing-dependency/vcpkg_touch.cmake (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-touch/portfile.cmake (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-touch/vcpkg-port-config.cmake (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-touch/vcpkg.json (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-touch/vcpkg_touch.cmake (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-uses-test-cmake/portfile.cmake (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-uses-test-cmake/vcpkg.json (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-uses-touch-missing-dependency/portfile.cmake (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-uses-touch-missing-dependency/vcpkg.json (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-uses-touch/portfile.cmake (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-uses-touch/vcpkg.json (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-uses-vcpkg-common-functions/portfile.cmake (100%) rename azure-pipelines/e2e-ports/{overlays => }/vcpkg-uses-vcpkg-common-functions/vcpkg.json (100%) rename azure-pipelines/e2e-ports/{overlays => }/wrong-pkgconfig/portfile.cmake (90%) rename azure-pipelines/e2e-ports/{overlays => }/wrong-pkgconfig/vcpkg.json (100%) rename azure-pipelines/e2e-ports/{overlays => }/wrong-pkgconfig/wrong-pkgconfig.pc.in (100%) rename azure-pipelines/{e2e-ports => overlay-triplets}/compilertracking/x64-linux.cmake (100%) create mode 100644 azure-pipelines/overlay-triplets/compilertracking/x64-osx.cmake create mode 100644 azure-pipelines/overlay-triplets/compilertracking/x86-windows.cmake rename azure-pipelines/{e2e-ports/triplets => overlay-triplets}/x64-linux-e2e.cmake (100%) rename azure-pipelines/{e2e-ports/triplets => overlay-triplets}/x64-osx-e2e.cmake (100%) rename azure-pipelines/{e2e-ports/triplets => overlay-triplets}/x64-windows-e2e.cmake (100%) diff --git a/azure-pipelines/e2e-ports/overlays/absolute-paths/hash.in b/azure-pipelines/e2e-ports/absolute-paths/hash.in similarity index 100% rename from azure-pipelines/e2e-ports/overlays/absolute-paths/hash.in rename to azure-pipelines/e2e-ports/absolute-paths/hash.in diff --git a/azure-pipelines/e2e-ports/overlays/absolute-paths/portfile.cmake b/azure-pipelines/e2e-ports/absolute-paths/portfile.cmake similarity index 92% rename from azure-pipelines/e2e-ports/overlays/absolute-paths/portfile.cmake rename to azure-pipelines/e2e-ports/absolute-paths/portfile.cmake index 11c8d5be2a..1af12f0659 100644 --- a/azure-pipelines/e2e-ports/overlays/absolute-paths/portfile.cmake +++ b/azure-pipelines/e2e-ports/absolute-paths/portfile.cmake @@ -33,4 +33,4 @@ if("native" IN_LIST FEATURES) file(WRITE "${CURRENT_PACKAGES_DIR}/share/${PORT}/test.py" "${CURRENT_INSTALLED_DIR_NATIVE}") endif() -file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/../../../../LICENSE.txt" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright) +file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/../../../LICENSE.txt" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright) diff --git a/azure-pipelines/e2e-ports/overlays/absolute-paths/source-comment.h.in b/azure-pipelines/e2e-ports/absolute-paths/source-comment.h.in similarity index 100% rename from azure-pipelines/e2e-ports/overlays/absolute-paths/source-comment.h.in rename to azure-pipelines/e2e-ports/absolute-paths/source-comment.h.in diff --git a/azure-pipelines/e2e-ports/overlays/absolute-paths/source.h.in b/azure-pipelines/e2e-ports/absolute-paths/source.h.in similarity index 100% rename from azure-pipelines/e2e-ports/overlays/absolute-paths/source.h.in rename to azure-pipelines/e2e-ports/absolute-paths/source.h.in diff --git a/azure-pipelines/e2e-ports/overlays/absolute-paths/vcpkg.json b/azure-pipelines/e2e-ports/absolute-paths/vcpkg.json similarity index 100% rename from azure-pipelines/e2e-ports/overlays/absolute-paths/vcpkg.json rename to azure-pipelines/e2e-ports/absolute-paths/vcpkg.json diff --git a/azure-pipelines/e2e-ports/overlays/classic-versions-a/portfile.cmake b/azure-pipelines/e2e-ports/classic-versions-a/portfile.cmake similarity index 100% rename from azure-pipelines/e2e-ports/overlays/classic-versions-a/portfile.cmake rename to azure-pipelines/e2e-ports/classic-versions-a/portfile.cmake diff --git a/azure-pipelines/e2e-ports/overlays/classic-versions-a/vcpkg.json b/azure-pipelines/e2e-ports/classic-versions-a/vcpkg.json similarity index 100% rename from azure-pipelines/e2e-ports/overlays/classic-versions-a/vcpkg.json rename to azure-pipelines/e2e-ports/classic-versions-a/vcpkg.json diff --git a/azure-pipelines/e2e-ports/overlays/classic-versions-b/portfile.cmake b/azure-pipelines/e2e-ports/classic-versions-b/portfile.cmake similarity index 100% rename from azure-pipelines/e2e-ports/overlays/classic-versions-b/portfile.cmake rename to azure-pipelines/e2e-ports/classic-versions-b/portfile.cmake diff --git a/azure-pipelines/e2e-ports/overlays/classic-versions-b/vcpkg.json b/azure-pipelines/e2e-ports/classic-versions-b/vcpkg.json similarity index 100% rename from azure-pipelines/e2e-ports/overlays/classic-versions-b/vcpkg.json rename to azure-pipelines/e2e-ports/classic-versions-b/vcpkg.json diff --git a/azure-pipelines/e2e-ports/overlays/set-detected-head-version/portfile.cmake b/azure-pipelines/e2e-ports/set-detected-head-version/portfile.cmake similarity index 100% rename from azure-pipelines/e2e-ports/overlays/set-detected-head-version/portfile.cmake rename to azure-pipelines/e2e-ports/set-detected-head-version/portfile.cmake diff --git a/azure-pipelines/e2e-ports/overlays/set-detected-head-version/vcpkg.json b/azure-pipelines/e2e-ports/set-detected-head-version/vcpkg.json similarity index 100% rename from azure-pipelines/e2e-ports/overlays/set-detected-head-version/vcpkg.json rename to azure-pipelines/e2e-ports/set-detected-head-version/vcpkg.json diff --git a/azure-pipelines/e2e-ports/overlays/tool-control/CONTROL b/azure-pipelines/e2e-ports/tool-control/CONTROL similarity index 100% rename from azure-pipelines/e2e-ports/overlays/tool-control/CONTROL rename to azure-pipelines/e2e-ports/tool-control/CONTROL diff --git a/azure-pipelines/e2e-ports/overlays/tool-control/portfile.cmake b/azure-pipelines/e2e-ports/tool-control/portfile.cmake similarity index 100% rename from azure-pipelines/e2e-ports/overlays/tool-control/portfile.cmake rename to azure-pipelines/e2e-ports/tool-control/portfile.cmake diff --git a/azure-pipelines/e2e-ports/overlays/tool-liba/portfile.cmake b/azure-pipelines/e2e-ports/tool-liba/portfile.cmake similarity index 100% rename from azure-pipelines/e2e-ports/overlays/tool-liba/portfile.cmake rename to azure-pipelines/e2e-ports/tool-liba/portfile.cmake diff --git a/azure-pipelines/e2e-ports/overlays/tool-liba/vcpkg.json b/azure-pipelines/e2e-ports/tool-liba/vcpkg.json similarity index 100% rename from azure-pipelines/e2e-ports/overlays/tool-liba/vcpkg.json rename to azure-pipelines/e2e-ports/tool-liba/vcpkg.json diff --git a/azure-pipelines/e2e-ports/overlays/tool-libb/portfile.cmake b/azure-pipelines/e2e-ports/tool-libb/portfile.cmake similarity index 100% rename from azure-pipelines/e2e-ports/overlays/tool-libb/portfile.cmake rename to azure-pipelines/e2e-ports/tool-libb/portfile.cmake diff --git a/azure-pipelines/e2e-ports/overlays/tool-libb/vcpkg.json b/azure-pipelines/e2e-ports/tool-libb/vcpkg.json similarity index 100% rename from azure-pipelines/e2e-ports/overlays/tool-libb/vcpkg.json rename to azure-pipelines/e2e-ports/tool-libb/vcpkg.json diff --git a/azure-pipelines/e2e-ports/overlays/tool-manifest/portfile.cmake b/azure-pipelines/e2e-ports/tool-manifest/portfile.cmake similarity index 100% rename from azure-pipelines/e2e-ports/overlays/tool-manifest/portfile.cmake rename to azure-pipelines/e2e-ports/tool-manifest/portfile.cmake diff --git a/azure-pipelines/e2e-ports/overlays/tool-manifest/vcpkg.json b/azure-pipelines/e2e-ports/tool-manifest/vcpkg.json similarity index 100% rename from azure-pipelines/e2e-ports/overlays/tool-manifest/vcpkg.json rename to azure-pipelines/e2e-ports/tool-manifest/vcpkg.json diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-clean-after-build-test-port/portfile.cmake b/azure-pipelines/e2e-ports/vcpkg-clean-after-build-test-port/portfile.cmake similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-clean-after-build-test-port/portfile.cmake rename to azure-pipelines/e2e-ports/vcpkg-clean-after-build-test-port/portfile.cmake diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-clean-after-build-test-port/vcpkg.json b/azure-pipelines/e2e-ports/vcpkg-clean-after-build-test-port/vcpkg.json similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-clean-after-build-test-port/vcpkg.json rename to azure-pipelines/e2e-ports/vcpkg-clean-after-build-test-port/vcpkg.json diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-cmake-config-many-targets/portfile.cmake b/azure-pipelines/e2e-ports/vcpkg-cmake-config-many-targets/portfile.cmake similarity index 74% rename from azure-pipelines/e2e-ports/overlays/vcpkg-cmake-config-many-targets/portfile.cmake rename to azure-pipelines/e2e-ports/vcpkg-cmake-config-many-targets/portfile.cmake index 7ed96c8c22..997bd91369 100644 --- a/azure-pipelines/e2e-ports/overlays/vcpkg-cmake-config-many-targets/portfile.cmake +++ b/azure-pipelines/e2e-ports/vcpkg-cmake-config-many-targets/portfile.cmake @@ -10,4 +10,4 @@ vcpkg_copy_pdbs() vcpkg_cmake_config_fixup(PACKAGE_NAME cmake-config-many-targets) file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") -file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/../../../../LICENSE.txt" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright) +file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/../../../LICENSE.txt" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright) diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-cmake-config-many-targets/src/CMakeLists.txt b/azure-pipelines/e2e-ports/vcpkg-cmake-config-many-targets/src/CMakeLists.txt similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-cmake-config-many-targets/src/CMakeLists.txt rename to azure-pipelines/e2e-ports/vcpkg-cmake-config-many-targets/src/CMakeLists.txt diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-cmake-config-many-targets/src/many-targets.cpp b/azure-pipelines/e2e-ports/vcpkg-cmake-config-many-targets/src/many-targets.cpp similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-cmake-config-many-targets/src/many-targets.cpp rename to azure-pipelines/e2e-ports/vcpkg-cmake-config-many-targets/src/many-targets.cpp diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-cmake-config-many-targets/src/many-targets.def b/azure-pipelines/e2e-ports/vcpkg-cmake-config-many-targets/src/many-targets.def similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-cmake-config-many-targets/src/many-targets.def rename to azure-pipelines/e2e-ports/vcpkg-cmake-config-many-targets/src/many-targets.def diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-cmake-config-many-targets/src/many-targets.h b/azure-pipelines/e2e-ports/vcpkg-cmake-config-many-targets/src/many-targets.h similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-cmake-config-many-targets/src/many-targets.h rename to azure-pipelines/e2e-ports/vcpkg-cmake-config-many-targets/src/many-targets.h diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-cmake-config-many-targets/vcpkg.json b/azure-pipelines/e2e-ports/vcpkg-cmake-config-many-targets/vcpkg.json similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-cmake-config-many-targets/vcpkg.json rename to azure-pipelines/e2e-ports/vcpkg-cmake-config-many-targets/vcpkg.json diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-default-features-fail-require-other-feature/portfile.cmake b/azure-pipelines/e2e-ports/vcpkg-default-features-fail-require-other-feature/portfile.cmake similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-default-features-fail-require-other-feature/portfile.cmake rename to azure-pipelines/e2e-ports/vcpkg-default-features-fail-require-other-feature/portfile.cmake diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-default-features-fail-require-other-feature/vcpkg.json b/azure-pipelines/e2e-ports/vcpkg-default-features-fail-require-other-feature/vcpkg.json similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-default-features-fail-require-other-feature/vcpkg.json rename to azure-pipelines/e2e-ports/vcpkg-default-features-fail-require-other-feature/vcpkg.json diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-default-features-fail/portfile.cmake b/azure-pipelines/e2e-ports/vcpkg-default-features-fail/portfile.cmake similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-default-features-fail/portfile.cmake rename to azure-pipelines/e2e-ports/vcpkg-default-features-fail/portfile.cmake diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-default-features-fail/vcpkg.json b/azure-pipelines/e2e-ports/vcpkg-default-features-fail/vcpkg.json similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-default-features-fail/vcpkg.json rename to azure-pipelines/e2e-ports/vcpkg-default-features-fail/vcpkg.json diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-empty-port/portfile.cmake b/azure-pipelines/e2e-ports/vcpkg-empty-port/portfile.cmake similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-empty-port/portfile.cmake rename to azure-pipelines/e2e-ports/vcpkg-empty-port/portfile.cmake diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-empty-port/vcpkg.json b/azure-pipelines/e2e-ports/vcpkg-empty-port/vcpkg.json similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-empty-port/vcpkg.json rename to azure-pipelines/e2e-ports/vcpkg-empty-port/vcpkg.json diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-explicit-usage/portfile.cmake b/azure-pipelines/e2e-ports/vcpkg-explicit-usage/portfile.cmake similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-explicit-usage/portfile.cmake rename to azure-pipelines/e2e-ports/vcpkg-explicit-usage/portfile.cmake diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-explicit-usage/vcpkg.json b/azure-pipelines/e2e-ports/vcpkg-explicit-usage/vcpkg.json similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-explicit-usage/vcpkg.json rename to azure-pipelines/e2e-ports/vcpkg-explicit-usage/vcpkg.json diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-fail-if-depended-upon/portfile.cmake b/azure-pipelines/e2e-ports/vcpkg-fail-if-depended-upon/portfile.cmake similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-fail-if-depended-upon/portfile.cmake rename to azure-pipelines/e2e-ports/vcpkg-fail-if-depended-upon/portfile.cmake diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-fail-if-depended-upon/vcpkg.json b/azure-pipelines/e2e-ports/vcpkg-fail-if-depended-upon/vcpkg.json similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-fail-if-depended-upon/vcpkg.json rename to azure-pipelines/e2e-ports/vcpkg-fail-if-depended-upon/vcpkg.json diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-header-only/portfile.cmake b/azure-pipelines/e2e-ports/vcpkg-header-only/portfile.cmake similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-header-only/portfile.cmake rename to azure-pipelines/e2e-ports/vcpkg-header-only/portfile.cmake diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-header-only/vcpkg.json b/azure-pipelines/e2e-ports/vcpkg-header-only/vcpkg.json similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-header-only/vcpkg.json rename to azure-pipelines/e2e-ports/vcpkg-header-only/vcpkg.json diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-hello-world-1/portfile.cmake b/azure-pipelines/e2e-ports/vcpkg-hello-world-1/portfile.cmake similarity index 73% rename from azure-pipelines/e2e-ports/overlays/vcpkg-hello-world-1/portfile.cmake rename to azure-pipelines/e2e-ports/vcpkg-hello-world-1/portfile.cmake index d2b6ec0276..b9fda44a09 100644 --- a/azure-pipelines/e2e-ports/overlays/vcpkg-hello-world-1/portfile.cmake +++ b/azure-pipelines/e2e-ports/vcpkg-hello-world-1/portfile.cmake @@ -10,4 +10,4 @@ vcpkg_copy_pdbs() vcpkg_cmake_config_fixup(PACKAGE_NAME hello-world-1) file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") -file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/../../../../LICENSE.txt" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright) +file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/../../../LICENSE.txt" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright) diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-hello-world-1/src/CMakeLists.txt b/azure-pipelines/e2e-ports/vcpkg-hello-world-1/src/CMakeLists.txt similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-hello-world-1/src/CMakeLists.txt rename to azure-pipelines/e2e-ports/vcpkg-hello-world-1/src/CMakeLists.txt diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-hello-world-1/src/hello-1.h b/azure-pipelines/e2e-ports/vcpkg-hello-world-1/src/hello-1.h similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-hello-world-1/src/hello-1.h rename to azure-pipelines/e2e-ports/vcpkg-hello-world-1/src/hello-1.h diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-hello-world-1/src/hello.cpp b/azure-pipelines/e2e-ports/vcpkg-hello-world-1/src/hello.cpp similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-hello-world-1/src/hello.cpp rename to azure-pipelines/e2e-ports/vcpkg-hello-world-1/src/hello.cpp diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-hello-world-1/src/hello.def b/azure-pipelines/e2e-ports/vcpkg-hello-world-1/src/hello.def similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-hello-world-1/src/hello.def rename to azure-pipelines/e2e-ports/vcpkg-hello-world-1/src/hello.def diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-hello-world-1/vcpkg.json b/azure-pipelines/e2e-ports/vcpkg-hello-world-1/vcpkg.json similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-hello-world-1/vcpkg.json rename to azure-pipelines/e2e-ports/vcpkg-hello-world-1/vcpkg.json diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-hello-world-2/portfile.cmake b/azure-pipelines/e2e-ports/vcpkg-hello-world-2/portfile.cmake similarity index 73% rename from azure-pipelines/e2e-ports/overlays/vcpkg-hello-world-2/portfile.cmake rename to azure-pipelines/e2e-ports/vcpkg-hello-world-2/portfile.cmake index 3358314f8b..8d9e5be055 100644 --- a/azure-pipelines/e2e-ports/overlays/vcpkg-hello-world-2/portfile.cmake +++ b/azure-pipelines/e2e-ports/vcpkg-hello-world-2/portfile.cmake @@ -10,4 +10,4 @@ vcpkg_copy_pdbs() vcpkg_cmake_config_fixup(PACKAGE_NAME hello-world-2) file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") -file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/../../../../LICENSE.txt" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright) +file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/../../../LICENSE.txt" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright) diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-hello-world-2/src/CMakeLists.txt b/azure-pipelines/e2e-ports/vcpkg-hello-world-2/src/CMakeLists.txt similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-hello-world-2/src/CMakeLists.txt rename to azure-pipelines/e2e-ports/vcpkg-hello-world-2/src/CMakeLists.txt diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-hello-world-2/src/hello-2.h b/azure-pipelines/e2e-ports/vcpkg-hello-world-2/src/hello-2.h similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-hello-world-2/src/hello-2.h rename to azure-pipelines/e2e-ports/vcpkg-hello-world-2/src/hello-2.h diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-hello-world-2/src/hello.c b/azure-pipelines/e2e-ports/vcpkg-hello-world-2/src/hello.c similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-hello-world-2/src/hello.c rename to azure-pipelines/e2e-ports/vcpkg-hello-world-2/src/hello.c diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-hello-world-2/src/hello.def b/azure-pipelines/e2e-ports/vcpkg-hello-world-2/src/hello.def similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-hello-world-2/src/hello.def rename to azure-pipelines/e2e-ports/vcpkg-hello-world-2/src/hello.def diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-hello-world-2/vcpkg.json b/azure-pipelines/e2e-ports/vcpkg-hello-world-2/vcpkg.json similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-hello-world-2/vcpkg.json rename to azure-pipelines/e2e-ports/vcpkg-hello-world-2/vcpkg.json diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-native-dependency/portfile.cmake b/azure-pipelines/e2e-ports/vcpkg-native-dependency/portfile.cmake similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-native-dependency/portfile.cmake rename to azure-pipelines/e2e-ports/vcpkg-native-dependency/portfile.cmake diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-native-dependency/vcpkg.json b/azure-pipelines/e2e-ports/vcpkg-native-dependency/vcpkg.json similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-native-dependency/vcpkg.json rename to azure-pipelines/e2e-ports/vcpkg-native-dependency/vcpkg.json diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-never-builds/portfile.cmake b/azure-pipelines/e2e-ports/vcpkg-never-builds/portfile.cmake similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-never-builds/portfile.cmake rename to azure-pipelines/e2e-ports/vcpkg-never-builds/portfile.cmake diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-never-builds/vcpkg.json b/azure-pipelines/e2e-ports/vcpkg-never-builds/vcpkg.json similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-never-builds/vcpkg.json rename to azure-pipelines/e2e-ports/vcpkg-never-builds/vcpkg.json diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-touch-missing-dependency/portfile.cmake b/azure-pipelines/e2e-ports/vcpkg-touch-missing-dependency/portfile.cmake similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-touch-missing-dependency/portfile.cmake rename to azure-pipelines/e2e-ports/vcpkg-touch-missing-dependency/portfile.cmake diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-touch-missing-dependency/vcpkg-port-config.cmake b/azure-pipelines/e2e-ports/vcpkg-touch-missing-dependency/vcpkg-port-config.cmake similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-touch-missing-dependency/vcpkg-port-config.cmake rename to azure-pipelines/e2e-ports/vcpkg-touch-missing-dependency/vcpkg-port-config.cmake diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-touch-missing-dependency/vcpkg.json b/azure-pipelines/e2e-ports/vcpkg-touch-missing-dependency/vcpkg.json similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-touch-missing-dependency/vcpkg.json rename to azure-pipelines/e2e-ports/vcpkg-touch-missing-dependency/vcpkg.json diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-touch-missing-dependency/vcpkg_touch.cmake b/azure-pipelines/e2e-ports/vcpkg-touch-missing-dependency/vcpkg_touch.cmake similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-touch-missing-dependency/vcpkg_touch.cmake rename to azure-pipelines/e2e-ports/vcpkg-touch-missing-dependency/vcpkg_touch.cmake diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-touch/portfile.cmake b/azure-pipelines/e2e-ports/vcpkg-touch/portfile.cmake similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-touch/portfile.cmake rename to azure-pipelines/e2e-ports/vcpkg-touch/portfile.cmake diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-touch/vcpkg-port-config.cmake b/azure-pipelines/e2e-ports/vcpkg-touch/vcpkg-port-config.cmake similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-touch/vcpkg-port-config.cmake rename to azure-pipelines/e2e-ports/vcpkg-touch/vcpkg-port-config.cmake diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-touch/vcpkg.json b/azure-pipelines/e2e-ports/vcpkg-touch/vcpkg.json similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-touch/vcpkg.json rename to azure-pipelines/e2e-ports/vcpkg-touch/vcpkg.json diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-touch/vcpkg_touch.cmake b/azure-pipelines/e2e-ports/vcpkg-touch/vcpkg_touch.cmake similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-touch/vcpkg_touch.cmake rename to azure-pipelines/e2e-ports/vcpkg-touch/vcpkg_touch.cmake diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-uses-test-cmake/portfile.cmake b/azure-pipelines/e2e-ports/vcpkg-uses-test-cmake/portfile.cmake similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-uses-test-cmake/portfile.cmake rename to azure-pipelines/e2e-ports/vcpkg-uses-test-cmake/portfile.cmake diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-uses-test-cmake/vcpkg.json b/azure-pipelines/e2e-ports/vcpkg-uses-test-cmake/vcpkg.json similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-uses-test-cmake/vcpkg.json rename to azure-pipelines/e2e-ports/vcpkg-uses-test-cmake/vcpkg.json diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-uses-touch-missing-dependency/portfile.cmake b/azure-pipelines/e2e-ports/vcpkg-uses-touch-missing-dependency/portfile.cmake similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-uses-touch-missing-dependency/portfile.cmake rename to azure-pipelines/e2e-ports/vcpkg-uses-touch-missing-dependency/portfile.cmake diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-uses-touch-missing-dependency/vcpkg.json b/azure-pipelines/e2e-ports/vcpkg-uses-touch-missing-dependency/vcpkg.json similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-uses-touch-missing-dependency/vcpkg.json rename to azure-pipelines/e2e-ports/vcpkg-uses-touch-missing-dependency/vcpkg.json diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-uses-touch/portfile.cmake b/azure-pipelines/e2e-ports/vcpkg-uses-touch/portfile.cmake similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-uses-touch/portfile.cmake rename to azure-pipelines/e2e-ports/vcpkg-uses-touch/portfile.cmake diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-uses-touch/vcpkg.json b/azure-pipelines/e2e-ports/vcpkg-uses-touch/vcpkg.json similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-uses-touch/vcpkg.json rename to azure-pipelines/e2e-ports/vcpkg-uses-touch/vcpkg.json diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-uses-vcpkg-common-functions/portfile.cmake b/azure-pipelines/e2e-ports/vcpkg-uses-vcpkg-common-functions/portfile.cmake similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-uses-vcpkg-common-functions/portfile.cmake rename to azure-pipelines/e2e-ports/vcpkg-uses-vcpkg-common-functions/portfile.cmake diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-uses-vcpkg-common-functions/vcpkg.json b/azure-pipelines/e2e-ports/vcpkg-uses-vcpkg-common-functions/vcpkg.json similarity index 100% rename from azure-pipelines/e2e-ports/overlays/vcpkg-uses-vcpkg-common-functions/vcpkg.json rename to azure-pipelines/e2e-ports/vcpkg-uses-vcpkg-common-functions/vcpkg.json diff --git a/azure-pipelines/e2e-ports/overlays/wrong-pkgconfig/portfile.cmake b/azure-pipelines/e2e-ports/wrong-pkgconfig/portfile.cmake similarity index 90% rename from azure-pipelines/e2e-ports/overlays/wrong-pkgconfig/portfile.cmake rename to azure-pipelines/e2e-ports/wrong-pkgconfig/portfile.cmake index 42f235b588..da4dfb4e87 100644 --- a/azure-pipelines/e2e-ports/overlays/wrong-pkgconfig/portfile.cmake +++ b/azure-pipelines/e2e-ports/wrong-pkgconfig/portfile.cmake @@ -23,4 +23,4 @@ if("debug-bad" IN_LIST FEATURES) configure_file("${CMAKE_CURRENT_LIST_DIR}/wrong-pkgconfig.pc.in" "${CURRENT_PACKAGES_DIR}/debug/lib/wrong-pkgconfig.pc" @ONLY) endif() -file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/../../../../LICENSE.txt" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}/" RENAME copyright) +file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/../../../LICENSE.txt" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}/" RENAME copyright) diff --git a/azure-pipelines/e2e-ports/overlays/wrong-pkgconfig/vcpkg.json b/azure-pipelines/e2e-ports/wrong-pkgconfig/vcpkg.json similarity index 100% rename from azure-pipelines/e2e-ports/overlays/wrong-pkgconfig/vcpkg.json rename to azure-pipelines/e2e-ports/wrong-pkgconfig/vcpkg.json diff --git a/azure-pipelines/e2e-ports/overlays/wrong-pkgconfig/wrong-pkgconfig.pc.in b/azure-pipelines/e2e-ports/wrong-pkgconfig/wrong-pkgconfig.pc.in similarity index 100% rename from azure-pipelines/e2e-ports/overlays/wrong-pkgconfig/wrong-pkgconfig.pc.in rename to azure-pipelines/e2e-ports/wrong-pkgconfig/wrong-pkgconfig.pc.in diff --git a/azure-pipelines/end-to-end-tests-dir/backcompat-helpers.ps1 b/azure-pipelines/end-to-end-tests-dir/backcompat-helpers.ps1 index 765fb84699..e2f3a1d89a 100644 --- a/azure-pipelines/end-to-end-tests-dir/backcompat-helpers.ps1 +++ b/azure-pipelines/end-to-end-tests-dir/backcompat-helpers.ps1 @@ -3,7 +3,7 @@ # Test that prohibiting backcompat features actually prohibits $backcompatFeaturePorts = @('vcpkg-uses-test-cmake', 'vcpkg-uses-vcpkg-common-functions') foreach ($backcompatFeaturePort in $backcompatFeaturePorts) { - $succeedArgs = $commonArgs + @('install',$backcompatFeaturePort,'--no-binarycaching') + $succeedArgs = $commonArgs + @('install',$backcompatFeaturePort,'--no-binarycaching',"--x-builtin-ports-root=$PSScriptRoot/../e2e-ports") $failArgs = $succeedArgs + @('--x-prohibit-backcompat-features') $CurrentTest = "Should fail: ./vcpkg $($failArgs -join ' ')" Run-Vcpkg @failArgs diff --git a/azure-pipelines/end-to-end-tests-dir/binary-caching.ps1 b/azure-pipelines/end-to-end-tests-dir/binary-caching.ps1 index fd0f151c34..e7c52c5d83 100644 --- a/azure-pipelines/end-to-end-tests-dir/binary-caching.ps1 +++ b/azure-pipelines/end-to-end-tests-dir/binary-caching.ps1 @@ -2,7 +2,8 @@ $commonArgs += @( "--host-triplet", - $Triplet + $Triplet, + "--overlay-ports=$PSScriptRoot/../e2e-ports" ) # Test simple installation diff --git a/azure-pipelines/end-to-end-tests-dir/build-command.ps1 b/azure-pipelines/end-to-end-tests-dir/build-command.ps1 index 292afebd31..0518f4d365 100644 --- a/azure-pipelines/end-to-end-tests-dir/build-command.ps1 +++ b/azure-pipelines/end-to-end-tests-dir/build-command.ps1 @@ -2,8 +2,10 @@ $CurrentTest = "Build Command" +$commonArgs += $("--host-triplet",$Triplet,"--overlay-ports=$PSScriptRoot/../e2e-ports") + # Test that the build command fails if dependencies are missing -$out = Run-VcpkgAndCaptureOutput -TestArgs ($commonArgs + @("build","vcpkg-hello-world-1","--host-triplet",$Triplet)) +$out = Run-VcpkgAndCaptureOutput -TestArgs ($commonArgs + @("build","vcpkg-hello-world-1")) Throw-IfNotFailed if ($out -notmatch "The build command requires all dependencies to be already installed\.") { @@ -11,17 +13,17 @@ if ($out -notmatch "The build command requires all dependencies to be already in } # Install the dependencies of vcpkg-hello-world-1 -Run-Vcpkg -TestArgs ($commonArgs + @("install","vcpkg-cmake","vcpkg-cmake-config","--host-triplet",$Triplet)) +Run-Vcpkg -TestArgs ($commonArgs + @("install","vcpkg-cmake","vcpkg-cmake-config")) Throw-IfFailed # Test that the build command works -Run-Vcpkg -TestArgs ($commonArgs + @("build","vcpkg-hello-world-1","--host-triplet",$Triplet)) +Run-Vcpkg -TestArgs ($commonArgs + @("build","vcpkg-hello-world-1")) Throw-IfFailed # Regression test https://github.com/microsoft/vcpkg/issues/13933 -Run-Vcpkg -TestArgs ($commonArgs + @("install","vcpkg-hello-world-1","--host-triplet",$Triplet)) +Run-Vcpkg -TestArgs ($commonArgs + @("install","vcpkg-hello-world-1")) Throw-IfFailed -$out = Run-VcpkgAndCaptureStdErr -TestArgs ($commonArgs + @("build","vcpkg-hello-world-1","--host-triplet",$Triplet)) +$out = Run-VcpkgAndCaptureStdErr -TestArgs ($commonArgs + @("build","vcpkg-hello-world-1")) Throw-IfNotFailed if ($out -notmatch "is already installed; please remove") { diff --git a/azure-pipelines/end-to-end-tests-dir/build-missing.ps1 b/azure-pipelines/end-to-end-tests-dir/build-missing.ps1 index 93365bf35f..f8badecfd2 100644 --- a/azure-pipelines/end-to-end-tests-dir/build-missing.ps1 +++ b/azure-pipelines/end-to-end-tests-dir/build-missing.ps1 @@ -2,6 +2,8 @@ $CurrentTest = "Build Missing tests" +$commonArgs += @("--overlay-ports=$PSScriptRoot/../e2e-ports") + Run-Vcpkg -TestArgs ($commonArgs + @("install", "vcpkg-hello-world-1", "--only-binarycaching","--x-binarysource=clear;files,$ArchiveRoot,read")) Throw-IfNotFailed Require-FileNotExists "$installRoot/$Triplet/include/hello-1.h" 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 9854e21678..127a788491 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 @@ -21,7 +21,7 @@ if ($output -match 'vcpkg-internal-e2e-test-port3') { } # 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 +Run-Vcpkg @commonArgs --overlay-ports="$PSScriptRoot/../e2e-ports" --overlay-ports="$PSScriptRoot/../e2e-ports/broken-manifests" install vcpkg-empty-port Throw-IfFailed Run-Vcpkg @commonArgs --overlay-ports="$PSScriptRoot/../e2e-ports" --overlay-ports="$PSScriptRoot/../e2e-ports/broken-manifests" install vcpkg-internal-e2e-test-port Throw-IfFailed diff --git a/azure-pipelines/end-to-end-tests-dir/classic-versions.ps1 b/azure-pipelines/end-to-end-tests-dir/classic-versions.ps1 index c7c3ad65c8..aa01e89a88 100644 --- a/azure-pipelines/end-to-end-tests-dir/classic-versions.ps1 +++ b/azure-pipelines/end-to-end-tests-dir/classic-versions.ps1 @@ -1,5 +1,7 @@ . $PSScriptRoot/../end-to-end-tests-prelude.ps1 +$commonArgs += @("--x-builtin-ports-root=$PSScriptRoot/../e2e-ports") + # Not a number Refresh-TestRoot $out = Run-VcpkgAndCaptureOutput @commonArgs install classic-versions-b diff --git a/azure-pipelines/end-to-end-tests-dir/clean-after-build.ps1 b/azure-pipelines/end-to-end-tests-dir/clean-after-build.ps1 index 4c29ea29d4..4dcc24f96b 100644 --- a/azure-pipelines/end-to-end-tests-dir/clean-after-build.ps1 +++ b/azure-pipelines/end-to-end-tests-dir/clean-after-build.ps1 @@ -10,7 +10,7 @@ $PackageRoot = Join-Path $packagesRoot "vcpkg-clean-after-build-test-port_$Tripl $PackageSrc = Join-Path $buildtreesRoot "vcpkg-clean-after-build-test-port/src" $installTestPortArgs = ` - @("install", "vcpkg-clean-after-build-test-port", "--no-binarycaching", "--downloads-root=$downloadsRoot") + @("install", "vcpkg-clean-after-build-test-port", "--no-binarycaching", "--downloads-root=$downloadsRoot", "--x-builtin-ports-root=$PSScriptRoot/../e2e-ports") Refresh-TestRoot Run-Vcpkg -TestArgs ($commonArgs + $installTestPortArgs) diff --git a/azure-pipelines/end-to-end-tests-dir/compilertracking.ps1 b/azure-pipelines/end-to-end-tests-dir/compilertracking.ps1 index dcac8058e9..e6fb73b792 100644 --- a/azure-pipelines/end-to-end-tests-dir/compilertracking.ps1 +++ b/azure-pipelines/end-to-end-tests-dir/compilertracking.ps1 @@ -1,31 +1,27 @@ -if ($Triplet -ne "x64-linux") { - return -} - . $PSScriptRoot/../end-to-end-tests-prelude.ps1 -$args = $commonArgs + @("--overlay-triplets=$PSScriptRoot/../e2e-ports/compilertracking", "--binarysource=clear;files,$ArchiveRoot,readwrite") +$args = $commonArgs + @("--overlay-triplets=$PSScriptRoot/../overlay-triplets/compilertracking", "--overlay-ports=$PSScriptRoot/../e2e-ports", "--binarysource=clear;files,$ArchiveRoot,readwrite") # Test simple installation Run-Vcpkg -TestArgs ($args + @("install", "vcpkg-hello-world-1")) Throw-IfFailed -if (-Not (select-string "^triplet_abi [0-9a-f]+-[0-9a-f]+-[0-9a-f]+$" "$installRoot/x64-linux/share/vcpkg-hello-world-1/vcpkg_abi_info.txt")) { +if (-Not (select-string "^triplet_abi [0-9a-f]+-[0-9a-f]+-[0-9a-f]+$" "$installRoot/$Triplet/share/vcpkg-hello-world-1/vcpkg_abi_info.txt")) { throw "Expected vcpkg-hello-world-1 to perform compiler detection" } Remove-Item -Recurse -Force $installRoot Run-Vcpkg -TestArgs ($args + @("install", "vcpkg-hello-world-2")) Throw-IfFailed -if (-Not (select-string "^triplet_abi [0-9a-f]+-[0-9a-f]+$" "$installRoot/x64-linux/share/vcpkg-hello-world-2/vcpkg_abi_info.txt")) { +if (-Not (select-string "^triplet_abi [0-9a-f]+-[0-9a-f]+$" "$installRoot/$Triplet/share/vcpkg-hello-world-2/vcpkg_abi_info.txt")) { throw "Expected vcpkg-hello-world-2 to not perform compiler detection" } Remove-Item -Recurse -Force $installRoot Run-Vcpkg -TestArgs ($args + @("install", "vcpkg-hello-world-2", "vcpkg-hello-world-1")) Throw-IfFailed -if (-Not (select-string "^triplet_abi [0-9a-f]+-[0-9a-f]+-[0-9a-f]+$" "$installRoot/x64-linux/share/vcpkg-hello-world-1/vcpkg_abi_info.txt")) { +if (-Not (select-string "^triplet_abi [0-9a-f]+-[0-9a-f]+-[0-9a-f]+$" "$installRoot/$Triplet/share/vcpkg-hello-world-1/vcpkg_abi_info.txt")) { throw "Expected vcpkg-hello-world-1 to perform compiler detection" } -if (-Not (select-string "^triplet_abi [0-9a-f]+-[0-9a-f]+$" "$installRoot/x64-linux/share/vcpkg-hello-world-2/vcpkg_abi_info.txt")) { +if (-Not (select-string "^triplet_abi [0-9a-f]+-[0-9a-f]+$" "$installRoot/$Triplet/share/vcpkg-hello-world-2/vcpkg_abi_info.txt")) { throw "Expected vcpkg-hello-world-2 to not perform compiler detection" } diff --git a/azure-pipelines/end-to-end-tests-dir/keep-going.ps1 b/azure-pipelines/end-to-end-tests-dir/keep-going.ps1 index 13006c178a..42ea2faa83 100644 --- a/azure-pipelines/end-to-end-tests-dir/keep-going.ps1 +++ b/azure-pipelines/end-to-end-tests-dir/keep-going.ps1 @@ -1,5 +1,7 @@ . $PSScriptRoot/../end-to-end-tests-prelude.ps1 +$commonArgs += @("--x-builtin-ports-root=$PSScriptRoot/../e2e-ports") + # Test keep-going to not report an error Run-Vcpkg -TestArgs ($commonArgs + @("install", "vcpkg-empty-port", "--keep-going")) Throw-IfFailed diff --git a/azure-pipelines/end-to-end-tests-dir/manifests.ps1 b/azure-pipelines/end-to-end-tests-dir/manifests.ps1 index f8fd585022..8848ae2235 100644 --- a/azure-pipelines/end-to-end-tests-dir/manifests.ps1 +++ b/azure-pipelines/end-to-end-tests-dir/manifests.ps1 @@ -3,6 +3,7 @@ Write-Trace "test manifest features" $manifestDir = "$TestingRoot/manifest-dir" +$commonArgs += @("--x-builtin-ports-root=$PSScriptRoot/../e2e-ports") $manifestDirArgs = $commonArgs + @("--x-manifest-root=$manifestDir") $noDefaultFeatureArgs = $manifestDirArgs + @('--x-no-default-features') diff --git a/azure-pipelines/end-to-end-tests-dir/native-platform-dep.ps1 b/azure-pipelines/end-to-end-tests-dir/native-platform-dep.ps1 index cfdee2041b..b2e24ad520 100644 --- a/azure-pipelines/end-to-end-tests-dir/native-platform-dep.ps1 +++ b/azure-pipelines/end-to-end-tests-dir/native-platform-dep.ps1 @@ -11,15 +11,16 @@ if ($IsLinux) { return } - Write-Trace "test native qualified dependencies" -Run-Vcpkg install @CommonArgs --host-triplet $Triplet vcpkg-native-dependency:$Triplet +$commonArgs += @("--x-builtin-ports-root=$PSScriptRoot/../e2e-ports", "--overlay-triplets=$PSScriptRoot/../overlay-triplets") + +Run-Vcpkg install @commonArgs --host-triplet $Triplet vcpkg-native-dependency:$Triplet Throw-IfFailed Require-FileExists "$installRoot/$Triplet/share/vcpkg-empty-port" Refresh-TestRoot -Run-Vcpkg install @CommonArgs --host-triplet $host_triplet vcpkg-native-dependency:$Triplet +Run-Vcpkg install @commonArgs --host-triplet $host_triplet vcpkg-native-dependency:$Triplet Throw-IfFailed Require-FileNotExists "$installRoot/$Triplet/share/vcpkg-empty-port" Refresh-TestRoot diff --git a/azure-pipelines/end-to-end-tests-dir/no-absolute-paths.ps1 b/azure-pipelines/end-to-end-tests-dir/no-absolute-paths.ps1 index df9b6d82a4..00f1124785 100644 --- a/azure-pipelines/end-to-end-tests-dir/no-absolute-paths.ps1 +++ b/azure-pipelines/end-to-end-tests-dir/no-absolute-paths.ps1 @@ -2,7 +2,7 @@ $CurrentTest = "No absolute paths" -$commonArgs += @("--enforce-port-checks", "--binarysource=clear") +$commonArgs += @("--enforce-port-checks", "--binarysource=clear", "--x-builtin-ports-root=$PSScriptRoot/../e2e-ports") Run-Vcpkg @commonArgs install "absolute-paths[hash]" Throw-IfNotFailed diff --git a/azure-pipelines/end-to-end-tests-dir/only-downloads.ps1 b/azure-pipelines/end-to-end-tests-dir/only-downloads.ps1 index 2eb86612ab..b776d3046c 100644 --- a/azure-pipelines/end-to-end-tests-dir/only-downloads.ps1 +++ b/azure-pipelines/end-to-end-tests-dir/only-downloads.ps1 @@ -1,6 +1,6 @@ . "$PSScriptRoot/../end-to-end-tests-prelude.ps1" -Refresh-TestRoot +$commonArgs += @("--overlay-ports=$PSScriptRoot/../e2e-ports") Run-Vcpkg @commonArgs install --only-downloads vcpkg-uses-touch Throw-IfFailed @@ -14,14 +14,14 @@ Require-FileNotExists "$installRoot/$Triplet/include/vcpkg-uses-touch.h" Refresh-TestRoot -Run-Vcpkg @commonArgs install "--overlay-ports=$PSScriptRoot/../e2e-ports" vcpkg-e2e-test-fails-in-download-only-transitive --only-downloads +Run-Vcpkg @commonArgs install vcpkg-e2e-test-fails-in-download-only-transitive --only-downloads Throw-IfFailed if (Test-Path "$installRoot/$Triplet/share/vcpkg-e2e-test-fails-in-download-only-transitive/installed.txt") { throw "--only-downloads installed a port with a missing transitive dependency" } -Run-Vcpkg @commonArgs install "--overlay-ports=$PSScriptRoot/../e2e-ports" vcpkg-e2e-test-fails-in-download-only-transitive +Run-Vcpkg @commonArgs install vcpkg-e2e-test-fails-in-download-only-transitive Throw-IfFailed if (-Not (Test-Path "$installRoot/$Triplet/share/vcpkg-e2e-test-fails-in-download-only-transitive/installed.txt")) { throw "The --only-downloads transitive test port did not succeed (likely test bug)" diff --git a/azure-pipelines/end-to-end-tests-dir/tool-ports.ps1 b/azure-pipelines/end-to-end-tests-dir/tool-ports.ps1 index 67f14d18c8..5237db2023 100644 --- a/azure-pipelines/end-to-end-tests-dir/tool-ports.ps1 +++ b/azure-pipelines/end-to-end-tests-dir/tool-ports.ps1 @@ -1,20 +1,20 @@ . $PSScriptRoot/../end-to-end-tests-prelude.ps1 -$commonArgs += @("--x-binarysource=clear") +$commonArgs += @("--x-binarysource=clear", "--overlay-ports=$PSScriptRoot/../e2e-ports", "--overlay-triplets=$PSScriptRoot/../overlay-triplets") $hostTriplet = "$Triplet" $env:VCPKG_DEFAULT_HOST_TRIPLET = "$hostTriplet" -if (!$IsLinux -and !$IsMacOS) +if ($IsMacOS) { - $targetTriplet = "x64-windows-e2e" + $targetTriplet = "x64-osx-e2e" } -elseif ($IsMacOS) +elseif ($ISLinux) { - $targetTriplet = "x64-osx-e2e" + $targetTriplet = "x64-linux-e2e" } else { - $targetTriplet = "x64-linux-e2e" + $targetTriplet = "x64-windows-e2e" } $env:VCPKG_FEATURE_FLAGS="-compilertracking" diff --git a/azure-pipelines/end-to-end-tests-dir/usage.ps1 b/azure-pipelines/end-to-end-tests-dir/usage.ps1 index 4b6e5e7507..f2d84316e3 100644 --- a/azure-pipelines/end-to-end-tests-dir/usage.ps1 +++ b/azure-pipelines/end-to-end-tests-dir/usage.ps1 @@ -55,7 +55,8 @@ vcpkg-header-only is header-only and can be used from CMake via: 'vcpkg-header-only', 'vcpkg-hello-world-1', 'vcpkg-hello-world-2', - 'wrong-pkgconfig[header-only-good]' + 'wrong-pkgconfig[header-only-good]', + "--overlay-ports=$PSScriptRoot/../e2e-ports" )) $usage = $usage.Replace("`r`n", "`n") diff --git a/azure-pipelines/end-to-end-tests-dir/vcpkg-root.ps1 b/azure-pipelines/end-to-end-tests-dir/vcpkg-root.ps1 index 0bae030c79..00fff2554c 100644 --- a/azure-pipelines/end-to-end-tests-dir/vcpkg-root.ps1 +++ b/azure-pipelines/end-to-end-tests-dir/vcpkg-root.ps1 @@ -4,7 +4,7 @@ $CurrentTest = "VCPKG_ROOT" $targetMessage = 'ignoring mismatched VCPKG_ROOT environment value' -$commonArgs += @('install', "--x-manifest-root=$PSScriptRoot/../e2e-projects/overlays-vcpkg-empty-port") +$commonArgs += @('install', "--overlay-ports=$PSScriptRoot/../e2e-ports", "--x-manifest-root=$PSScriptRoot/../e2e-projects/overlays-vcpkg-empty-port") $defaultOutput = Run-VcpkgAndCaptureStdErr -TestArgs $commonArgs Throw-IfFailed diff --git a/azure-pipelines/end-to-end-tests-dir/wrong-pkgconfig.ps1 b/azure-pipelines/end-to-end-tests-dir/wrong-pkgconfig.ps1 index 3aba646a2c..1ceea152a5 100644 --- a/azure-pipelines/end-to-end-tests-dir/wrong-pkgconfig.ps1 +++ b/azure-pipelines/end-to-end-tests-dir/wrong-pkgconfig.ps1 @@ -2,7 +2,7 @@ $CurrentTest = "Test pkgconfig locations" -$commonArgs += @("--enforce-port-checks", "--binarysource=clear") +$commonArgs += @("--enforce-port-checks", "--binarysource=clear", "--x-builtin-ports-root=$PSScriptRoot/../e2e-ports") Run-Vcpkg @commonArgs install "wrong-pkgconfig[header-only-good]" Throw-IfFailed diff --git a/azure-pipelines/end-to-end-tests-prelude.ps1 b/azure-pipelines/end-to-end-tests-prelude.ps1 index ac968169d6..9d0eaa3c8d 100644 --- a/azure-pipelines/end-to-end-tests-prelude.ps1 +++ b/azure-pipelines/end-to-end-tests-prelude.ps1 @@ -12,9 +12,7 @@ $AssetCache = Join-Path $TestingRoot 'asset-cache' $directoryArgs = @( "--x-buildtrees-root=$buildtreesRoot", "--x-install-root=$installRoot", - "--x-packages-root=$packagesRoot", - "--overlay-ports=$PSScriptRoot/e2e-ports/overlays", - "--overlay-triplets=$PSScriptRoot/e2e-ports/triplets" + "--x-packages-root=$packagesRoot" ) $commonArgs = @( diff --git a/azure-pipelines/end-to-end-tests.ps1 b/azure-pipelines/end-to-end-tests.ps1 index 65870aa625..0450f51f28 100755 --- a/azure-pipelines/end-to-end-tests.ps1 +++ b/azure-pipelines/end-to-end-tests.ps1 @@ -28,6 +28,8 @@ Param( [ValidateNotNullOrEmpty()] [string]$Filter, [Parameter(Mandatory = $false)] + [string]$StartAt, + [Parameter(Mandatory = $false)] [string]$VcpkgExe, [Parameter(Mandatory = $false, HelpMessage="Run artifacts tests, only usable when vcpkg was built with VCPKG_ARTIFACTS_DEVELOPMENT=ON")] [switch]$RunArtifactsTests @@ -76,12 +78,10 @@ $VcpkgExe = $VcpkgItem.FullName $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 -if ($Filter -ne $Null) { +[Array]$AllTests = Get-ChildItem -LiteralPath "$PSScriptRoot/end-to-end-tests-dir" -Filter "*.ps1" | Sort-Object -Property Name +if ($Filter -ne $null) { $AllTests = $AllTests | ? { $_.Name -match $Filter } } -$n = 1 -$m = $AllTests.Count $envvars_clear = @( 'VCPKG_BINARY_SOURCES', @@ -99,12 +99,25 @@ $envvars_clear = @( ) $envvars = $envvars_clear + @("VCPKG_DOWNLOADS", "X_VCPKG_REGISTRIES_CACHE", "PATH", "GITHUB_ACTIONS") -foreach ($Test in $AllTests) +$allTestsCount = $AllTests.Count +for ($n = 1; $n -le $allTestsCount; $n++) { + $Test = $AllTests[$n - 1] + if ($StartAt.Length -ne 0) { + [string]$TestName = $Test.Name + $TestName = $TestName.Substring(0, $TestName.Length - 4) # remove .ps1 + if ($StartAt.Equals($TestName, [System.StringComparison]::OrdinalIgnoreCase)) { + $StartAt = [string]::Empty + } else { + Write-Host -ForegroundColor Green "[end-to-end-tests.ps1] [$n/$allTestsCount] Suite $Test skipped by -StartAt" + continue + } + } + if ($env:GITHUB_ACTIONS) { - Write-Host -ForegroundColor Green "::group::[end-to-end-tests.ps1] [$n/$m] Running suite $Test" + Write-Host -ForegroundColor Green "::group::[end-to-end-tests.ps1] [$n/$allTestsCount] Running suite $Test" } else { - Write-Host -ForegroundColor Green "[end-to-end-tests.ps1] [$n/$m] Running suite $Test" + Write-Host -ForegroundColor Green "[end-to-end-tests.ps1] [$n/$allTestsCount] Running suite $Test" } $envbackup = @{} @@ -145,7 +158,6 @@ foreach ($Test in $AllTests) if ($env:GITHUB_ACTIONS) { Write-Host "::endgroup::" } - $n += 1 } Write-Host -ForegroundColor Green "[end-to-end-tests.ps1] All tests passed." diff --git a/azure-pipelines/e2e-ports/compilertracking/x64-linux.cmake b/azure-pipelines/overlay-triplets/compilertracking/x64-linux.cmake similarity index 100% rename from azure-pipelines/e2e-ports/compilertracking/x64-linux.cmake rename to azure-pipelines/overlay-triplets/compilertracking/x64-linux.cmake diff --git a/azure-pipelines/overlay-triplets/compilertracking/x64-osx.cmake b/azure-pipelines/overlay-triplets/compilertracking/x64-osx.cmake new file mode 100644 index 0000000000..39c0bd909d --- /dev/null +++ b/azure-pipelines/overlay-triplets/compilertracking/x64-osx.cmake @@ -0,0 +1,9 @@ +set(VCPKG_TARGET_ARCHITECTURE x64) +set(VCPKG_CRT_LINKAGE dynamic) +set(VCPKG_LIBRARY_LINKAGE static) + +set(VCPKG_CMAKE_SYSTEM_NAME Darwin) +set(VCPKG_OSX_ARCHITECTURES x86_64) +if(PORT STREQUAL "vcpkg-hello-world-2") + set(VCPKG_DISABLE_COMPILER_TRACKING 1) +endif() diff --git a/azure-pipelines/overlay-triplets/compilertracking/x86-windows.cmake b/azure-pipelines/overlay-triplets/compilertracking/x86-windows.cmake new file mode 100644 index 0000000000..011a14b457 --- /dev/null +++ b/azure-pipelines/overlay-triplets/compilertracking/x86-windows.cmake @@ -0,0 +1,7 @@ +set(VCPKG_TARGET_ARCHITECTURE x86) +set(VCPKG_CRT_LINKAGE dynamic) +set(VCPKG_LIBRARY_LINKAGE dynamic) + +if(PORT STREQUAL "vcpkg-hello-world-2") + set(VCPKG_DISABLE_COMPILER_TRACKING 1) +endif() diff --git a/azure-pipelines/e2e-ports/triplets/x64-linux-e2e.cmake b/azure-pipelines/overlay-triplets/x64-linux-e2e.cmake similarity index 100% rename from azure-pipelines/e2e-ports/triplets/x64-linux-e2e.cmake rename to azure-pipelines/overlay-triplets/x64-linux-e2e.cmake diff --git a/azure-pipelines/e2e-ports/triplets/x64-osx-e2e.cmake b/azure-pipelines/overlay-triplets/x64-osx-e2e.cmake similarity index 100% rename from azure-pipelines/e2e-ports/triplets/x64-osx-e2e.cmake rename to azure-pipelines/overlay-triplets/x64-osx-e2e.cmake diff --git a/azure-pipelines/e2e-ports/triplets/x64-windows-e2e.cmake b/azure-pipelines/overlay-triplets/x64-windows-e2e.cmake similarity index 100% rename from azure-pipelines/e2e-ports/triplets/x64-windows-e2e.cmake rename to azure-pipelines/overlay-triplets/x64-windows-e2e.cmake From 67931f1ae70d99d3ca85b88d3aa68ffd321c8843 Mon Sep 17 00:00:00 2001 From: data-queue <144965964+data-queue@users.noreply.github.com> Date: Thu, 17 Oct 2024 18:14:39 -0700 Subject: [PATCH 30/39] Support Azure universal packages as a binary caching provider (#1491) * add universal support * fix * fix * review * review * fix --- include/vcpkg/base/message-data.inc.h | 15 ++ include/vcpkg/binarycaching.h | 10 ++ include/vcpkg/binarycaching.private.h | 8 +- include/vcpkg/metrics.h | 1 + include/vcpkg/tools.h | 6 + locales/messages.json | 6 + src/vcpkg-test/binarycaching.cpp | 38 ++--- src/vcpkg-test/configparser.cpp | 36 +++++ src/vcpkg-test/tools.cpp | 12 ++ src/vcpkg/binarycaching.cpp | 207 ++++++++++++++++++++++++-- src/vcpkg/metrics.cpp | 1 + src/vcpkg/tools.cpp | 62 +++++++- 12 files changed, 364 insertions(+), 38 deletions(-) diff --git a/include/vcpkg/base/message-data.inc.h b/include/vcpkg/base/message-data.inc.h index c4db50bea3..035e5b6b62 100644 --- a/include/vcpkg/base/message-data.inc.h +++ b/include/vcpkg/base/message-data.inc.h @@ -1490,6 +1490,12 @@ DECLARE_MESSAGE(HelpBinaryCachingAzBlob, "**Experimental: will change or be removed without warning**\n" "Adds an Azure Blob Storage source. Uses Shared Access Signature validation. should include " "the container path. must be be prefixed with a \"?\".") +DECLARE_MESSAGE(HelpBinaryCachingAzUpkg, + (), + "Printed as the 'definition' for 'x-az-universal,,,[,]'.", + "**Experimental: will change or be removed without warning**\n" + "Adds a Universal Package Azure Artifacts source. Uses the Azure CLI " + "(az artifacts) for uploads and downloads.") DECLARE_MESSAGE(HelpBinaryCachingCos, (), "Printed as the 'definition' for 'x-cos,[,]'.", @@ -1811,6 +1817,10 @@ DECLARE_MESSAGE(InvalidArgumentRequiresBaseUrlAndToken, (msg::binary_source), "", "invalid argument: binary config '{binary_source}' requires at least a base-url and a SAS token") +DECLARE_MESSAGE(InvalidArgumentRequiresFourOrFiveArguments, + (msg::binary_source), + "", + "invalid argument: binary config '{binary_source}' requires 4 or 5 arguments") DECLARE_MESSAGE(InvalidArgumentRequiresNoneArguments, (msg::binary_source), "", @@ -2576,6 +2586,11 @@ DECLARE_MESSAGE(RestoredPackagesFromAWS, (msg::count, msg::elapsed), "", "Restored {count} package(s) from AWS in {elapsed}. Use --debug to see more details.") +DECLARE_MESSAGE(RestoredPackagesFromAZUPKG, + (msg::count, msg::elapsed), + "", + "Restored {count} package(s) from Universal Packages in {elapsed}. " + "Use --debug to see more details.") DECLARE_MESSAGE(RestoredPackagesFromCOS, (msg::count, msg::elapsed), "", diff --git a/include/vcpkg/binarycaching.h b/include/vcpkg/binarycaching.h index 5c70cf04d1..f9057847df 100644 --- a/include/vcpkg/binarycaching.h +++ b/include/vcpkg/binarycaching.h @@ -121,6 +121,13 @@ namespace vcpkg std::string commit; }; + struct AzureUpkgSource + { + std::string organization; + std::string project; + std::string feed; + }; + struct BinaryConfigParserState { bool nuget_interactive = false; @@ -147,6 +154,9 @@ namespace vcpkg bool gha_write = false; bool gha_read = false; + std::vector upkg_templates_to_get; + std::vector upkg_templates_to_put; + std::vector sources_to_read; std::vector sources_to_write; diff --git a/include/vcpkg/binarycaching.private.h b/include/vcpkg/binarycaching.private.h index e26d8fc27a..d5a24518fa 100644 --- a/include/vcpkg/binarycaching.private.h +++ b/include/vcpkg/binarycaching.private.h @@ -19,11 +19,11 @@ namespace vcpkg // - v?. -> ..0-vcpkg // - v?.. -> ..-vcpkg // - anything else -> 0.0.0-vcpkg - std::string format_version_for_nugetref(StringView version_text, StringView abi_tag); + std::string format_version_for_feedref(StringView version_text, StringView abi_tag); - struct NugetReference + struct FeedReference { - NugetReference(std::string id, std::string version) : id(std::move(id)), version(std::move(version)) { } + FeedReference(std::string id, std::string version) : id(std::move(id)), version(std::move(version)) { } std::string id; std::string version; @@ -31,7 +31,7 @@ namespace vcpkg std::string nupkg_filename() const { return Strings::concat(id, '.', version, ".nupkg"); } }; - NugetReference make_nugetref(const InstallPlanAction& action, StringView prefix); + FeedReference make_nugetref(const InstallPlanAction& action, StringView prefix); std::string generate_nuspec(const Path& package_dir, const InstallPlanAction& action, diff --git a/include/vcpkg/metrics.h b/include/vcpkg/metrics.h index ceec9d9522..42113e5ca3 100644 --- a/include/vcpkg/metrics.h +++ b/include/vcpkg/metrics.h @@ -24,6 +24,7 @@ namespace vcpkg BinaryCachingHttp, BinaryCachingNuget, BinaryCachingSource, + BinaryCachingUpkg, ErrorVersioningDisabled, ErrorVersioningNoBaseline, GitHubRepository, diff --git a/include/vcpkg/tools.h b/include/vcpkg/tools.h index 4f99ee22cc..80c64c1100 100644 --- a/include/vcpkg/tools.h +++ b/include/vcpkg/tools.h @@ -23,6 +23,7 @@ namespace vcpkg static constexpr StringLiteral GIT = "git"; static constexpr StringLiteral GSUTIL = "gsutil"; static constexpr StringLiteral AWSCLI = "aws"; + static constexpr StringLiteral AZCLI = "az"; static constexpr StringLiteral COSCLI = "coscli"; static constexpr StringLiteral MONO = "mono"; static constexpr StringLiteral NINJA = "ninja"; @@ -45,6 +46,11 @@ namespace vcpkg virtual const std::string& get_tool_version(StringView tool, MessageSink& status_sink) const = 0; }; + ExpectedL extract_prefixed_nonquote(StringLiteral prefix, + StringLiteral tool_name, + std::string&& output, + const Path& exe_path); + ExpectedL extract_prefixed_nonwhitespace(StringLiteral prefix, StringLiteral tool_name, std::string&& output, diff --git a/locales/messages.json b/locales/messages.json index be4a9a9054..c3dc7a5915 100644 --- a/locales/messages.json +++ b/locales/messages.json @@ -858,6 +858,8 @@ "HelpBinaryCachingAwsHeader": "Azure Web Services sources", "HelpBinaryCachingAzBlob": "**Experimental: will change or be removed without warning**\nAdds an Azure Blob Storage source. Uses Shared Access Signature validation. should include the container path. must be be prefixed with a \"?\".", "_HelpBinaryCachingAzBlob.comment": "Printed as the 'definition' for 'x-azblob,,[,]'.", + "HelpBinaryCachingAzUpkg": "**Experimental: will change or be removed without warning**\nAdds a Universal Package Azure Artifacts source. Uses the Azure CLI (az artifacts) for uploads and downloads.", + "_HelpBinaryCachingAzUpkg.comment": "Printed as the 'definition' for 'x-az-universal,,,[,]'.", "HelpBinaryCachingCos": "**Experimental: will change or be removed without warning**\nAdds an COS source. Uses the cos CLI for uploads and downloads. should include the scheme 'cos://' and be suffixed with a \"/\".", "_HelpBinaryCachingCos.comment": "Printed as the 'definition' for 'x-cos,[,]'.", "HelpBinaryCachingDefaults": "Adds the default file-based location. Based on your system settings, the default path to store binaries is \"{path}\". This consults %LOCALAPPDATA%/%APPDATA% on Windows and $XDG_CACHE_HOME or $HOME on other platforms.", @@ -997,6 +999,8 @@ "_InvalidArgumentRequiresBaseUrl.comment": "An example of {base_url} is azblob://. An example of {binary_source} is azblob.", "InvalidArgumentRequiresBaseUrlAndToken": "invalid argument: binary config '{binary_source}' requires at least a base-url and a SAS token", "_InvalidArgumentRequiresBaseUrlAndToken.comment": "An example of {binary_source} is azblob.", + "InvalidArgumentRequiresFourOrFiveArguments": "invalid argument: binary config '{binary_source}' requires 4 or 5 arguments", + "_InvalidArgumentRequiresFourOrFiveArguments.comment": "An example of {binary_source} is azblob.", "InvalidArgumentRequiresNoWildcards": "cannot fix Windows path case for path containing wildcards: {path}", "_InvalidArgumentRequiresNoWildcards.comment": "An example of {path} is /foo/bar.", "InvalidArgumentRequiresNoneArguments": "invalid argument: binary config '{binary_source}' does not take arguments", @@ -1359,6 +1363,8 @@ "_ResponseFileCode.comment": "Explains to the user that they can use response files on the command line, 'response_file' must have no spaces and be a legal file name.", "RestoredPackagesFromAWS": "Restored {count} package(s) from AWS in {elapsed}. Use --debug to see more details.", "_RestoredPackagesFromAWS.comment": "An example of {count} is 42. An example of {elapsed} is 3.532 min.", + "RestoredPackagesFromAZUPKG": "Restored {count} package(s) from Universal Packages in {elapsed}. Use --debug to see more details.", + "_RestoredPackagesFromAZUPKG.comment": "An example of {count} is 42. An example of {elapsed} is 3.532 min.", "RestoredPackagesFromCOS": "Restored {count} package(s) from COS in {elapsed}. Use --debug to see more details.", "_RestoredPackagesFromCOS.comment": "An example of {count} is 42. An example of {elapsed} is 3.532 min.", "RestoredPackagesFromFiles": "Restored {count} package(s) from {path} in {elapsed}. Use --debug to see more details.", diff --git a/src/vcpkg-test/binarycaching.cpp b/src/vcpkg-test/binarycaching.cpp index 64800c976a..a41fd6bb1a 100644 --- a/src/vcpkg-test/binarycaching.cpp +++ b/src/vcpkg-test/binarycaching.cpp @@ -166,30 +166,30 @@ TEST_CASE ("CacheStatus operations", "[BinaryCache]") REQUIRE(assignee.is_restored()); } -TEST_CASE ("format_version_for_nugetref semver-ish", "[format_version_for_nugetref]") +TEST_CASE ("format_version_for_feedref semver-ish", "[format_version_for_feedref]") { - REQUIRE(format_version_for_nugetref("0.0.0", "abitag") == "0.0.0-vcpkgabitag"); - REQUIRE(format_version_for_nugetref("1.0.1", "abitag") == "1.0.1-vcpkgabitag"); - REQUIRE(format_version_for_nugetref("1.01.000", "abitag") == "1.1.0-vcpkgabitag"); - REQUIRE(format_version_for_nugetref("1.2", "abitag") == "1.2.0-vcpkgabitag"); - REQUIRE(format_version_for_nugetref("v52", "abitag") == "52.0.0-vcpkgabitag"); - REQUIRE(format_version_for_nugetref("v09.01.02", "abitag") == "9.1.2-vcpkgabitag"); - REQUIRE(format_version_for_nugetref("1.1.1q", "abitag") == "1.1.1-vcpkgabitag"); - REQUIRE(format_version_for_nugetref("1", "abitag") == "1.0.0-vcpkgabitag"); + REQUIRE(format_version_for_feedref("0.0.0", "abitag") == "0.0.0-vcpkgabitag"); + REQUIRE(format_version_for_feedref("1.0.1", "abitag") == "1.0.1-vcpkgabitag"); + REQUIRE(format_version_for_feedref("1.01.000", "abitag") == "1.1.0-vcpkgabitag"); + REQUIRE(format_version_for_feedref("1.2", "abitag") == "1.2.0-vcpkgabitag"); + REQUIRE(format_version_for_feedref("v52", "abitag") == "52.0.0-vcpkgabitag"); + REQUIRE(format_version_for_feedref("v09.01.02", "abitag") == "9.1.2-vcpkgabitag"); + REQUIRE(format_version_for_feedref("1.1.1q", "abitag") == "1.1.1-vcpkgabitag"); + REQUIRE(format_version_for_feedref("1", "abitag") == "1.0.0-vcpkgabitag"); } -TEST_CASE ("format_version_for_nugetref date", "[format_version_for_nugetref]") +TEST_CASE ("format_version_for_feedref date", "[format_version_for_feedref]") { - REQUIRE(format_version_for_nugetref("2020-06-26", "abitag") == "2020.6.26-vcpkgabitag"); - REQUIRE(format_version_for_nugetref("20-06-26", "abitag") == "0.0.0-vcpkgabitag"); - REQUIRE(format_version_for_nugetref("2020-06-26-release", "abitag") == "2020.6.26-vcpkgabitag"); - REQUIRE(format_version_for_nugetref("2020-06-26000", "abitag") == "2020.6.26-vcpkgabitag"); + REQUIRE(format_version_for_feedref("2020-06-26", "abitag") == "2020.6.26-vcpkgabitag"); + REQUIRE(format_version_for_feedref("20-06-26", "abitag") == "0.0.0-vcpkgabitag"); + REQUIRE(format_version_for_feedref("2020-06-26-release", "abitag") == "2020.6.26-vcpkgabitag"); + REQUIRE(format_version_for_feedref("2020-06-26000", "abitag") == "2020.6.26-vcpkgabitag"); } -TEST_CASE ("format_version_for_nugetref generic", "[format_version_for_nugetref]") +TEST_CASE ("format_version_for_feedref generic", "[format_version_for_feedref]") { - REQUIRE(format_version_for_nugetref("apr", "abitag") == "0.0.0-vcpkgabitag"); - REQUIRE(format_version_for_nugetref("", "abitag") == "0.0.0-vcpkgabitag"); + REQUIRE(format_version_for_feedref("apr", "abitag") == "0.0.0-vcpkgabitag"); + REQUIRE(format_version_for_feedref("", "abitag") == "0.0.0-vcpkgabitag"); } TEST_CASE ("generate_nuspec", "[generate_nuspec]") @@ -236,11 +236,11 @@ Build-Depends: bzip compiler_info.version = "compilerversion"; ipa.abi_info.get()->compiler_info = compiler_info; - NugetReference ref2 = make_nugetref(ipa, "prefix_"); + FeedReference ref2 = make_nugetref(ipa, "prefix_"); REQUIRE(ref2.nupkg_filename() == "prefix_zlib2_x64-windows.1.5.0-vcpkgpackageabi.nupkg"); - NugetReference ref = make_nugetref(ipa, ""); + FeedReference ref = make_nugetref(ipa, ""); REQUIRE(ref.nupkg_filename() == "zlib2_x64-windows.1.5.0-vcpkgpackageabi.nupkg"); diff --git a/src/vcpkg-test/configparser.cpp b/src/vcpkg-test/configparser.cpp index 5e8453ef65..cc8832b344 100644 --- a/src/vcpkg-test/configparser.cpp +++ b/src/vcpkg-test/configparser.cpp @@ -560,6 +560,42 @@ TEST_CASE ("BinaryConfigParser HTTP provider", "[binaryconfigparser]") } } +TEST_CASE ("BinaryConfigParser Universal Packages provider", "[binaryconfigparser]") +{ + // Scheme: x-az-universal,,,[,] + { + auto parsed = + parse_binary_provider_configs("x-az-universal,test_organization,test_project_name,test_feed,read", {}); + auto state = parsed.value_or_exit(VCPKG_LINE_INFO); + REQUIRE(state.upkg_templates_to_get.size() == 1); + REQUIRE(state.upkg_templates_to_get[0].feed == "test_feed"); + REQUIRE(state.upkg_templates_to_get[0].organization == "test_organization"); + REQUIRE(state.upkg_templates_to_get[0].project == "test_project_name"); + } + { + auto parsed = + parse_binary_provider_configs("x-az-universal,test_organization,test_project_name,test_feed,readwrite", {}); + auto state = parsed.value_or_exit(VCPKG_LINE_INFO); + REQUIRE(state.upkg_templates_to_get.size() == 1); + REQUIRE(state.upkg_templates_to_put.size() == 1); + REQUIRE(state.upkg_templates_to_get[0].feed == "test_feed"); + REQUIRE(state.upkg_templates_to_get[0].organization == "test_organization"); + REQUIRE(state.upkg_templates_to_get[0].project == "test_project_name"); + REQUIRE(state.upkg_templates_to_put[0].feed == "test_feed"); + REQUIRE(state.upkg_templates_to_put[0].organization == "test_organization"); + REQUIRE(state.upkg_templates_to_put[0].project == "test_project_name"); + } + { + auto parsed = parse_binary_provider_configs( + "x-az-universal,test_organization,test_project_name,test_feed,extra_argument,readwrite", {}); + REQUIRE(!parsed.has_value()); + } + { + auto parsed = parse_binary_provider_configs("x-az-universal,missing_args,read", {}); + REQUIRE(!parsed.has_value()); + } +} + TEST_CASE ("AssetConfigParser azurl provider", "[assetconfigparser]") { CHECK(parse_download_configuration({})); diff --git a/src/vcpkg-test/tools.cpp b/src/vcpkg-test/tools.cpp index cc902cc70c..431309af4c 100644 --- a/src/vcpkg-test/tools.cpp +++ b/src/vcpkg-test/tools.cpp @@ -128,3 +128,15 @@ TEST_CASE ("extract_prefixed_nonwhitespace", "[tools]") CHECK(error_result.error() == "error: fooutil (fooutil.exe) produced unexpected output when attempting to " "determine the version:\nmalformed output"); } + +TEST_CASE ("extract_prefixed_nonquote", "[tools]") +{ + CHECK(extract_prefixed_nonquote("fooutil version ", "fooutil", "fooutil version 1.2\"", "fooutil.exe") + .value_or_exit(VCPKG_LINE_INFO) == "1.2"); + CHECK(extract_prefixed_nonquote("fooutil version ", "fooutil", "fooutil version 1.2 \" ", "fooutil.exe") + .value_or_exit(VCPKG_LINE_INFO) == "1.2 "); + auto error_result = extract_prefixed_nonquote("fooutil version ", "fooutil", "malformed output", "fooutil.exe"); + CHECK(!error_result.has_value()); + CHECK(error_result.error() == "error: fooutil (fooutil.exe) produced unexpected output when attempting to " + "determine the version:\nmalformed output"); +} diff --git a/src/vcpkg/binarycaching.cpp b/src/vcpkg/binarycaching.cpp index 1b093139cb..00171cd62f 100644 --- a/src/vcpkg/binarycaching.cpp +++ b/src/vcpkg/binarycaching.cpp @@ -186,13 +186,13 @@ namespace return ret; } - NugetReference make_nugetref(const PackageSpec& spec, const Version& version, StringView abi_tag, StringView prefix) + FeedReference make_feedref(const PackageSpec& spec, const Version& version, StringView abi_tag, StringView prefix) { - return {Strings::concat(prefix, spec.dir()), format_version_for_nugetref(version.text, abi_tag)}; + return {Strings::concat(prefix, spec.dir()), format_version_for_feedref(version.text, abi_tag)}; } - NugetReference make_nugetref(const BinaryPackageReadInfo& info, StringView prefix) + FeedReference make_feedref(const BinaryPackageReadInfo& info, StringView prefix) { - return make_nugetref(info.spec, info.version, info.package_abi, prefix); + return make_feedref(info.spec, info.version, info.package_abi, prefix); } void clean_prepare_dir(const Filesystem& fs, const Path& dir) @@ -650,7 +650,7 @@ namespace NuGetSource m_src; - static std::string generate_packages_config(View refs) + static std::string generate_packages_config(View refs) { XmlSerializer xml; xml.emit_declaration().line_break(); @@ -743,7 +743,7 @@ namespace } size_t count_stored = 0; - auto nupkg_path = m_buildtrees / make_nugetref(request, m_nuget_prefix).nupkg_filename(); + auto nupkg_path = m_buildtrees / make_feedref(request, m_nuget_prefix).nupkg_filename(); for (auto&& write_src : m_sources) { msg_sink.println( @@ -1255,6 +1255,162 @@ namespace Path m_tool; }; + struct AzureUpkgTool + { + AzureUpkgTool(const ToolCache& cache, MessageSink& sink) { az_cli = cache.get_tool_path(Tools::AZCLI, sink); } + + Command base_cmd(const AzureUpkgSource& src, + StringView package_name, + StringView package_version, + StringView verb) const + { + Command cmd{az_cli}; + cmd.string_arg("artifacts") + .string_arg("universal") + .string_arg(verb) + .string_arg("--organization") + .string_arg(src.organization) + .string_arg("--feed") + .string_arg(src.feed) + .string_arg("--name") + .string_arg(package_name) + .string_arg("--version") + .string_arg(package_version); + if (!src.project.empty()) + { + cmd.string_arg("--project").string_arg(src.project).string_arg("--scope").string_arg("project"); + } + return cmd; + } + + ExpectedL download(const AzureUpkgSource& src, + StringView package_name, + StringView package_version, + const Path& download_path, + MessageSink& sink) const + { + Command cmd = base_cmd(src, package_name, package_version, "download"); + cmd.string_arg("--path").string_arg(download_path); + return run_az_artifacts_cmd(cmd, sink); + } + + ExpectedL publish(const AzureUpkgSource& src, + StringView package_name, + StringView package_version, + const Path& package_dir, + StringView description, + MessageSink& sink) const + { + Command cmd = base_cmd(src, package_name, package_version, "publish"); + cmd.string_arg("--description").string_arg(description).string_arg("--path").string_arg(package_dir); + return run_az_artifacts_cmd(cmd, sink); + } + + ExpectedL run_az_artifacts_cmd(const Command& cmd, MessageSink& sink) const + { + RedirectedProcessLaunchSettings show_in_debug_settings; + show_in_debug_settings.echo_in_debug = EchoInDebug::Show; + return cmd_execute_and_capture_output(cmd, show_in_debug_settings) + .then([&](ExitCodeAndOutput&& res) -> ExpectedL { + if (res.exit_code == 0) + { + return {Unit{}}; + } + + // az command line error message: Before you can run Azure DevOps commands, you need to + // run the login command(az login if using AAD/MSA identity else az devops login if using PAT token) + // to setup credentials. + if (res.output.find("you need to run the login command") != std::string::npos) + { + sink.println(Color::warning, + msgFailedVendorAuthentication, + msg::vendor = "Universal Packages", + msg::url = "https://learn.microsoft.com/cli/azure/authenticate-azure-cli"); + } + return LocalizedString::from_raw(std::move(res).output); + }); + } + Path az_cli; + }; + + struct AzureUpkgPutBinaryProvider : public IWriteBinaryProvider + { + AzureUpkgPutBinaryProvider(const ToolCache& cache, MessageSink& sink, std::vector&& sources) + : m_azure_tool(cache, sink), m_sources(sources) + { + } + + size_t push_success(const BinaryPackageWriteInfo& request, MessageSink& msg_sink) override + { + size_t count_stored = 0; + auto ref = make_feedref(request, ""); + std::string package_description = "Cached package for " + ref.id; + for (auto&& write_src : m_sources) + { + auto res = m_azure_tool.publish( + write_src, ref.id, ref.version, request.package_dir, package_description, msg_sink); + if (res) + { + count_stored++; + } + else + { + msg::println(res.error()); + } + } + + return count_stored; + } + + bool needs_nuspec_data() const override { return false; } + bool needs_zip_file() const override { return false; } + + private: + AzureUpkgTool m_azure_tool; + std::vector m_sources; + }; + + struct AzureUpkgGetBinaryProvider : public IReadBinaryProvider + { + AzureUpkgGetBinaryProvider(const ToolCache& cache, MessageSink& sink, AzureUpkgSource source) + : m_azure_tool(cache, sink), m_sink(sink), m_source(source) + { + } + + // Prechecking doesn't exist with universal packages so it's not implemented + void precheck(View, Span) const override { } + + LocalizedString restored_message(size_t count, + std::chrono::high_resolution_clock::duration elapsed) const override + { + return msg::format(msgRestoredPackagesFromAZUPKG, msg::count = count, msg::elapsed = ElapsedTime(elapsed)); + } + + void fetch(View actions, Span out_status) const override + { + for (size_t i = 0; i < actions.size(); ++i) + { + auto info = BinaryPackageReadInfo{*actions[i]}; + auto ref = make_feedref(info, ""); + auto res = m_azure_tool.download(m_source, ref.id, ref.version, info.package_dir, m_sink); + + if (res) + { + out_status[i] = RestoreResult::restored; + } + else + { + out_status[i] = RestoreResult::unavailable; + } + } + } + + private: + AzureUpkgTool m_azure_tool; + MessageSink& m_sink; + AzureUpkgSource m_source; + }; + ExpectedL default_cache_path_impl() { auto maybe_cachepath = get_environment_variable(EnvironmentVariableVcpkgDefaultBinaryCache); @@ -1701,6 +1857,24 @@ namespace state->url_templates_to_get, state->url_templates_to_put, std::move(url_template), segments, 2); state->binary_cache_providers.insert("http"); } + else if (segments[0].second == "x-az-universal") + { + // Scheme: x-az-universal,,,[,] + if (segments.size() < 4 || segments.size() > 5) + { + return add_error(msg::format(msgInvalidArgumentRequiresFourOrFiveArguments, + msg::binary_source = "Universal Packages")); + } + AzureUpkgSource upkg_template{ + segments[1].second, + segments[2].second, + segments[3].second, + }; + + state->binary_cache_providers.insert("upkg"); + handle_readwrite( + state->upkg_templates_to_get, state->upkg_templates_to_put, std::move(upkg_template), segments, 4); + } else { return add_error(msg::format(msgUnknownBinaryProviderType), segments[0].first); @@ -1954,6 +2128,7 @@ namespace vcpkg {"gcs", DefineMetric::BinaryCachingGcs}, {"http", DefineMetric::BinaryCachingHttp}, {"nuget", DefineMetric::BinaryCachingNuget}, + {"upkg", DefineMetric::BinaryCachingUpkg}, }; MetricsSubmission metrics; @@ -2098,6 +2273,19 @@ namespace vcpkg nuget_base, std::move(s.sources_to_write), std::move(s.configs_to_write))); } } + + if (!s.upkg_templates_to_get.empty()) + { + for (auto&& src : s.upkg_templates_to_get) + { + ret.read.push_back(std::make_unique(tools, out_sink, std::move(src))); + } + } + if (!s.upkg_templates_to_put.empty()) + { + ret.write.push_back( + std::make_unique(tools, out_sink, std::move(s.upkg_templates_to_put))); + } } return std::move(ret); } @@ -2470,7 +2658,7 @@ ExpectedL vcpkg::parse_binary_provider_configs(const st return s; } -std::string vcpkg::format_version_for_nugetref(StringView version_text, StringView abi_tag) +std::string vcpkg::format_version_for_feedref(StringView version_text, StringView abi_tag) { // this cannot use DotVersion::try_parse or DateVersion::try_parse, // since this is a subtly different algorithm @@ -2608,6 +2796,7 @@ LocalizedString vcpkg::format_help_topic_binary_caching() table.format("x-azblob,,[,]", msg::format(msgHelpBinaryCachingAzBlob)); table.format("x-gcs,[,]", msg::format(msgHelpBinaryCachingGcs)); table.format("x-cos,[,]", msg::format(msgHelpBinaryCachingCos)); + table.format("x-az-universal,,,[,]", msg::format(msgHelpBinaryCachingAzUpkg)); table.blank(); // NuGet sources: @@ -2657,8 +2846,8 @@ std::string vcpkg::generate_nuget_packages_config(const ActionPlan& plan, String return std::move(xml.buf); } -NugetReference vcpkg::make_nugetref(const InstallPlanAction& action, StringView prefix) +FeedReference vcpkg::make_nugetref(const InstallPlanAction& action, StringView prefix) { - return ::make_nugetref( + return ::make_feedref( action.spec, action.version(), action.abi_info.value_or_exit(VCPKG_LINE_INFO).package_abi, prefix); } diff --git a/src/vcpkg/metrics.cpp b/src/vcpkg/metrics.cpp index c9ba1e212d..008b9f0f34 100644 --- a/src/vcpkg/metrics.cpp +++ b/src/vcpkg/metrics.cpp @@ -98,6 +98,7 @@ namespace vcpkg {DefineMetric::BinaryCachingHttp, "binarycaching_http"}, {DefineMetric::BinaryCachingNuget, "binarycaching_nuget"}, {DefineMetric::BinaryCachingSource, "binarycaching-source"}, + {DefineMetric::BinaryCachingUpkg, "binarycaching_upkg"}, {DefineMetric::ErrorVersioningDisabled, "error-versioning-disabled"}, {DefineMetric::ErrorVersioningNoBaseline, "error-versioning-no-baseline"}, {DefineMetric::GitHubRepository, "GITHUB_REPOSITORY"}, diff --git a/src/vcpkg/tools.cpp b/src/vcpkg/tools.cpp index cc956da923..c9095dc663 100644 --- a/src/vcpkg/tools.cpp +++ b/src/vcpkg/tools.cpp @@ -157,6 +157,35 @@ namespace vcpkg }); } + // set target to the subrange [begin_idx, end_idx) + static void set_string_to_subrange(std::string& target, size_t begin_idx, size_t end_idx) + { + if (end_idx != std::string::npos) + { + target.resize(end_idx); + } + target.erase(0, begin_idx); + } + + ExpectedL extract_prefixed_nonquote(StringLiteral prefix, + StringLiteral tool_name, + std::string&& output, + const Path& exe_path) + { + auto idx = output.find(prefix.data(), 0, prefix.size()); + if (idx != std::string::npos) + { + idx += prefix.size(); + const auto end_idx = output.find('"', idx); + set_string_to_subrange(output, idx, end_idx); + return {std::move(output), expected_left_tag}; + } + + return std::move(msg::format_error(msgUnexpectedToolOutput, msg::tool_name = tool_name, msg::path = exe_path) + .append_raw('\n') + .append_raw(std::move(output))); + } + ExpectedL extract_prefixed_nonwhitespace(StringLiteral prefix, StringLiteral tool_name, std::string&& output, @@ -167,12 +196,7 @@ namespace vcpkg { idx += prefix.size(); const auto end_idx = output.find_first_of(" \r\n", idx, 3); - if (end_idx != std::string::npos) - { - output.resize(end_idx); - } - - output.erase(0, idx); + set_string_to_subrange(output, idx, end_idx); return {std::move(output), expected_left_tag}; } @@ -463,6 +487,31 @@ namespace vcpkg } }; + struct AzCliProvider : ToolProvider + { + virtual bool is_abi_sensitive() const override { return false; } + virtual StringView tool_data_name() const override { return Tools::AZCLI; } + virtual std::vector system_exe_stems() const override { return {Tools::AZCLI}; } + virtual std::array default_min_version() const override { return {2, 64, 0}; } + + virtual ExpectedL get_version(const ToolCache&, MessageSink&, const Path& exe_path) const override + { + return run_to_extract_version( + Tools::AZCLI, + exe_path, + Command(exe_path).string_arg("version").string_arg("--output").string_arg("json")) + .then([&](std::string&& output) { + // { + // ... + // "azure-cli": "2.64.0", + // ... + // } + + return extract_prefixed_nonquote("\"azure-cli\": \"", Tools::AZCLI, std::move(output), exe_path); + }); + } + }; + struct CosCliProvider : ToolProvider { virtual bool is_abi_sensitive() const override { return false; } @@ -864,6 +913,7 @@ namespace vcpkg if (tool == Tools::MONO) return get_path(MonoProvider(), status_sink); if (tool == Tools::GSUTIL) return get_path(GsutilProvider(), status_sink); if (tool == Tools::AWSCLI) return get_path(AwsCliProvider(), status_sink); + if (tool == Tools::AZCLI) return get_path(AzCliProvider(), status_sink); if (tool == Tools::COSCLI) return get_path(CosCliProvider(), status_sink); if (tool == Tools::PYTHON3) return get_path(Python3Provider(), status_sink); if (tool == Tools::PYTHON3_WITH_VENV) return get_path(Python3WithVEnvProvider(), status_sink); From dc69ae8bdd6fc8d14b8004ce311b2c7bac79c2ac Mon Sep 17 00:00:00 2001 From: Billy O'Neal Date: Thu, 17 Oct 2024 18:57:34 -0700 Subject: [PATCH 31/39] Add a better error message for unlimited argument commands. (#1515) Before / after: ```console PS D:\vcpkg\test> ..\vcpkg.exe new --application PS D:\vcpkg\test> ..\vcpkg.exe add rapidjson error: the command 'add' requires between 2 and 18446744073709551615 arguments, inclusive, but 1 were provided [...] PS D:\vcpkg\test> D:\vcpkg-tool\out\build\Win-x64-Debug-WithArtifacts\vcpkg.exe add rapidjson error: the command 'add' requires at least 2 arguments, but 1 were provided ``` --- include/vcpkg/base/message-data.inc.h | 4 ++++ locales/messages.json | 2 ++ src/vcpkg-test/cmd-parser.cpp | 9 +++++++++ src/vcpkg/base/cmd-parser.cpp | 21 ++++++++++++++++----- 4 files changed, 31 insertions(+), 5 deletions(-) diff --git a/include/vcpkg/base/message-data.inc.h b/include/vcpkg/base/message-data.inc.h index 035e5b6b62..4de9ddb69a 100644 --- a/include/vcpkg/base/message-data.inc.h +++ b/include/vcpkg/base/message-data.inc.h @@ -2148,6 +2148,10 @@ DECLARE_MESSAGE(NonRangeArgs, "{actual} is an integer", "the command '{command_name}' requires between {lower} and {upper} arguments, inclusive, but {actual} " "were provided") +DECLARE_MESSAGE(NonRangeArgsGreater, + (msg::command_name, msg::lower, msg::actual), + "{actual} is an integer", + "the command '{command_name}' requires at least {lower} arguments, but {actual} were provided") DECLARE_MESSAGE(NonZeroOrOneRemainingArgs, (msg::command_name), "", diff --git a/locales/messages.json b/locales/messages.json index c3dc7a5915..ba6282e831 100644 --- a/locales/messages.json +++ b/locales/messages.json @@ -1191,6 +1191,8 @@ "_NonOneRemainingArgs.comment": "An example of {command_name} is install.", "NonRangeArgs": "the command '{command_name}' requires between {lower} and {upper} arguments, inclusive, but {actual} were provided", "_NonRangeArgs.comment": "{actual} is an integer An example of {command_name} is install. An example of {lower} is 42. An example of {upper} is 42.", + "NonRangeArgsGreater": "the command '{command_name}' requires at least {lower} arguments, but {actual} were provided", + "_NonRangeArgsGreater.comment": "{actual} is an integer An example of {command_name} is install. An example of {lower} is 42.", "NonZeroOrOneRemainingArgs": "the command '{command_name}' requires zero or one arguments", "_NonZeroOrOneRemainingArgs.comment": "An example of {command_name} is install.", "NonZeroRemainingArgs": "the command '{command_name}' does not accept any additional arguments", diff --git a/src/vcpkg-test/cmd-parser.cpp b/src/vcpkg-test/cmd-parser.cpp index 14a45fc735..4479473461 100644 --- a/src/vcpkg-test/cmd-parser.cpp +++ b/src/vcpkg-test/cmd-parser.cpp @@ -891,6 +891,15 @@ TEST_CASE ("Consume remaining args", "[cmd_parser]") CHECK(uut.get_errors() == expected_errors); CHECK(uut.get_remaining_args().empty()); } + + { + CmdParser uut{std::vector{"first-arg", "second-arg"}}; + CHECK(uut.consume_remaining_args("command", 3, SIZE_MAX) == std::vector{}); + const auto expected_errors = + localized({"error: the command 'command' requires at least 3 arguments, but 2 were provided"}); + CHECK(uut.get_errors() == expected_errors); + CHECK(uut.get_remaining_args().empty()); + } } TEST_CASE ("delistify_conjoined_value", "[cmd_parser]") diff --git a/src/vcpkg/base/cmd-parser.cpp b/src/vcpkg/base/cmd-parser.cpp index ab07bb3895..9b84d599ed 100644 --- a/src/vcpkg/base/cmd-parser.cpp +++ b/src/vcpkg/base/cmd-parser.cpp @@ -964,11 +964,22 @@ namespace vcpkg bool error = consume_remaining_args_impl(results); if (max_arity < results.size() || results.size() < min_arity) { - errors.emplace_back(msg::format_error(msgNonRangeArgs, - msg::command_name = command_name, - msg::lower = min_arity, - msg::upper = max_arity, - msg::actual = results.size())); + if (max_arity == SIZE_MAX) + { + errors.emplace_back(msg::format_error(msgNonRangeArgsGreater, + msg::command_name = command_name, + msg::lower = min_arity, + msg::actual = results.size())); + } + else + { + errors.emplace_back(msg::format_error(msgNonRangeArgs, + msg::command_name = command_name, + msg::lower = min_arity, + msg::upper = max_arity, + msg::actual = results.size())); + } + for (std::size_t idx = max_arity; idx < results.size(); ++idx) { errors.emplace_back(msg::format_error(msgUnexpectedArgument, msg::option = results[idx])); From e392d7347fe72dff56e7857f7571c22301237ae6 Mon Sep 17 00:00:00 2001 From: Billy O'Neal Date: Thu, 17 Oct 2024 19:23:15 -0700 Subject: [PATCH 32/39] Update vcpkg-scripts SHA. (#1516) --- vcpkg-init/vcpkg-scripts-sha.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vcpkg-init/vcpkg-scripts-sha.txt b/vcpkg-init/vcpkg-scripts-sha.txt index e3d0058bc6..361a817e67 100644 --- a/vcpkg-init/vcpkg-scripts-sha.txt +++ b/vcpkg-init/vcpkg-scripts-sha.txt @@ -1 +1 @@ -2960d7d80e8d09c84ae8abf15c12196c2ca7d39a +b2a47d316de1f3625ea43a7ca3e42dd28c52ece7 From ad7b71c9fc939fbeda446592d41d829d02be0724 Mon Sep 17 00:00:00 2001 From: Embedded Bot Date: Fri, 18 Oct 2024 05:03:13 +0000 Subject: [PATCH 33/39] [localization][automated][ci skip] update locale files --- locales/messages.cs.json | 4 ++++ locales/messages.de.json | 4 ++++ locales/messages.es.json | 4 ++++ locales/messages.fr.json | 4 ++++ locales/messages.it.json | 4 ++++ locales/messages.ja.json | 4 ++++ locales/messages.ko.json | 4 ++++ locales/messages.pl.json | 4 ++++ locales/messages.pt-BR.json | 4 ++++ locales/messages.ru.json | 4 ++++ locales/messages.tr.json | 4 ++++ locales/messages.zh-Hans.json | 4 ++++ locales/messages.zh-Hant.json | 4 ++++ 13 files changed, 52 insertions(+) diff --git a/locales/messages.cs.json b/locales/messages.cs.json index 1b884f1881..23fa4b00b8 100644 --- a/locales/messages.cs.json +++ b/locales/messages.cs.json @@ -584,6 +584,7 @@ "HelpBinaryCachingAwsConfig": "**Experimentální: může se změnit nebo odebrat bez upozornění.**\nPřidá zdroj AWS S3. Přidá konfiguraci AWS. V současné době podporuje pouze parametr no-sign-request, který je ekvivalentem parametru --no-sign-request rozhraní příkazového řádku AWS.", "HelpBinaryCachingAwsHeader": "Zdroje webových služeb Azure", "HelpBinaryCachingAzBlob": "**Experimentální: může se změnit nebo odebrat bez upozornění.**\nPřidá zdroj Azure Blob Storage. Používá ověřování sdíleného přístupového podpisu. by měla obsahovat cestu ke kontejneru. musí mít předponu ?.", + "HelpBinaryCachingAzUpkg": "**Experimental: will change or be removed without warning**\nAdds a Universal Package Azure Artifacts source. Uses the Azure CLI (az artifacts) for uploads and downloads.", "HelpBinaryCachingCos": "**Experimentální: může se změnit nebo odebrat bez upozornění.**\nPřidá zdroj COS. Pro nahrávání a stahování používá rozhraní příkazového řádku cos. by měl obsahovat schéma cos:// a mít příponu /.", "HelpBinaryCachingDefaults": "Přidá výchozí umístění na základě souborů. Na základě nastavení systému je výchozí cesta k ukládání binárních souborů {path}. Nahlíží do %LOCALAPPDATA%/%APPDATA% ve Windows a $XDG_CACHE_HOME nebo $HOME na jiných platformách.", "HelpBinaryCachingDefaultsError": "Přidá výchozí umístění na základě souborů.", @@ -687,6 +688,7 @@ "InvalidArgumentRequiresAbsolutePath": "Neplatný argument: argumenty cesty binární konfigurace {binary_source} pro binární konfigurační řetězce musí být absolutní.", "InvalidArgumentRequiresBaseUrl": "Neplatný argument: binární konfigurace {binary_source} vyžaduje jako první argument základní adresu URL {base_url}.", "InvalidArgumentRequiresBaseUrlAndToken": "Neplatný argument: binární konfigurace {binary_source} vyžaduje alespoň základní adresu URL a token SAS.", + "InvalidArgumentRequiresFourOrFiveArguments": "invalid argument: binary config '{binary_source}' requires 4 or 5 arguments", "InvalidArgumentRequiresNoWildcards": "nelze opravit velikost písmen cesty Windows pro cestu obsahující zástupné znaky: {path}", "InvalidArgumentRequiresNoneArguments": "Neplatný argument: binární konfigurace {binary_source} nepřijímá argumenty.", "InvalidArgumentRequiresOneOrTwoArguments": "Neplatný argument: binární konfigurace {binary_source} vyžaduje 1 nebo 2 argumenty.", @@ -811,6 +813,7 @@ "NonExactlyArgs": "příkaz {command_name} vyžaduje přesně tento počet argumentů: {expected}, ale zadal se tento počet argumentů: {actual}", "NonOneRemainingArgs": "příkaz {command_name} vyžaduje přesně jeden argument", "NonRangeArgs": "příkaz {command_name} vyžaduje mezi {lower} a {upper} argumenty včetně, ale zadal se tento počet argumentů: {actual}", + "NonRangeArgsGreater": "the command '{command_name}' requires at least {lower} arguments, but {actual} were provided", "NonZeroOrOneRemainingArgs": "příkaz {command_name} vyžaduje nula nebo jeden argument", "NonZeroRemainingArgs": "příkaz {command_name} nepřijímá žádné další argumenty", "NugetOutputNotCapturedBecauseInteractiveSpecified": "Příkaz NuGet selhal a výstup se nezachytil, protože se zadala možnost --interactive.", @@ -929,6 +932,7 @@ "RemovingPackage": "Odebírá se {action_index}/{count} {spec}", "ResponseFileCode": "@response_file", "RestoredPackagesFromAWS": "Počet obnovených balíčků z AWS: {count} za {elapsed} Pokud si chcete zobrazit další podrobnosti, použijte --debug.", + "RestoredPackagesFromAZUPKG": "Restored {count} package(s) from Universal Packages in {elapsed}. Use --debug to see more details.", "RestoredPackagesFromCOS": "Počet obnovených balíčků z COS: {count} za {elapsed}. Pokud si chcete zobrazit další podrobnosti, použijte --debug.", "RestoredPackagesFromFiles": "Počet obnovených balíčků z cesty {path} za {elapsed}: {count} Pokud si chcete zobrazit další podrobnosti, použijte --debug.", "RestoredPackagesFromGCS": "Počet obnovených balíčků z GCS: {count} za {elapsed}. Pokud si chcete zobrazit další podrobnosti, použijte --debug.", diff --git a/locales/messages.de.json b/locales/messages.de.json index 67f1154161..1786edd609 100644 --- a/locales/messages.de.json +++ b/locales/messages.de.json @@ -584,6 +584,7 @@ "HelpBinaryCachingAwsConfig": "**Experimentell: Wird ohne Warnung geändert oder entfernt**\nFügt eine AWS S3-Quelle hinzu. Fügt eine AWS-Konfiguration hinzu. Unterstützt zurzeit nur den Parameter „no-sign-request“, der dem Parameter „--no-sign-request“ der AWS CLI entspricht.", "HelpBinaryCachingAwsHeader": "Azure-Webdienste-Quellen", "HelpBinaryCachingAzBlob": "**Experimentell: Wird ohne Warnung geändert oder entfernt**\nFügt eine Azure Blob Storage-Quelle hinzu. Verwendet eine Überprüfung mithilfe von Shared Access Signature. Die sollte den Containerpfad enthalten. muss ein „?“ vorangestellt werden.", + "HelpBinaryCachingAzUpkg": "**Experimental: will change or be removed without warning**\nAdds a Universal Package Azure Artifacts source. Uses the Azure CLI (az artifacts) for uploads and downloads.", "HelpBinaryCachingCos": "**Experimentell: Wird ohne Warnung geändert oder entfernt**\nFügt eine COS-Quelle hinzu. Verwendet die COS-CLI für Uploads und Downloads. muss das Schema „cos://“ enthalten und „/“ als Suffix haben.", "HelpBinaryCachingDefaults": "Fügt den dateibasierten Standardspeicherort hinzu. Basierend auf Ihren Systemeinstellungen lautet der Standardpfad zum Speichern von Binärdateien „{path}“. Hierdurch wird %LOCALAPPDATA%/%APPDATA% unter Windows und $XDG_CACHE_HOME oder $HOME auf anderen Plattformen abgefragt.", "HelpBinaryCachingDefaultsError": "Fügt den dateibasierten Standardspeicherort hinzu.", @@ -687,6 +688,7 @@ "InvalidArgumentRequiresAbsolutePath": "Ungültiges Argument: Die binäre Konfiguration '{binary_source}' Pfadargumente für binäre Konfigurationszeichenfolgen müssen absolut sein.", "InvalidArgumentRequiresBaseUrl": "Ungültiges Argument: Für die binäre Konfiguration '{binary_source}' ist eine {base_url} Basis-URL als erstes Argument erforderlich.", "InvalidArgumentRequiresBaseUrlAndToken": "Ungültiges Argument: Die Binärkonfiguration „{binary_source}“ erfordert mindestens eine Basis-URL und ein SAS-Token", + "InvalidArgumentRequiresFourOrFiveArguments": "invalid argument: binary config '{binary_source}' requires 4 or 5 arguments", "InvalidArgumentRequiresNoWildcards": "Der Windows-Pfadfall kann nicht behoben werden, weil der Pfad Platzhalter enthält: {path}", "InvalidArgumentRequiresNoneArguments": "Ungültiges Argument: Die binäre Konfiguration '{binary_source}' akzeptiert keine Argumente", "InvalidArgumentRequiresOneOrTwoArguments": "ungültiges Argument: Binärkonfiguration „{binary_source}“ erfordert 1 oder 2 Argumente", @@ -811,6 +813,7 @@ "NonExactlyArgs": "Der Befehl \"{command_name}\" erfordert genau {expected} Argumente, aber {actual} wurden angegeben.", "NonOneRemainingArgs": "Der Befehl \"{command_name}\" erfordert genau ein Argument.", "NonRangeArgs": "Der Befehl \"{command_name}\" erfordert zwischen {lower} und {upper} Argumenten, einschließlich, aber {actual} wurden angegeben.", + "NonRangeArgsGreater": "the command '{command_name}' requires at least {lower} arguments, but {actual} were provided", "NonZeroOrOneRemainingArgs": "Der Befehl \"{command_name}\" erfordert NULL oder ein Argument.", "NonZeroRemainingArgs": "Der Befehl \"{command_name}\" akzeptiert keine zusätzlichen Argumente.", "NugetOutputNotCapturedBecauseInteractiveSpecified": "Fehler beim NuGet-Befehl, und die Ausgabe wurde nicht erfasst, weil \"--interactive\" angegeben wurde.", @@ -929,6 +932,7 @@ "RemovingPackage": "{action_index}/{count} {spec} wird entfernt.", "ResponseFileCode": "@response_file", "RestoredPackagesFromAWS": "{count} Paket(e) wurde(n) von AWS in {elapsed} wiederhergestellt. Verwenden Sie „--debug\", um weitere Details anzuzeigen.", + "RestoredPackagesFromAZUPKG": "Restored {count} package(s) from Universal Packages in {elapsed}. Use --debug to see more details.", "RestoredPackagesFromCOS": "{count} Paket(e) wurde(n) von COS in {elapsed} wiederhergestellt. Verwenden Sie „--debug\", um weitere Details anzuzeigen.", "RestoredPackagesFromFiles": "{count} Paket(e) wurde(n) von {path} in {elapsed} wiederhergestellt. Verwenden Sie „--debug\", um weitere Details anzuzeigen.", "RestoredPackagesFromGCS": "{count} Paket(e) wurde(n) von GCS in {elapsed} wiederhergestellt. Verwenden Sie „--debug\", um weitere Details anzuzeigen.", diff --git a/locales/messages.es.json b/locales/messages.es.json index 2f9274444f..c07719b558 100644 --- a/locales/messages.es.json +++ b/locales/messages.es.json @@ -584,6 +584,7 @@ "HelpBinaryCachingAwsConfig": "**Experimental: cambiará o se quitará sin advertencia**\nAgrega un origen de AWS S3. Agrega una configuración de AWS. Actualmente solo admite el parámetro \"no-sign-request\" equivalente al parámetro --no-sign-request de la CLI de AWS.", "HelpBinaryCachingAwsHeader": "Orígenes de servicios web de Azure", "HelpBinaryCachingAzBlob": "**Experimental: cambiará o se quitará sin advertencia**\nAgrega un origen de Azure Blob Storage. Usa la validación de firma de acceso compartido. debe incluir la ruta de acceso del contenedor. debe tener el prefijo \"?\".", + "HelpBinaryCachingAzUpkg": "**Experimental: will change or be removed without warning**\nAdds a Universal Package Azure Artifacts source. Uses the Azure CLI (az artifacts) for uploads and downloads.", "HelpBinaryCachingCos": "**Experimental: cambiará o se quitará sin advertencia**\nAgrega un origen de COS. Usa la CLI de cos para cargas y descargas. debe incluir el esquema \"cos://\" y tener \"/\" como sufijo.", "HelpBinaryCachingDefaults": "Agrega la ubicación predeterminada basada en archivos. Según la configuración del sistema, la ruta de acceso predeterminada para almacenar archivos binarios es \"{path}\". Esto efectúa una consulta %LOCALAPPDATA%/%APPDATA% en Windows y $XDG_CACHE_HOME o $HOME en otras plataformas.", "HelpBinaryCachingDefaultsError": "Agrega la ubicación predeterminada basada en archivos.", @@ -687,6 +688,7 @@ "InvalidArgumentRequiresAbsolutePath": "argumento no válido: los argumentos de la ruta de acceso de '{binary_source}' de configuración binaria para las cadenas de configuración binarias deben ser absolutos", "InvalidArgumentRequiresBaseUrl": "argumento no válido: '{binary_source}' de configuración binaria requiere una dirección URL base de {base_url} como primer argumento", "InvalidArgumentRequiresBaseUrlAndToken": "argumento no válido: configuración binaria '{binary_source}' requiere al menos una dirección URL base y un token SAS", + "InvalidArgumentRequiresFourOrFiveArguments": "invalid argument: binary config '{binary_source}' requires 4 or 5 arguments", "InvalidArgumentRequiresNoWildcards": "no se puede corregir el caso de la ruta de acceso de Windows para la ruta de acceso que contiene caracteres comodín: {path}", "InvalidArgumentRequiresNoneArguments": "argumento no válido: '{binary_source}' de configuración binaria no toma argumentos", "InvalidArgumentRequiresOneOrTwoArguments": "argumento no válido: '{binary_source}' de configuración binaria requiere 1 ó 2 argumentos", @@ -811,6 +813,7 @@ "NonExactlyArgs": "el comando '{command_name}' requiere exactamente {expected} argumentos, pero se proporcionaron {actual}.", "NonOneRemainingArgs": "el comando '{command_name}' requiere exactamente un argumento", "NonRangeArgs": "el comando \"{command_name}\" requiere entre {lower} y {upper} argumentos, ambos inclusive, pero se proporcionaron {actual}.", + "NonRangeArgsGreater": "the command '{command_name}' requires at least {lower} arguments, but {actual} were provided", "NonZeroOrOneRemainingArgs": "el comando '{command_name}' requiere cero o un argumento", "NonZeroRemainingArgs": "el comando '{command_name}' no acepta ningún argumento adicional", "NugetOutputNotCapturedBecauseInteractiveSpecified": "Error del comando NuGet y no se capturó la salida porque se especificó --interactive", @@ -929,6 +932,7 @@ "RemovingPackage": "Quitando {action_index}/{count} {spec}", "ResponseFileCode": "@response_file", "RestoredPackagesFromAWS": "Se restauraron {count} paquetes de AWS en {elapsed}. Use --debug para ver más detalles.", + "RestoredPackagesFromAZUPKG": "Restored {count} package(s) from Universal Packages in {elapsed}. Use --debug to see more details.", "RestoredPackagesFromCOS": "Se restauraron {count} paquetes de COS en {elapsed}. Use --debug para ver más detalles.", "RestoredPackagesFromFiles": "Se restauraron {count} paquetes de {path} en {elapsed}. Use --debug para ver más detalles.", "RestoredPackagesFromGCS": "Se restauraron {count} paquetes de GCS en {elapsed}. Use --debug para ver más detalles.", diff --git a/locales/messages.fr.json b/locales/messages.fr.json index c9a099dff6..16a9463a28 100644 --- a/locales/messages.fr.json +++ b/locales/messages.fr.json @@ -584,6 +584,7 @@ "HelpBinaryCachingAwsConfig": "**Expérimental : sera modifié ou supprimé sans avertissement**\nAjoute une source AWS S3. Ajoute une configuration AWS, prend actuellement en charge uniquement le paramètre « no-sign-request » équivalent au paramètre --no-sign-request de l’interface CLI AWS.", "HelpBinaryCachingAwsHeader": "Sources Azure Service web", "HelpBinaryCachingAzBlob": "**Expérimental : sera modifié ou supprimé sans avertissement**\nAjoute une source Stockage Blob Azure. Utilise la validation de signature d’accès partagé. Doit inclure le chemin d’accès du conteneur. Doit avoir le préfixe « ? ».", + "HelpBinaryCachingAzUpkg": "**Experimental: will change or be removed without warning**\nAdds a Universal Package Azure Artifacts source. Uses the Azure CLI (az artifacts) for uploads and downloads.", "HelpBinaryCachingCos": "**Expérimental : sera modifié ou supprimé sans avertissement**\nAjoute une source COS. Utilise l’interface CLI cos pour les chargements et les téléchargements. doit inclure le schéma « cos:// » et avoir le suffixe « / ».", "HelpBinaryCachingDefaults": "Ajouter l’emplacement basé sur le fichier par défaut. En fonction de vos paramètres système, le chemin d’accès par défaut pour stocker les fichiers binaires est « {path} ». Cette opération consulte %LOCALAPPDATA%/%APPDATA% sur Windows et $XDG_CACHE_HOME ou $HOME sur d’autres plateformes.", "HelpBinaryCachingDefaultsError": "Ajoute l’emplacement basé sur les fichiers par défaut.", @@ -687,6 +688,7 @@ "InvalidArgumentRequiresAbsolutePath": "argument non valide : les arguments de chemin de la configuration binaire '{binary_source}' pour les chaînes de configuration binaires doivent être absolus", "InvalidArgumentRequiresBaseUrl": "argument non valide : la configuration binaire '{binary_source}' nécessite une URL de base {base_url} comme premier argument", "InvalidArgumentRequiresBaseUrlAndToken": "argument non valide : la configuration binaire '{binary_source}' nécessite au moins une URL de base et un jeton SAS", + "InvalidArgumentRequiresFourOrFiveArguments": "invalid argument: binary config '{binary_source}' requires 4 or 5 arguments", "InvalidArgumentRequiresNoWildcards": "impossible de corriger la casse du chemin d’accès Windows pour le chemin contenant des caractères génériques : {path}", "InvalidArgumentRequiresNoneArguments": "argument invalide : la configuration binaire '{binary_source}' ne prend pas d’arguments", "InvalidArgumentRequiresOneOrTwoArguments": "argument non valide : la configuration binaire '{binary_source}' nécessite 1 ou 2 arguments", @@ -811,6 +813,7 @@ "NonExactlyArgs": "la commande '{command_name}' requiert exactement {expected} arguments, mais {actual} ont été fournis", "NonOneRemainingArgs": "la commande '{command_name}' requiert exactement un argument", "NonRangeArgs": "la '{command_name}' de commande requiert entre les arguments {lower} et {upper}, inclus, mais {actual} ont été fournis", + "NonRangeArgsGreater": "the command '{command_name}' requires at least {lower} arguments, but {actual} were provided", "NonZeroOrOneRemainingArgs": "la '{command_name}' de commande requiert zéro ou un argument", "NonZeroRemainingArgs": "la '{command_name}' de commande n’accepte aucun argument supplémentaire", "NugetOutputNotCapturedBecauseInteractiveSpecified": "La commande NuGet a échoué et la sortie n’a pas été capturée, car --interactive a été spécifié", @@ -929,6 +932,7 @@ "RemovingPackage": "Suppression de {action_index}/{count} {spec}", "ResponseFileCode": "@response_file", "RestoredPackagesFromAWS": "{count} package(s) restauré(s) à partir d’AWS dans {elapsed}. Utilisez --debug pour afficher plus de détails.", + "RestoredPackagesFromAZUPKG": "Restored {count} package(s) from Universal Packages in {elapsed}. Use --debug to see more details.", "RestoredPackagesFromCOS": "{count} package(s) restauré(s) à partir du COS dans {elapsed}. Utilisez --debug pour afficher plus de détails.", "RestoredPackagesFromFiles": "{count} package(s) restauré(s) à partir de {path} dans {elapsed}. Utilisez --debug pour afficher plus de détails.", "RestoredPackagesFromGCS": "{count} package(s) restauré(s) à partir de GCS dans {elapsed}. Utilisez --debug pour afficher plus de détails.", diff --git a/locales/messages.it.json b/locales/messages.it.json index e71a92d8b5..f7f90ac2fa 100644 --- a/locales/messages.it.json +++ b/locales/messages.it.json @@ -584,6 +584,7 @@ "HelpBinaryCachingAwsConfig": "**Sperimentale: verrà modificato o rimosso senza preavviso**\nAggiunge un'origine di AWS S3. Aggiunge una configurazione di AWS. Supporta attualmente solo il parametro 'no-sign-request' equivalente al parametro --no-sign-request dell'interfaccia della riga di comando di AWS.", "HelpBinaryCachingAwsHeader": "Origini di servizi Web di Azure", "HelpBinaryCachingAzBlob": "**Sperimentale: verrà modificato o rimosso senza preavviso**\nAggiunge un'origine di Archiviazione BLOB di Azure. Usa la convalida della firma di accesso condiviso. deve includere il percorso del contenitore. deve essere preceduto da un prefisso \"?\".", + "HelpBinaryCachingAzUpkg": "**Experimental: will change or be removed without warning**\nAdds a Universal Package Azure Artifacts source. Uses the Azure CLI (az artifacts) for uploads and downloads.", "HelpBinaryCachingCos": "**Sperimentale: verrà modificato o rimosso senza preavviso**\nAggiunge un'origine di COS. Usa l'interfaccia della riga di comando cos per caricamenti e download. deve includere lo schema 'cos://' e deve avere \"/\" come suffisso.", "HelpBinaryCachingDefaults": "Aggiunge il percorso predefinito basato su file. In base alle impostazioni del sistema, il percorso predefinito per l'archiviazione dei file binari è \"{path}\". Consultare %LOCALAPPDATA%/%APPDATA% per Windows e $XDG_CACHE_HOME o $HOME in altre piattaforme.", "HelpBinaryCachingDefaultsError": "Aggiunge il percorso predefinito basato su file.", @@ -687,6 +688,7 @@ "InvalidArgumentRequiresAbsolutePath": "argomento non valido: gli argomenti del percorso di configurazione binaria '{binary_source}' per le stringhe di configurazione binarie devono essere assoluti", "InvalidArgumentRequiresBaseUrl": "argomento non valido: la configurazione binaria '{binary_source}' richiede un URL di base {base_url} come primo argomento", "InvalidArgumentRequiresBaseUrlAndToken": "argomento non valido: la configurazione binaria '{binary_source}' richiede almeno un URL di base e un token di firma di accesso condiviso", + "InvalidArgumentRequiresFourOrFiveArguments": "invalid argument: binary config '{binary_source}' requires 4 or 5 arguments", "InvalidArgumentRequiresNoWildcards": "non è possibile correggere maiuscole/minuscole del percorso di Windows per il percorso contenente caratteri jolly: {path}", "InvalidArgumentRequiresNoneArguments": "argomento non valido: la configurazione binaria '{binary_source}' non accetta argomenti", "InvalidArgumentRequiresOneOrTwoArguments": "argomento non valido: la configurazione binaria '{binary_source}' richiede 1 o 2 argomenti", @@ -811,6 +813,7 @@ "NonExactlyArgs": "il comando '{command_name}' richiede esattamente '{expected}' argomenti, ma ne sono stati specificati {actual}", "NonOneRemainingArgs": "il comando '{command_name}' richiede esattamente un argomento", "NonRangeArgs": "il comando '{command_name}' richiede un numero di argomenti compreso tra {lower} e {upper} inclusi, ma ne sono stati specificati {actual}", + "NonRangeArgsGreater": "the command '{command_name}' requires at least {lower} arguments, but {actual} were provided", "NonZeroOrOneRemainingArgs": "il comando '{command_name}' richiede un argomento o zero argomenti", "NonZeroRemainingArgs": "il comando '{command_name}' non accetta argomenti aggiuntivi", "NugetOutputNotCapturedBecauseInteractiveSpecified": "Il comando NuGet non è riuscito e l'output non è stato acquisito perché è stato specificato --interactive", @@ -929,6 +932,7 @@ "RemovingPackage": "Rimozione di {action_index}/{count} {spec}", "ResponseFileCode": "@response_file", "RestoredPackagesFromAWS": "Sono stati ripristinati {count} pacchetti da AWS in {elapsed}. Usare --debug per visualizzare altri dettagli.", + "RestoredPackagesFromAZUPKG": "Restored {count} package(s) from Universal Packages in {elapsed}. Use --debug to see more details.", "RestoredPackagesFromCOS": "Sono stati ripristinati {count} pacchetti da COS in {elapsed}. Usare --debug per visualizzare altri dettagli.", "RestoredPackagesFromFiles": "Sono stati ripristinati {count} pacchetti da {path} in {elapsed}. Usare --debug per visualizzare altri dettagli.", "RestoredPackagesFromGCS": "Sono stati ripristinati {count} pacchetti da GCS in {elapsed}. Usare --debug per visualizzare altri dettagli.", diff --git a/locales/messages.ja.json b/locales/messages.ja.json index 46a70799a7..0df85bf120 100644 --- a/locales/messages.ja.json +++ b/locales/messages.ja.json @@ -584,6 +584,7 @@ "HelpBinaryCachingAwsConfig": "**実験的: 警告なしに変更または削除されます**\nAWS S3 ソースを追加します。AWS 構成を追加します。現在、AWS CLI の --no-sign-request パラメーターに相当する 'no-sign-request' パラメーターのみをサポートしています。", "HelpBinaryCachingAwsHeader": "Azure Web サービス ソース", "HelpBinaryCachingAzBlob": "**実験的: 警告なしに変更または削除されます**\nAzure Blob Storage ソースを追加します。Shared Access Signature 検証を使用します。 にはコンテナー パスを含める必要があります。 には \"?\" を前に付ける必要があります。", + "HelpBinaryCachingAzUpkg": "**Experimental: will change or be removed without warning**\nAdds a Universal Package Azure Artifacts source. Uses the Azure CLI (az artifacts) for uploads and downloads.", "HelpBinaryCachingCos": "**実験的: 警告なしに変更または削除されます**\nCOS ソースを追加します。アップロードとダウンロードに cos CLI を使用します。 にはスキーム 'cos://' を含め、\"/\" のサフィックスを付ける必要があります。", "HelpBinaryCachingDefaults": "既定のファイルベースの場所を追加します。システム設定に基づいて、バイナリを格納するための既定のパスは “{path}” です。これは、Windows では %LOCALAPPDATA%/%APPDATA% を参照し、他のプラットフォームでは $XDG_CACHE_HOME または $HOME を参照します。", "HelpBinaryCachingDefaultsError": "既定のファイルベースの場所を追加します。", @@ -687,6 +688,7 @@ "InvalidArgumentRequiresAbsolutePath": "無効な引数: バイナリ構成文字列のバイナリ構成 '{binary_source}' パス引数は絶対である必要があります", "InvalidArgumentRequiresBaseUrl": "無効な引数: バイナリ構成 '{binary_source}' には、最初の引数として {base_url} ベース URL が必要です", "InvalidArgumentRequiresBaseUrlAndToken": "無効な引数: バイナリ構成 '{binary_source}' には、少なくともベース URL と SAS トークンが必要です", + "InvalidArgumentRequiresFourOrFiveArguments": "invalid argument: binary config '{binary_source}' requires 4 or 5 arguments", "InvalidArgumentRequiresNoWildcards": "ワイルドカードを含むパスの Windows パス ケースを修正できません: {path}", "InvalidArgumentRequiresNoneArguments": "無効な引数: バイナリ構成 '{binary_source}' は引数を受け取りません", "InvalidArgumentRequiresOneOrTwoArguments": "無効な引数: バイナリ構成 '{binary_source}' には 1 つまたは 2 つの引数が必要です", @@ -811,6 +813,7 @@ "NonExactlyArgs": "コマンド '{command_name}' には正確に {expected} 個の引数が必要ですが、{actual} 個が指定されました", "NonOneRemainingArgs": "コマンド '{command_name}' には正確に 1 個の引数が必要です", "NonRangeArgs": "コマンド '{command_name}' には、{lower} 引数と {upper} 引数の間 (両端を含む) が必要ですが、{actual} が指定されました", + "NonRangeArgsGreater": "the command '{command_name}' requires at least {lower} arguments, but {actual} were provided", "NonZeroOrOneRemainingArgs": "コマンド '{command_name}' には 0 または 1 個の引数が必要です", "NonZeroRemainingArgs": "コマンド '{command_name}' は追加の引数を受け付けません", "NugetOutputNotCapturedBecauseInteractiveSpecified": "--interactive が指定されたため、NuGet コマンドが失敗し、出力はキャプチャされませんでした", @@ -929,6 +932,7 @@ "RemovingPackage": "{action_index}/{count} {spec} を削除しています", "ResponseFileCode": "@response_file", "RestoredPackagesFromAWS": "{elapsed} で AWS から {count} パッケージを復元しました。--debug を使用して詳細を表示します。", + "RestoredPackagesFromAZUPKG": "Restored {count} package(s) from Universal Packages in {elapsed}. Use --debug to see more details.", "RestoredPackagesFromCOS": "{elapsed} の COS から {count} パッケージを復元しました。--debug を使用して詳細を表示します。", "RestoredPackagesFromFiles": "{elapsed} の {path} から {count} パッケージを復元しました。--debug を使用して詳細を表示します。", "RestoredPackagesFromGCS": "{elapsed} の GCS から {count} パッケージを復元しました。--debug を使用して詳細を表示します。", diff --git a/locales/messages.ko.json b/locales/messages.ko.json index 2a83e79da9..2ba1806fca 100644 --- a/locales/messages.ko.json +++ b/locales/messages.ko.json @@ -584,6 +584,7 @@ "HelpBinaryCachingAwsConfig": "**실험적: 경고 없이 변경되거나 제거됩니다**\nAWS S3 원본을 추가합니다. AWS 구성을 추가합니다. 현재 AWS CLI의 --no-sign-request 매개 변수에 해당하는 'no-sign-request' 매개 변수만 지원합니다.", "HelpBinaryCachingAwsHeader": "Azure 웹 서비스 원본", "HelpBinaryCachingAzBlob": "**실험적: 경고 없이 변경되거나 제거됩니다**\nAzure Blob Storage 원본을 추가합니다. 공유 액세스 서명 유효성 검사를 사용합니다. 은 컨테이너 경로를 포함해야 합니다. 는 \"?\"로 시작해야 합니다.", + "HelpBinaryCachingAzUpkg": "**Experimental: will change or be removed without warning**\nAdds a Universal Package Azure Artifacts source. Uses the Azure CLI (az artifacts) for uploads and downloads.", "HelpBinaryCachingCos": "**실험적: 경고 없이 변경되거나 제거됩니다**\nCOS 원본을 추가합니다. 업로드 및 다운로드에 cos CLI를 사용합니다. 는 'cos://' 체계를 포함하고 \"/\" 접미사를 붙여야 합니다.", "HelpBinaryCachingDefaults": "기본 파일 기반 위치를 추가합니다. 시스템 설정에 따라 이진 파일을 저장하는 기본 경로는 \"{path}\"입니다. Windows에서 %LOCALAPPDATA%/%APPDATA%을(를) 참조하고 다른 플랫폼에서 $XDG_CACHE_HOME 또는 $HOME을 참조합니다.", "HelpBinaryCachingDefaultsError": "기본 파일 기반 위치를 추가합니다.", @@ -687,6 +688,7 @@ "InvalidArgumentRequiresAbsolutePath": "잘못된 인수: 이진 구성 문자열의 이진 구성 '{binary_source}' 경로 인수는 절대 인수여야 함", "InvalidArgumentRequiresBaseUrl": "잘못된 인수: 이진 구성 '{binary_source}'에는 첫 번째 인수로 {base_url} 기본 URL이 필요함", "InvalidArgumentRequiresBaseUrlAndToken": "잘못된 인수: 이진 구성 '{binary_source}'에는 최소한의 기본 URL과 SAS 토큰이 필요함", + "InvalidArgumentRequiresFourOrFiveArguments": "invalid argument: binary config '{binary_source}' requires 4 or 5 arguments", "InvalidArgumentRequiresNoWildcards": "와일드카드가 포함된 경로의 Windows 경로 대/소문자를 수정할 수 없습니다. {path}", "InvalidArgumentRequiresNoneArguments": "잘못된 인수: 이진 구성 '{binary_source}'에는 인수를 사용하지 않음", "InvalidArgumentRequiresOneOrTwoArguments": "잘못된 인수: 이진 구성 '{binary_source}'에는 1개 또는 2개의 인수가 필요함", @@ -811,6 +813,7 @@ "NonExactlyArgs": "'{command_name}' 명령에는 인수가 정확히 {expected}개 필요하지만, {actual}개가 제공되었습니다.", "NonOneRemainingArgs": "'{command_name}' 명령에는 정확히 인수가 1개 필요합니다.", "NonRangeArgs": "'{command_name}' 명령에는 {lower}개에서 {upper}개 사이 인수가 필요하지만, {actual}개가 제공되었습니다.", + "NonRangeArgsGreater": "the command '{command_name}' requires at least {lower} arguments, but {actual} were provided", "NonZeroOrOneRemainingArgs": "'{command_name}' 명령에는 인수가 0개 또는 1개가 필요합니다.", "NonZeroRemainingArgs": "'{command_name}' 명령은 추가 인수를 허용하지 않습니다.", "NugetOutputNotCapturedBecauseInteractiveSpecified": "--interactive가 지정되었기 때문에 NuGet 명령이 실패하고 출력이 캡처되지 않았음", @@ -929,6 +932,7 @@ "RemovingPackage": "{action_index}/{count} {spec}을(를) 제거하는 중", "ResponseFileCode": "@response_file", "RestoredPackagesFromAWS": "{elapsed} 후 AWS의 패키지 {count}개를 복원했습니다. 자세한 내용을 보려면 --debug를 사용하세요.", + "RestoredPackagesFromAZUPKG": "Restored {count} package(s) from Universal Packages in {elapsed}. Use --debug to see more details.", "RestoredPackagesFromCOS": "{elapsed} 후 COS의 패키지 {count}개를 복원했습니다. 자세한 내용을 보려면 --debug를 사용하세요.", "RestoredPackagesFromFiles": "{elapsed} 후 {path}의 패키지 {count}개를 복원했습니다. 자세한 내용을 보려면 --debug를 사용하세요.", "RestoredPackagesFromGCS": "{elapsed} 후 GCS의 패키지 {count}개를 복원했습니다. 자세한 내용을 보려면 --debug를 사용하세요.", diff --git a/locales/messages.pl.json b/locales/messages.pl.json index 9a13372480..d7db9fe65a 100644 --- a/locales/messages.pl.json +++ b/locales/messages.pl.json @@ -584,6 +584,7 @@ "HelpBinaryCachingAwsConfig": "**Eksperymentalne: zmieni się lub zostanie usunięte bez ostrzeżenia**\nDodaje źródło usługi AWS S3. Dodaje konfigurację platformy AWS; obecnie obsługuje tylko parametr „no-sign-request”, który jest odpowiednikiem parametru --no-sign-request interfejsu wiersza polecenia platformy AWS.", "HelpBinaryCachingAwsHeader": "Źródła usług sieci Web platformy Azure", "HelpBinaryCachingAzBlob": "**Eksperymentalne: zmieni się lub zostanie usunięte bez ostrzeżenia**\nDodaje źródło usługi Azure Blob Storage. Używa weryfikacji sygnatury dostępu współdzielonego. powinna zawierać ścieżkę kontenera. musi mieć prefiks „?”.", + "HelpBinaryCachingAzUpkg": "**Experimental: will change or be removed without warning**\nAdds a Universal Package Azure Artifacts source. Uses the Azure CLI (az artifacts) for uploads and downloads.", "HelpBinaryCachingCos": "**Eksperymentalne: zmieni się lub zostanie usunięte bez ostrzeżenia**\nDodaje źródło COS. Używa interfejsu wiersza polecenia COS do przekazywania i pobierania. powinien zawierać schemat „cos://” i być zakończony sufiksem „/”.", "HelpBinaryCachingDefaults": "Dodaje domyślną lokalizację opartą na pliku. Na podstawie ustawień systemu, domyślną ścieżką do przechowywania plików binarnych jest „{path}”. Dotyczy to usługi %LOCALAPPDATA%/%APPDATA% w systemie Windows i $XDG_CACHE_HOME lub $HOME na innych platformach.", "HelpBinaryCachingDefaultsError": "Dodaje domyślną lokalizację opartą na pliku.", @@ -687,6 +688,7 @@ "InvalidArgumentRequiresAbsolutePath": "nieprawidłowy argument: argumenty ścieżki konfiguracji binarnej \"{binary_source}\" dla binarnych ciągów konfiguracji muszą być bezwzględne", "InvalidArgumentRequiresBaseUrl": "nieprawidłowy argument: konfiguracja binarna \"{binary_source}\" wymaga podstawowego adresu URL {base_url} jako pierwszego argumentu", "InvalidArgumentRequiresBaseUrlAndToken": "nieprawidłowy argument: konfiguracja binarna \"{binary_source}\" wymaga co najmniej podstawowego adresu URL i tokenu SAS", + "InvalidArgumentRequiresFourOrFiveArguments": "invalid argument: binary config '{binary_source}' requires 4 or 5 arguments", "InvalidArgumentRequiresNoWildcards": "nie można naprawić przypadku ścieżki systemu Windows dla ścieżki zawierającej symbole wieloznaczne: {path}", "InvalidArgumentRequiresNoneArguments": "nieprawidłowy argument: konfiguracja binarna „{binary_source}” nie wymaga argumentów", "InvalidArgumentRequiresOneOrTwoArguments": "nieprawidłowy argument: konfiguracja binarna „{binary_source}” wymaga 1 lub 2 argumentów", @@ -811,6 +813,7 @@ "NonExactlyArgs": "polecenie '{command_name}' wymaga dokładnie {expected} argumentów, a podano {actual}", "NonOneRemainingArgs": "polecenie '{command_name}' wymaga dokładnie jednego argumentu", "NonRangeArgs": "polecenie '{command_name}' wymaga od {lower} do {upper} argumentów włącznie, a podano {actual}", + "NonRangeArgsGreater": "the command '{command_name}' requires at least {lower} arguments, but {actual} were provided", "NonZeroOrOneRemainingArgs": "polecenie '{command_name}' wymaga zera lub jednego argumentu", "NonZeroRemainingArgs": "polecenie '{command_name}' nie akceptuje żadnych dodatkowych argumentów", "NugetOutputNotCapturedBecauseInteractiveSpecified": "Polecenie NuGet nie powiodło się i dane wyjściowe nie zostały przechwycone, ponieważ określono parametr --interactive", @@ -929,6 +932,7 @@ "RemovingPackage": "Usuwanie {action_index}/{count} {spec}", "ResponseFileCode": "@response_file", "RestoredPackagesFromAWS": "Przywrócono następującą liczbę pakietów: {count} z platformy AWS w ciągu {elapsed}. Użyj opcji --debug, aby wyświetlić więcej szczegółów.", + "RestoredPackagesFromAZUPKG": "Restored {count} package(s) from Universal Packages in {elapsed}. Use --debug to see more details.", "RestoredPackagesFromCOS": "Przywrócono następującą liczbę pakietów: {count} z COS w ciągu {elapsed}. Użyj opcji --debug, aby wyświetlić więcej szczegółów.", "RestoredPackagesFromFiles": "Przywrócono następującą liczbę pakietów: {count} ze {path} w ciągu {elapsed}. Użyj opcji --debug, aby wyświetlić więcej szczegółów.", "RestoredPackagesFromGCS": "Przywrócono następującą liczbę pakietów: {count} z GCS w ciągu {elapsed}. Użyj opcji --debug, aby wyświetlić więcej szczegółów.", diff --git a/locales/messages.pt-BR.json b/locales/messages.pt-BR.json index 1d3cfa8532..f8d13b48a0 100644 --- a/locales/messages.pt-BR.json +++ b/locales/messages.pt-BR.json @@ -584,6 +584,7 @@ "HelpBinaryCachingAwsConfig": "**Experimental: será alterado ou removido sem aviso prévio**\nAdiciona uma fonte AWS S3. Adiciona uma configuração AWS; atualmente dá suporte apenas ao parâmetro 'no-sign-request' que é equivalente ao parâmetro --no-sign-request da AWS CLI.", "HelpBinaryCachingAwsHeader": "Fontes de Serviços Web do Azure", "HelpBinaryCachingAzBlob": "**Experimental: será alterado ou removido sem aviso prévio**\nAdiciona uma fonte de Armazenamento de Blobs do Azure. Usa validação de assinatura de acesso compartilhado. deve incluir o caminho do contêiner. deve ser prefixado com um \"?\".", + "HelpBinaryCachingAzUpkg": "**Experimental: will change or be removed without warning**\nAdds a Universal Package Azure Artifacts source. Uses the Azure CLI (az artifacts) for uploads and downloads.", "HelpBinaryCachingCos": "**Experimental: será alterado ou removido sem aviso prévio**\nAdiciona uma fonte COS. Usa a CLI cos para uploads e downloads. deve incluir o esquema 'cos://' e ser sufixado com \"/\".", "HelpBinaryCachingDefaults": "Adiciona o local baseado em arquivo padrão. Com base nas configurações do sistema, o caminho padrão para armazenar binários é \"{path}\". Isso consulta %LOCALAPPDATA%/%APPDATA% no Windows e $XDG_CACHE_HOME ou $HOME em outras plataformas.", "HelpBinaryCachingDefaultsError": "Adiciona o local baseado em arquivo padrão.", @@ -687,6 +688,7 @@ "InvalidArgumentRequiresAbsolutePath": "argumento inválido: os argumentos de caminho da configuração binária '{binary_source}' para cadeias de caracteres de configuração binária devem ser absolutos", "InvalidArgumentRequiresBaseUrl": "argumento inválido: a configuração binária '{binary_source}' requer uma URL base {base_url} como o primeiro argumento", "InvalidArgumentRequiresBaseUrlAndToken": "argumento inválido: a configuração binária '{binary_source}' requer pelo menos uma URL base e um token SAS", + "InvalidArgumentRequiresFourOrFiveArguments": "invalid argument: binary config '{binary_source}' requires 4 or 5 arguments", "InvalidArgumentRequiresNoWildcards": "não é possível corrigir o caso do caminho do Windows para o caminho que contém curingas: {path}", "InvalidArgumentRequiresNoneArguments": "argumento inválido: a configuração binária '{binary_source}' não usa argumentos", "InvalidArgumentRequiresOneOrTwoArguments": "argumento inválido: a configuração binária '{binary_source}' requer 1 ou 2 argumentos", @@ -811,6 +813,7 @@ "NonExactlyArgs": "o comando “{command_name}” requer exatamente {expected} argumentos, mas {actual} foram fornecidos.", "NonOneRemainingArgs": "o comando “{command_name}” requer exatamente um argumento", "NonRangeArgs": "o comando “{command_name}” requer entre {lower} e {upper} argumentos, inclusive, mas {actual} foram fornecidos", + "NonRangeArgsGreater": "the command '{command_name}' requires at least {lower} arguments, but {actual} were provided", "NonZeroOrOneRemainingArgs": "o comando “{command_name}” requer zero ou um argumento", "NonZeroRemainingArgs": "o comando “{command_name}” não aceita argumentos adicionais", "NugetOutputNotCapturedBecauseInteractiveSpecified": "Falha no comando NuGet e a saída não foi capturada porque --interactive foi especificado", @@ -929,6 +932,7 @@ "RemovingPackage": "Removendo {action_index}/{count} {spec}", "ResponseFileCode": "@response_file", "RestoredPackagesFromAWS": "{count} pacote(s) restaurado(s) da AWS em {elapsed}. Use --debug para ver mais detalhes.", + "RestoredPackagesFromAZUPKG": "Restored {count} package(s) from Universal Packages in {elapsed}. Use --debug to see more details.", "RestoredPackagesFromCOS": "{count} pacote(s) restaurado(s) do COS em {elapsed}. Use --debug para ver mais detalhes.", "RestoredPackagesFromFiles": "{count} pacote(s) restaurado(s) de {path} em {elapsed}. Use --debug para ver mais detalhes.", "RestoredPackagesFromGCS": "{count} pacote(s) restaurado(s) do GCS em {elapsed}. Use --debug para ver mais detalhes.", diff --git a/locales/messages.ru.json b/locales/messages.ru.json index 2ebe3f0b23..fe1b1df88b 100644 --- a/locales/messages.ru.json +++ b/locales/messages.ru.json @@ -584,6 +584,7 @@ "HelpBinaryCachingAwsConfig": "**Экспериментальная функция: будет изменена или удалена без предупреждения**\nДобавляет источник AWS S3. Добавляет конфигурацию AWS. Сейчас поддерживает только параметр \"no-sign-request\", который эквивалентен параметру --no-sign-request в AWS CLI.", "HelpBinaryCachingAwsHeader": "Источники веб-служб Azure", "HelpBinaryCachingAzBlob": "**Экспериментальная функция: будет изменена или удалена без предупреждения**\nДобавляет источник Хранилища BLOB-объектов Azure. Использует проверку подписанного URL-адреса. должен содержать путь к контейнеру. должен быть указан с префиксом \"?\".", + "HelpBinaryCachingAzUpkg": "**Experimental: will change or be removed without warning**\nAdds a Universal Package Azure Artifacts source. Uses the Azure CLI (az artifacts) for uploads and downloads.", "HelpBinaryCachingCos": "**Экспериментальная функция: будет изменена или удалена без предупреждения**\nДобавляет источник COS. Использует cos CLI для отправки и скачивания. должен содержать схему \"cos://\" и иметь суффикс \"/\".", "HelpBinaryCachingDefaults": "Добавляет расположение на основе файла по умолчанию. В соответствии с настройками вашей системы путь по умолчанию для хранения двоичных файлов — \"{path}\". Для этого используется %LOCALAPPDATA%/%APPDATA% в Windows и $XDG_CACHE_HOME или $HOME на других платформах.", "HelpBinaryCachingDefaultsError": "Добавляет расположение на основе файлов по умолчанию.", @@ -687,6 +688,7 @@ "InvalidArgumentRequiresAbsolutePath": "недопустимый аргумент: аргументы пути двоичной config \"{binary_source}\" для двоичных строк config должны быть абсолютными", "InvalidArgumentRequiresBaseUrl": "недопустимый аргумент: для двоичной config \"{binary_source}\" в качестве первого аргумента требуется базовый URL-адрес {base_url}", "InvalidArgumentRequiresBaseUrlAndToken": "недопустимый аргумент: для двоичной config \"{binary_source}\" требуется по крайней мере базовый URL-адрес и маркер SAS", + "InvalidArgumentRequiresFourOrFiveArguments": "invalid argument: binary config '{binary_source}' requires 4 or 5 arguments", "InvalidArgumentRequiresNoWildcards": "не удается исправить регистр пути Windows для пути, содержащего подстановочные знаки: {path}", "InvalidArgumentRequiresNoneArguments": "недопустимый аргумент: двоичная config \"{binary_source}\" не принимает аргументы", "InvalidArgumentRequiresOneOrTwoArguments": "недопустимый аргумент: для двоичной config \"{binary_source}\" требуется 1 или 2 аргумента", @@ -811,6 +813,7 @@ "NonExactlyArgs": "команда \"{command_name}\" требует ровно {expected} аргументов, но указано {actual}", "NonOneRemainingArgs": "команда \"{command_name}\" требует ровно один аргумент", "NonRangeArgs": "команда \"{command_name}\" требует от {lower} до {upper} аргументов включительно, но указано {actual}", + "NonRangeArgsGreater": "the command '{command_name}' requires at least {lower} arguments, but {actual} were provided", "NonZeroOrOneRemainingArgs": "команда \"{command_name}\" требует ноль аргументов или один аргумент", "NonZeroRemainingArgs": "команда \"{command_name}\" не принимает дополнительные аргументы", "NugetOutputNotCapturedBecauseInteractiveSpecified": "Не удалось выполнить команду NuGet, и выходные данные не записаны, поскольку указан параметр --interactive", @@ -929,6 +932,7 @@ "RemovingPackage": "Выполняется удаление {action_index}/{count} {spec}", "ResponseFileCode": "@response_file", "RestoredPackagesFromAWS": "Восстановлено несколько ({count}) пакетов из AWS за {elapsed}. Используйте --debug, чтобы увидеть больше деталей.", + "RestoredPackagesFromAZUPKG": "Restored {count} package(s) from Universal Packages in {elapsed}. Use --debug to see more details.", "RestoredPackagesFromCOS": "Восстановлено несколько ({count}) пакетов из COS за {elapsed}. Используйте --debug, чтобы увидеть больше деталей.", "RestoredPackagesFromFiles": "Восстановлено несколько ({count}) пакетов из {path} за {elapsed}. Используйте --debug, чтобы увидеть больше деталей.", "RestoredPackagesFromGCS": "Восстановлено несколько ({count}) пакетов из GCS за {elapsed}. Используйте --debug, чтобы увидеть больше деталей.", diff --git a/locales/messages.tr.json b/locales/messages.tr.json index a5db2c3a67..64645c1845 100644 --- a/locales/messages.tr.json +++ b/locales/messages.tr.json @@ -584,6 +584,7 @@ "HelpBinaryCachingAwsConfig": "**Deneysel: değiştirilecek veya uyarılmadan kaldırılacaktır**\nBir AWS S3 kaynağı ekler. Bir AWS yapılandırması ekler; şu anda yalnızca AWS CLI'nin --no-sign-request parametresine eşdeğer olan 'no-sign-request' parametresini desteklemektedir.", "HelpBinaryCachingAwsHeader": "Azure Web Hizmetleri kaynakları", "HelpBinaryCachingAzBlob": "**Deneysel: değiştirilecek veya uyarılmadan kaldırılacaktır**\nBir Azure Blob Depolama kaynağı ekler. Paylaşılan Erişim İmzası doğrulamasını kullanır. kapsayıcı yolunu içermelidir. önüne \"?\" eklenmelidir.", + "HelpBinaryCachingAzUpkg": "**Experimental: will change or be removed without warning**\nAdds a Universal Package Azure Artifacts source. Uses the Azure CLI (az artifacts) for uploads and downloads.", "HelpBinaryCachingCos": "**Deneysel: değiştirilecek veya uyarılmadan kaldırılacaktır**\nBir COS kaynağı ekler. Yüklemeler ve indirmeler için cos CLI'yi kullanır. , 'cos://' şemasını içermeli ve sonuna \"/\" eklenmelidir.", "HelpBinaryCachingDefaults": "Varsayılan dosya tabanlı konumu ekler. Sistem ayarlarınıza bağlı olarak, ikili dosyaları depolamak için varsayılan yol \"{yol}\" şeklindedir. Bu, Windows'ta %LOCALAPPDATA%/%APPDATA% ve diğer platformlarda $XDG_CACHE_HOME veya $HOME'a başvurur.", "HelpBinaryCachingDefaultsError": "Varsayılan dosya tabanlı konumu ekler.", @@ -687,6 +688,7 @@ "InvalidArgumentRequiresAbsolutePath": "geçersiz bağımsız değişken: ikili yapılandırma “{binary_source}” ikili yapılandırma dizeleri için yol bağımsız değişkenleri mutlak olmalıdır", "InvalidArgumentRequiresBaseUrl": "geçersiz bağımsız değişken: ikili yapılandırma “{binary_source}”, ilk bağımsız değişken olarak bir {base_url} temel url'sini gerektirir", "InvalidArgumentRequiresBaseUrlAndToken": "geçersiz bağımsız değişken: ikili yapılandırma “{binary_source}” en az bir temel url ve bir SAS belirteci gerektirir", + "InvalidArgumentRequiresFourOrFiveArguments": "invalid argument: binary config '{binary_source}' requires 4 or 5 arguments", "InvalidArgumentRequiresNoWildcards": "joker karakterler içeren yol için Windows yol durumu düzeltilemedi: {path}", "InvalidArgumentRequiresNoneArguments": "geçersiz bağımsız değişken: ikili yapılandırma “{binary_source}” bağımsız değişken almıyor", "InvalidArgumentRequiresOneOrTwoArguments": "geçersiz bağımsız değişken: ikili yapılandırma “{binary_source}” 1 veya 2 bağımsız değişken gerektiriyor", @@ -811,6 +813,7 @@ "NonExactlyArgs": "'{command_name}' komutu tam olarak {expected} bağımsız değişken gerektirir ancak {actual} bağımsız değişken sağlandı", "NonOneRemainingArgs": "'{command_name}' komutu, tam olarak bir bağımsız değişken gerektirir", "NonRangeArgs": "'{command_name}' komutu {lower} ile {upper} bağımsız değişkeni (bunlar dahil) arasında olmalıdır, ancak {actual} sağlandı", + "NonRangeArgsGreater": "the command '{command_name}' requires at least {lower} arguments, but {actual} were provided", "NonZeroOrOneRemainingArgs": "'{command_name}' komutu, sıfır veya bir bağımsız değişken gerektirir", "NonZeroRemainingArgs": "'{command_name}' komutu başka bağımsız değişken kabul etmez", "NugetOutputNotCapturedBecauseInteractiveSpecified": "NuGet komutu başarısız oldu ve --interactive belirtildiğinden çıkış yakalanmadı", @@ -929,6 +932,7 @@ "RemovingPackage": "{action_index}/{count} {spec} kaldırılıyor", "ResponseFileCode": "@response_file", "RestoredPackagesFromAWS": "{elapsed} içinde AWS kaynağından {count} paket geri yüklendi. Daha fazla ayrıntı için --debug kullanın.", + "RestoredPackagesFromAZUPKG": "Restored {count} package(s) from Universal Packages in {elapsed}. Use --debug to see more details.", "RestoredPackagesFromCOS": "{elapsed} içinde COS kaynağından {count} paket geri yüklendi. Daha fazla ayrıntı için --debug kullanın.", "RestoredPackagesFromFiles": "{elapsed} içinde {path} kaynağından {count} paket geri yüklendi. Daha fazla ayrıntı için --debug kullanın.", "RestoredPackagesFromGCS": "{elapsed} içinde GCS kaynağından {count} paket geri yüklendi. Daha fazla ayrıntı için --debug kullanın.", diff --git a/locales/messages.zh-Hans.json b/locales/messages.zh-Hans.json index ddd81a6fb2..31ba80039e 100644 --- a/locales/messages.zh-Hans.json +++ b/locales/messages.zh-Hans.json @@ -584,6 +584,7 @@ "HelpBinaryCachingAwsConfig": "**试验性: 将在不发出警告的情况下更改或删除**\n添加 AWS S3 源。添加 AWS 配置; 目前仅支持与 AWS CLI 的 --no-sign-request 参数等效的 \"no-sign-request\" 参数。", "HelpBinaryCachingAwsHeader": "Azure Web 服务源", "HelpBinaryCachingAzBlob": "**试验性: 将在不发出警告的情况下更改或删除**\n添加 Azure Blob 存储源。使用共享访问签名验证。应包含容器路径。必须以 \"?\" 为前缀。", + "HelpBinaryCachingAzUpkg": "**Experimental: will change or be removed without warning**\nAdds a Universal Package Azure Artifacts source. Uses the Azure CLI (az artifacts) for uploads and downloads.", "HelpBinaryCachingCos": "**试验性: 将在不发出警告的情况下更改或删除**\n添加 COS 源。使用 cos CLI 进行上传和下载。应包括方案 \"cos://\",后缀为 \"/\"。", "HelpBinaryCachingDefaults": "添加默认的基于文件的位置。根据系统设置,存储二进制文件的默认路径为 \"{path}\"。这会在 Windows 上咨询 %LOCALAPPDATA%/%APPDATA%,在其他平台上咨询 $XDG_CACHE_HOME 或 $HOME。", "HelpBinaryCachingDefaultsError": "添加默认的基于文件的位置。", @@ -687,6 +688,7 @@ "InvalidArgumentRequiresAbsolutePath": "参数无效: 二进制配置字符串的二进制配置“{binary_source}”路径参数必须是绝对参数", "InvalidArgumentRequiresBaseUrl": "参数无效: 二进制配置“{binary_source}”要求将 {base_url} 基 URL 作为第一个参数", "InvalidArgumentRequiresBaseUrlAndToken": "参数无效: 二进制配置“{binary_source}”至少需要一个基 URL 和一个 SAS 令牌", + "InvalidArgumentRequiresFourOrFiveArguments": "invalid argument: binary config '{binary_source}' requires 4 or 5 arguments", "InvalidArgumentRequiresNoWildcards": "无法修复包含通配符的路径的 Windows 路径大小写: {path}", "InvalidArgumentRequiresNoneArguments": "参数无效: 二进制配置“{binary_source}”不接受参数", "InvalidArgumentRequiresOneOrTwoArguments": "参数无效: 二进制配置“{binary_source}”需要 1 或 2 个参数", @@ -811,6 +813,7 @@ "NonExactlyArgs": "命令“{command_name}”只需要 {expected} 个参数,但提供了 {actual} 个", "NonOneRemainingArgs": "命令“{command_name}”只需要一个参数", "NonRangeArgs": "命令“{command_name}”需要介于 {lower} 和 {upper} 个参数之间(含),但提供了 {actual} 个", + "NonRangeArgsGreater": "the command '{command_name}' requires at least {lower} arguments, but {actual} were provided", "NonZeroOrOneRemainingArgs": "命令“{command_name}”需要零个或一个参数", "NonZeroRemainingArgs": "命令“{command_name}”不接受任何其他参数", "NugetOutputNotCapturedBecauseInteractiveSpecified": "NuGet 命令失败,未捕获输出,因为指定为交互式的", @@ -929,6 +932,7 @@ "RemovingPackage": "正在删除 {action_index}/{count} 个 {spec}", "ResponseFileCode": "@response_file", "RestoredPackagesFromAWS": "{elapsed} 后从 AWS 还原了 {count} 个包。使用 --debug 了解更多详细信息。", + "RestoredPackagesFromAZUPKG": "Restored {count} package(s) from Universal Packages in {elapsed}. Use --debug to see more details.", "RestoredPackagesFromCOS": "{elapsed} 后从 COS 还原了 {count} 个包。使用 --debug 了解更多详细信息。", "RestoredPackagesFromFiles": "{elapsed} 后从 {path} 还原了 {count} 个包。使用 --debug 了解更多详细信息。", "RestoredPackagesFromGCS": "{elapsed} 后从 GCS 还原了 {count} 个包。使用 --debug 了解更多详细信息。", diff --git a/locales/messages.zh-Hant.json b/locales/messages.zh-Hant.json index 42f3775701..8688c06a90 100644 --- a/locales/messages.zh-Hant.json +++ b/locales/messages.zh-Hant.json @@ -584,6 +584,7 @@ "HelpBinaryCachingAwsConfig": "**實驗性: 將會變更或移除而不顯示警告**\n新增 AWS S3 來源。新增 AWS 設定; 目前只支援與 AWS CLI 的 --no-sign-request 參數相等的 'no-sign-request' 參數。", "HelpBinaryCachingAwsHeader": "Azure Web 服務來源", "HelpBinaryCachingAzBlob": "**實驗性: 將會變更或移除而不顯示警告**\n新增 Azure Blob 儲存體來源。使用共用存取簽章驗證。應包含容器路徑。必須以「?」作為前置詞。", + "HelpBinaryCachingAzUpkg": "**Experimental: will change or be removed without warning**\nAdds a Universal Package Azure Artifacts source. Uses the Azure CLI (az artifacts) for uploads and downloads.", "HelpBinaryCachingCos": "**實驗性: 將會變更或移除而不顯示警告**\n新增 COS 來源。使用 cos CLI 上傳和下載。應包含配置 'cos://',且尾碼為「/」。", "HelpBinaryCachingDefaults": "新增預設檔案型位置。根據您的系統設定,儲存二進位檔的預設路徑是 \"{path}\"。這會在 Windows 上諮詢 %LOCALAPPDATA%/%APPDATA% 或在其他平台上諮詢 $XDG_CACHE_HOME 或 $HOME。", "HelpBinaryCachingDefaultsError": "新增預設的檔案式位置。", @@ -687,6 +688,7 @@ "InvalidArgumentRequiresAbsolutePath": "引數無效: 二進位 config 字串的二進位 config '{binary_source}' 路徑引數必須是絕對", "InvalidArgumentRequiresBaseUrl": "引數無效: 二進位 config '{binary_source}' 需要 {base_url} 基底 URL 做為第一個引數", "InvalidArgumentRequiresBaseUrlAndToken": "引數無效: 二進位 config '{binary_source}' 至少需要基底 URL 和 SAS 權杖", + "InvalidArgumentRequiresFourOrFiveArguments": "invalid argument: binary config '{binary_source}' requires 4 or 5 arguments", "InvalidArgumentRequiresNoWildcards": "無法修正以下包含萬用字元之路徑的 Windows 路徑案例: {path}", "InvalidArgumentRequiresNoneArguments": "引數無效: 二進位設定 '{binary_source}' 不接受引數", "InvalidArgumentRequiresOneOrTwoArguments": "引數無效: 二進位 config '{binary_source}' 需要 1 或 2 個引數", @@ -811,6 +813,7 @@ "NonExactlyArgs": "命令 '{command_name}' 需要只有 '{expected}' 個引數,但提供了 '{actual}'。", "NonOneRemainingArgs": "命令 '{command_name}' 需要只有 1 個引數", "NonRangeArgs": "命令 '{command_name}' 需要是 {lower} 和 {upper} (含) 個之間的引數,但提供了 {actual}", + "NonRangeArgsGreater": "the command '{command_name}' requires at least {lower} arguments, but {actual} were provided", "NonZeroOrOneRemainingArgs": "命令 '{command_name}' 需要 0 個或 1 個引數", "NonZeroRemainingArgs": "命令 '{command_name}' 不接受任何其他引數", "NugetOutputNotCapturedBecauseInteractiveSpecified": "NuGet 命令失敗且未擷取輸出,因為已指定 --interactive", @@ -929,6 +932,7 @@ "RemovingPackage": "正在移除 {action_index}/{count} {spec}", "ResponseFileCode": "@response_file", "RestoredPackagesFromAWS": "已從 {elapsed} 中的 AWS 還原 ({count}) 個封裝。使用 --debug 以查看更多詳細資料。", + "RestoredPackagesFromAZUPKG": "Restored {count} package(s) from Universal Packages in {elapsed}. Use --debug to see more details.", "RestoredPackagesFromCOS": "已從 {elapsed} 中的 COS 還原 ({count}) 個封裝。使用 --debug 以查看更多詳細資料。", "RestoredPackagesFromFiles": "已從 {elapsed} 中的 {path} 還原 ({count}) 個封裝。使用 --debug 以查看更多詳細資料。", "RestoredPackagesFromGCS": "已從 {elapsed} 中的 GCS 還原 ({count}) 個封裝。使用 --debug 以查看更多詳細資料。", From 39396a70ba142f2e7cc5a61a65c87f4aac0a78b1 Mon Sep 17 00:00:00 2001 From: Siyuan Ren Date: Tue, 22 Oct 2024 07:01:51 +0800 Subject: [PATCH 34/39] Fix missing includes (#1517) WIFEXITED requires header. On some platforms, the transitive includes have this symbol, but not all. --- src/vcpkg-test/system.process.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/vcpkg-test/system.process.cpp b/src/vcpkg-test/system.process.cpp index 58e9f6db61..f4489a43c6 100644 --- a/src/vcpkg-test/system.process.cpp +++ b/src/vcpkg-test/system.process.cpp @@ -2,6 +2,10 @@ #include +#ifndef _WIN32 +#include +#endif + using namespace vcpkg; TEST_CASE ("captures-output", "[system.process]") From 87d3803913234dcdf0b1e520d2a36d1d8e43c531 Mon Sep 17 00:00:00 2001 From: "CSIGS@microsoft.com" Date: Tue, 22 Oct 2024 13:30:35 -0700 Subject: [PATCH 35/39] Juno: check in to juno/hb_cb3056d7-d122-4ef4-8657-e36080a7f8c6_20241022125345221. (#1523) --- src/localization/cs/messages.json.lcl | 36 ++++++++++++++++++++++ src/localization/de/messages.json.lcl | 36 ++++++++++++++++++++++ src/localization/es/messages.json.lcl | 36 ++++++++++++++++++++++ src/localization/fr/messages.json.lcl | 36 ++++++++++++++++++++++ src/localization/it/messages.json.lcl | 36 ++++++++++++++++++++++ src/localization/ja/messages.json.lcl | 36 ++++++++++++++++++++++ src/localization/pl/messages.json.lcl | 36 ++++++++++++++++++++++ src/localization/pt-BR/messages.json.lcl | 36 ++++++++++++++++++++++ src/localization/ru/messages.json.lcl | 36 ++++++++++++++++++++++ src/localization/tr/messages.json.lcl | 36 ++++++++++++++++++++++ src/localization/zh-Hans/messages.json.lcl | 36 ++++++++++++++++++++++ src/localization/zh-Hant/messages.json.lcl | 36 ++++++++++++++++++++++ 12 files changed, 432 insertions(+) diff --git a/src/localization/cs/messages.json.lcl b/src/localization/cs/messages.json.lcl index 08456ec4b7..5b82f249ca 100644 --- a/src/localization/cs/messages.json.lcl +++ b/src/localization/cs/messages.json.lcl @@ -6169,6 +6169,15 @@ + + + + + + + + + should include the scheme 'cos://' and be suffixed with a "/".]]> @@ -7288,6 +7297,15 @@ + + + + + + + + + @@ -8536,6 +8554,15 @@ + + + + + + + + + @@ -9802,6 +9829,15 @@ + + + + + + + + + diff --git a/src/localization/de/messages.json.lcl b/src/localization/de/messages.json.lcl index e8bc5136a2..fe377e1309 100644 --- a/src/localization/de/messages.json.lcl +++ b/src/localization/de/messages.json.lcl @@ -6169,6 +6169,15 @@ + + + + + + + + + should include the scheme 'cos://' and be suffixed with a "/".]]> @@ -7288,6 +7297,15 @@ + + + + + + + + + @@ -8533,6 +8551,15 @@ + + + + + + + + + @@ -9799,6 +9826,15 @@ + + + + + + + + + diff --git a/src/localization/es/messages.json.lcl b/src/localization/es/messages.json.lcl index ba8a06da53..4a793fd2cc 100644 --- a/src/localization/es/messages.json.lcl +++ b/src/localization/es/messages.json.lcl @@ -6169,6 +6169,15 @@ + + + + + + + + + should include the scheme 'cos://' and be suffixed with a "/".]]> @@ -7288,6 +7297,15 @@ + + + + + + + + + @@ -8533,6 +8551,15 @@ + + + + + + + + + @@ -9799,6 +9826,15 @@ + + + + + + + + + diff --git a/src/localization/fr/messages.json.lcl b/src/localization/fr/messages.json.lcl index 585458bd27..70c9a8fca1 100644 --- a/src/localization/fr/messages.json.lcl +++ b/src/localization/fr/messages.json.lcl @@ -6169,6 +6169,15 @@ + + + + + + + + + should include the scheme 'cos://' and be suffixed with a "/".]]> @@ -7288,6 +7297,15 @@ + + + + + + + + + @@ -8533,6 +8551,15 @@ + + + + + + + + + @@ -9799,6 +9826,15 @@ + + + + + + + + + diff --git a/src/localization/it/messages.json.lcl b/src/localization/it/messages.json.lcl index d2f227f343..758d809caf 100644 --- a/src/localization/it/messages.json.lcl +++ b/src/localization/it/messages.json.lcl @@ -6169,6 +6169,15 @@ + + + + + + + + + should include the scheme 'cos://' and be suffixed with a "/".]]> @@ -7288,6 +7297,15 @@ + + + + + + + + + @@ -8536,6 +8554,15 @@ + + + + + + + + + @@ -9802,6 +9829,15 @@ + + + + + + + + + diff --git a/src/localization/ja/messages.json.lcl b/src/localization/ja/messages.json.lcl index 9ca6b14dc6..25d90f0c1e 100644 --- a/src/localization/ja/messages.json.lcl +++ b/src/localization/ja/messages.json.lcl @@ -6169,6 +6169,15 @@ + + + + + + + + + should include the scheme 'cos://' and be suffixed with a "/".]]> @@ -7288,6 +7297,15 @@ + + + + + + + + + @@ -8536,6 +8554,15 @@ + + + + + + + + + @@ -9802,6 +9829,15 @@ + + + + + + + + + diff --git a/src/localization/pl/messages.json.lcl b/src/localization/pl/messages.json.lcl index 98d2e8d5dc..52549feb58 100644 --- a/src/localization/pl/messages.json.lcl +++ b/src/localization/pl/messages.json.lcl @@ -6169,6 +6169,15 @@ + + + + + + + + + should include the scheme 'cos://' and be suffixed with a "/".]]> @@ -7288,6 +7297,15 @@ + + + + + + + + + @@ -8533,6 +8551,15 @@ + + + + + + + + + @@ -9799,6 +9826,15 @@ + + + + + + + + + diff --git a/src/localization/pt-BR/messages.json.lcl b/src/localization/pt-BR/messages.json.lcl index 8875b3d6e3..9a3b72abdb 100644 --- a/src/localization/pt-BR/messages.json.lcl +++ b/src/localization/pt-BR/messages.json.lcl @@ -6169,6 +6169,15 @@ + + + + + + + + + should include the scheme 'cos://' and be suffixed with a "/".]]> @@ -7288,6 +7297,15 @@ + + + + + + + + + @@ -8533,6 +8551,15 @@ + + + + + + + + + @@ -9799,6 +9826,15 @@ + + + + + + + + + diff --git a/src/localization/ru/messages.json.lcl b/src/localization/ru/messages.json.lcl index 99c030557d..e69b593cae 100644 --- a/src/localization/ru/messages.json.lcl +++ b/src/localization/ru/messages.json.lcl @@ -6169,6 +6169,15 @@ + + + + + + + + + should include the scheme 'cos://' and be suffixed with a "/".]]> @@ -7288,6 +7297,15 @@ + + + + + + + + + @@ -8536,6 +8554,15 @@ + + + + + + + + + @@ -9802,6 +9829,15 @@ + + + + + + + + + diff --git a/src/localization/tr/messages.json.lcl b/src/localization/tr/messages.json.lcl index f1212f3246..f4a5c48411 100644 --- a/src/localization/tr/messages.json.lcl +++ b/src/localization/tr/messages.json.lcl @@ -6169,6 +6169,15 @@ + + + + + + + + + should include the scheme 'cos://' and be suffixed with a "/".]]> @@ -7288,6 +7297,15 @@ + + + + + + + + + @@ -8536,6 +8554,15 @@ + + + + + + + + + @@ -9802,6 +9829,15 @@ + + + + + + + + + diff --git a/src/localization/zh-Hans/messages.json.lcl b/src/localization/zh-Hans/messages.json.lcl index 7aff9f5e98..eefb1259b0 100644 --- a/src/localization/zh-Hans/messages.json.lcl +++ b/src/localization/zh-Hans/messages.json.lcl @@ -6169,6 +6169,15 @@ + + + + + + + + + should include the scheme 'cos://' and be suffixed with a "/".]]> @@ -7288,6 +7297,15 @@ + + + + + + + + + @@ -8536,6 +8554,15 @@ + + + + + + + + + @@ -9802,6 +9829,15 @@ + + + + + + + + + diff --git a/src/localization/zh-Hant/messages.json.lcl b/src/localization/zh-Hant/messages.json.lcl index d98a1031d6..7a1266f03b 100644 --- a/src/localization/zh-Hant/messages.json.lcl +++ b/src/localization/zh-Hant/messages.json.lcl @@ -6169,6 +6169,15 @@ + + + + + + + + + should include the scheme 'cos://' and be suffixed with a "/".]]> @@ -7288,6 +7297,15 @@ + + + + + + + + + @@ -8536,6 +8554,15 @@ + + + + + + + + + @@ -9802,6 +9829,15 @@ + + + + + + + + + From ffc69f0b42a9a00bc62328248d6ceb33573e23a6 Mon Sep 17 00:00:00 2001 From: Billy O'Neal Date: Tue, 22 Oct 2024 14:44:45 -0700 Subject: [PATCH 36/39] Commonize \r\n / \n handling in test cases. (#1519) * Commonize `r`n / `n handling in test cases. Extracted from https://github.com/microsoft/vcpkg-tool/pull/1514 Rather than each test case inventing their own way of dealing with the Windows/Linux `r`n vs `n difference, this change just always makes the output collection functions to do that transformation. * Fix damaged -contains pointed out by @ras0219-msft --- .../end-to-end-tests-dir/build-test-ports.ps1 | 8 +- .../ci-verify-versions.ps1 | 13 +- azure-pipelines/end-to-end-tests-dir/cli.ps1 | 16 +-- .../end-to-end-tests-dir/env-passthrough.ps1 | 4 +- .../post-build-checks.ps1 | 126 +++++++++--------- .../end-to-end-tests-dir/usage.ps1 | 2 - .../end-to-end-tests-dir/versions.ps1 | 6 +- azure-pipelines/end-to-end-tests-prelude.ps1 | 54 +++++++- 8 files changed, 134 insertions(+), 95 deletions(-) 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 127a788491..f54a926e0e 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 @@ -51,9 +51,10 @@ if ($output -notmatch 'Trailing comma') { # 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' -} +Throw-IfNonContains -Actual $output -Expected @" +The following packages are already installed: + vcpkg-internal-e2e-test-port3: +"@ $output = Run-VcpkgAndCaptureOutput @commonArgs --overlay-ports="$PSScriptRoot/../e2e-ports" install vcpkg-internal-e2e-test-port3 --head Throw-IfFailed @@ -64,7 +65,6 @@ if ($output -notmatch 'vcpkg-internal-e2e-test-port3:[^ ]+ is already installed 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 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 index 6ff05dc086..5db2e83460 100644 --- a/azure-pipelines/end-to-end-tests-dir/ci-verify-versions.ps1 +++ b/azure-pipelines/end-to-end-tests-dir/ci-verify-versions.ps1 @@ -1,7 +1,5 @@ . "$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 @@ -160,17 +158,12 @@ 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() + $workTreeRegex = 'error: failed to execute:[^\n]+' # Git command line has an unpredictable PID inside + $text = $text.Replace('\', '/').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." -} +Throw-IfNonEqual -Expected $expected -Actual $actual diff --git a/azure-pipelines/end-to-end-tests-dir/cli.ps1 b/azure-pipelines/end-to-end-tests-dir/cli.ps1 index 1e7268b238..4784d2a5dd 100644 --- a/azure-pipelines/end-to-end-tests-dir/cli.ps1 +++ b/azure-pipelines/end-to-end-tests-dir/cli.ps1 @@ -56,7 +56,7 @@ error: expected the end of input parsing a package spec; this usually means the "@ -if (-Not ($out.Replace("`r`n", "`n").EndsWith($expected))) +if (-Not ($out.EndsWith($expected))) { throw 'Bad malformed port name output; it was: ' + $out } @@ -71,7 +71,7 @@ error: unknown binary provider type: valid providers are 'clear', 'default', 'nu "@ -if (-Not ($out.Replace("`r`n", "`n").EndsWith($expected))) +if (-Not ($out.EndsWith($expected))) { throw 'Bad malformed --binarysource output; it was: ' + $out } @@ -86,7 +86,7 @@ error: Invalid triplet name. Triplet names are all lowercase alphanumeric+hyphen Built-in Triplets: "@ -if (-Not ($out.Replace("`r`n", "`n").StartsWith($expected))) +if (-Not ($out.StartsWith($expected))) { throw 'Bad malformed triplet output. It was: ' + $out } @@ -99,7 +99,7 @@ error: expected an explicit triplet ^ "@ -if (-Not ($out.Replace("`r`n", "`n").EndsWith($expected))) +if (-Not ($out.EndsWith($expected))) { throw ('Bad error output: ' + $out) } @@ -112,7 +112,7 @@ error: expected an explicit triplet ^ "@ -if (-Not ($out.Replace("`r`n", "`n").EndsWith($expected))) +if (-Not ($out.EndsWith($expected))) { throw ('Bad error output: ' + $out) } @@ -125,7 +125,7 @@ error: expected the end of input parsing a package spec; did you mean zlib[core] ^ "@ -if (-Not ($out.Replace("`r`n", "`n").EndsWith($expected))) +if (-Not ($out.EndsWith($expected))) { throw ('Bad error output: ' + $out) } @@ -138,7 +138,7 @@ error: List of features is not allowed in this context ^ "@ -if (-Not ($out.Replace("`r`n", "`n").EndsWith($expected))) +if (-Not ($out.EndsWith($expected))) { throw ('Bad error output: ' + $out) } @@ -151,7 +151,7 @@ error: Platform qualifier is not allowed in this context ^ "@ -if (-Not ($out.Replace("`r`n", "`n").EndsWith($expected))) +if (-Not ($out.EndsWith($expected))) { throw ('Bad error output: ' + $out) } diff --git a/azure-pipelines/end-to-end-tests-dir/env-passthrough.ps1 b/azure-pipelines/end-to-end-tests-dir/env-passthrough.ps1 index 2e6fe7b253..3201018549 100644 --- a/azure-pipelines/end-to-end-tests-dir/env-passthrough.ps1 +++ b/azure-pipelines/end-to-end-tests-dir/env-passthrough.ps1 @@ -5,13 +5,13 @@ if (-not $IsLinux -and -not $IsMacOS) { $env:_VCPKG_TEST_UNTRACKED = "b" $x = Run-VcpkgAndCaptureOutput "--overlay-triplets=$PSScriptRoot/../e2e-ports/env-passthrough" env "echo %_VCPKG_TEST_TRACKED% %_VCPKG_TEST_TRACKED2% %_VCPKG_TEST_UNTRACKED% %_VCPKG_TEST_UNTRACKED2%" - if ($x -ne "%_VCPKG_TEST_TRACKED% %_VCPKG_TEST_TRACKED2% %_VCPKG_TEST_UNTRACKED% %_VCPKG_TEST_UNTRACKED2%`r`n") + if ($x -ne "%_VCPKG_TEST_TRACKED% %_VCPKG_TEST_TRACKED2% %_VCPKG_TEST_UNTRACKED% %_VCPKG_TEST_UNTRACKED2%`n") { throw "env should have cleaned the environment ($x)" } $y = Run-VcpkgAndCaptureOutput "--overlay-triplets=$PSScriptRoot/../e2e-ports/env-passthrough" env --triplet passthrough "echo %_VCPKG_TEST_TRACKED% %_VCPKG_TEST_TRACKED2% %_VCPKG_TEST_UNTRACKED% %_VCPKG_TEST_UNTRACKED2%" - if ($y -ne "a %_VCPKG_TEST_TRACKED2% b %_VCPKG_TEST_UNTRACKED2%`r`n") + if ($y -ne "a %_VCPKG_TEST_TRACKED2% b %_VCPKG_TEST_UNTRACKED2%`n") { throw "env should have kept the environment ($y)" } 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 2ce8fac406..bd190dcb71 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 @@ -17,7 +17,7 @@ if (-not $dupOutput.Contains('The following files are already installed')) { Refresh-TestRoot [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")) { +if (-not $buildOutput.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) } @@ -83,13 +83,13 @@ $($packagesRoot)$($NativeSlash)vcpkg-policy-include-folder_$($Triplet)$($NativeS note: "@ -if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { +if (-not $buildOutput.Contains($expected)) { 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)) { +if ($buildOutput.Contains($expected)) { throw 'VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS didn''t allow' } @@ -100,13 +100,13 @@ $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)) { +if (-not $buildOutput.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)) { +if ($buildOutput.Contains($expected)) { throw 'VCPKG_POLICY_ALLOW_DEBUG_INCLUDE didn''t suppress' } @@ -116,13 +116,13 @@ 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)) { +if (-not $buildOutput.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)) { +if ($buildOutput.Contains($expected)) { throw 'VCPKG_POLICY_ALLOW_DEBUG_SHARE didn''t suppress' } @@ -144,7 +144,7 @@ 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)) { +if (-not $buildOutput.Contains($expected)) { throw 'Did not detect bad CMake files' } @@ -161,7 +161,7 @@ $($PortfilePath): warning: This port creates `${CURRENT_PACKAGES_DIR}/lib/cmake if ($buildOutput.Contains("legitimate.cmake")) { throw 'Complained about legitimate CMake files' } -if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { +if (-not $buildOutput.Contains($expected)) { throw 'Did not detect bad CMake files' } @@ -180,7 +180,7 @@ $($PortfilePath): warning: This port creates `${CURRENT_PACKAGES_DIR}/lib/cmake if ($buildOutput.Contains("legitimate.cmake")) { throw 'Complained about legitimate CMake files' } -if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { +if (-not $buildOutput.Contains($expected)) { throw 'Did not detect bad CMake files' } @@ -193,7 +193,7 @@ $($PortfilePath): warning: This port creates `${CURRENT_PACKAGES_DIR}/lib/cmake if ($buildOutput.Contains("legitimate.cmake")) { throw 'Complained about legitimate CMake files' } -if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { +if (-not $buildOutput.Contains($expected)) { throw 'Did not detect bad CMake files' } @@ -211,7 +211,7 @@ 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)) { +if (-not $buildOutput.Contains($expected)) { throw 'Did not detect bad CMake files' } @@ -248,7 +248,7 @@ $($PortfilePath): warning: the license is not installed to `${CURRENT_PACKAGES_D $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)) { +if (-not $buildOutput.Contains($expected)) { throw 'Did not detect missing copyright no source' } @@ -260,7 +260,7 @@ $($PortfilePath): note: Consider adding: vcpkg_install_copyright(FILE_LIST "`${S $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)) { +if (-not $buildOutput.Contains($expected)) { throw 'Did not detect missing copyright source' } @@ -272,7 +272,7 @@ $($PortfilePath): note: Consider adding: vcpkg_install_copyright(FILE_LIST "`${S $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)) { +if (-not $buildOutput.Contains($expected)) { throw 'Did not detect missing copyright source2' } @@ -288,13 +288,13 @@ 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)) { +if (-not $buildOutput.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)) { +if ($buildOutput.Contains($expected)) { throw 'VCPKG_POLICY_SKIP_COPYRIGHT_CHECK didn''t suppress source + source2' } @@ -314,7 +314,7 @@ $($packagesRoot)$($NativeSlash)test-exe_x86-windows: note: the executables are r note: bin/test_exe.exe "@ - if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { + if (-not $buildOutput.Contains($expected)) { throw 'Did not detect EXE in bin.' } @@ -327,13 +327,13 @@ note: debug/bin/test_exe.exe note: bin/test_exe.exe "@ - if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { + if (-not $buildOutput.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)) { + if ($buildOutput.Contains($expected)) { throw 'VCPKG_POLICY_ALLOW_EXES_IN_BIN didn''t suppress' } } # windows @@ -349,12 +349,12 @@ $PSScriptRoot/../e2e-ports$($NativeSlash)vcpkg-policy-forgot-usage$($NativeSlash 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)) { +if (-not $buildOutput.Contains($expected)) { 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)) { +if ($buildOutput.Contains($expected)) { throw 'VCPKG_POLICY_SKIP_USAGE_INSTALL_CHECK didn''t suppress' } @@ -376,7 +376,7 @@ 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)) { + if (-not $buildOutput.Contains($expected)) { throw 'Did not detect debug only mismatch' } @@ -390,7 +390,7 @@ 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)) { + if (-not $buildOutput.Contains($expected)) { throw 'Did not detect release only mismatch' } @@ -408,7 +408,7 @@ 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)) { + if (-not $buildOutput.Contains($expected)) { throw 'Did not detect extra debug mismatch' } @@ -426,13 +426,13 @@ 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)) { + if (-not $buildOutput.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')) { + if ($buildOutput.Contains('mismatching number of debug and release binaries')) { throw 'VCPKG_POLICY_MISMATCHED_NUMBER_OF_BINARIES didn''t suppress' } } @@ -454,13 +454,13 @@ note: debug/bin/test_dll.dll note: bin/test_dll.dll "@ - if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { + if (-not $buildOutput.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)) { + if ($buildOutput.Contains($expected)) { throw 'VCPKG_POLICY_ALLOW_KERNEL32_FROM_XBOX didn''t suppress' } } # windows @@ -479,19 +479,19 @@ $($PortfilePath): warning: Import libraries for installed DLLs appear to be miss $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)) { + if (-not $buildOutput.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)) { + if (-not $buildOutput.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") + $buildOutput = $buildOutput $first = $buildOutput.IndexOf($expected) if ($first -lt 0) { throw 'Did not detect DLLs with no import libraries both' @@ -502,7 +502,7 @@ $($PortfilePath): warning: Import libraries for installed DLLs appear to be miss $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)) { + if ($buildOutput.Contains($expected)) { throw 'VCPKG_POLICY_DLLS_WITHOUT_LIBS didn''t suppress' } } # windows @@ -524,13 +524,13 @@ note: debug/lib/test_dll.dll note: lib/test_dll.dll "@ - if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { + if (-not $buildOutput.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)) { + if ($buildOutput.Contains($expected)) { throw 'VCPKG_POLICY_ALLOW_DLLS_IN_LIB didn''t suppress' } } # windows @@ -548,14 +548,14 @@ note: debug/bin/no_exports.dll note: bin/no_exports.dll "@ - if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { + if (-not $buildOutput.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)) { + if ($buildOutput.Contains($expected)) { throw 'VCPKG_POLICY_DLLS_WITHOUT_EXPORTS didn''t suppress' } } # windows @@ -578,7 +578,7 @@ 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)) { + if (-not $buildOutput.Contains($expected)) { throw 'Did not detect DLL with wrong architecture.' } @@ -606,7 +606,7 @@ note: debug/bin/test_dll.dll note: bin/test_dll.dll "@ - if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { + if (-not $buildOutput.Contains($expected)) { throw 'Did not detect DLL with wrong appcontainer.' } @@ -630,13 +630,13 @@ 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)) { + if (-not $buildOutput.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)) { + if ($buildOutput.Contains($expected)) { throw 'VCPKG_POLICY_ALLOW_OBSOLETE_MSVCRT did not suppress' } @@ -649,7 +649,7 @@ 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)) { + if (-not $buildOutput.Contains($expected)) { throw 'Did not detect obsolete CRT.' } } # windows @@ -675,7 +675,7 @@ if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") endif() "@ - if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { + if (-not $buildOutput.Contains($expected)) { throw 'Did not detect DLL in static release-only.' } @@ -695,13 +695,13 @@ if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") endif() "@ - if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { + if (-not $buildOutput.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)) { + if ($buildOutput.Contains($expected)) { throw 'VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY didn''t suppress' } } # windows @@ -728,7 +728,7 @@ 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)) { + if (-not $buildOutput.Contains($expected)) { throw 'Did not detect lib with wrong CRT linkage.' } @@ -756,7 +756,7 @@ 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)) { + if (-not $buildOutput.Contains($expected)) { throw 'Did not detect lib with wrong CRT linkage release only.' } @@ -770,7 +770,7 @@ 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)) { + if (-not $buildOutput.Contains($expected)) { throw 'Did not detect lib with wrong CRT linkage release only.' } @@ -795,13 +795,13 @@ note: file(REMOVE_RECURSE "`${CURRENT_PACKAGES_DIR}/empty-directory" "`${CURRENT "@ $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)) { +if (-not $buildOutput.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)) { +if ($buildOutput.Contains($expected)) { throw 'VCPKG_POLICY_ALLOW_EMPTY_FOLDERS didn''t suppress' } @@ -816,12 +816,12 @@ $($packagesRoot)$($NativeSlash)vcpkg-policy-misplaced-regular-files_$($Triplet): note: debug/bad_debug_file.txt note: bad_file.txt "@ -if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { +if (-not $buildOutput.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)) { +if ($buildOutput.Contains($expected)) { throw 'VCPKG_POLICY_SKIP_MISPLACED_REGULAR_FILES_CHECK didn''t suppress' } @@ -842,7 +842,7 @@ file(RENAME "`${CURRENT_PACKAGES_DIR}/debug/bin/pkgconfig/zlib.pc" "`${CURRENT_P vcpkg_fixup_pkgconfig() file(REMOVE_RECURSE empty directories left by the above renames) "@ -if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { +if (-not $buildOutput.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 @@ -865,12 +865,12 @@ file(RENAME "`${CURRENT_PACKAGES_DIR}/share/pkgconfig/zlib.pc" "`${CURRENT_PACKA vcpkg_fixup_pkgconfig() file(REMOVE_RECURSE empty directories left by the above renames) "@ -if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { +if (-not $buildOutput.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)) { +if ($buildOutput.Contains($expected)) { throw 'VCPKG_POLICY_SKIP_PKGCONFIG_CHECK didn''t suppress' } @@ -888,7 +888,7 @@ file(RENAME "`${CURRENT_PACKAGES_DIR}/bin/pkgconfig/zlib.pc" "`${CURRENT_PACKAGE vcpkg_fixup_pkgconfig() file(REMOVE_RECURSE empty directories left by the above renames) "@ -if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { +if (-not $buildOutput.Contains($expected)) { throw 'Did not detect bad pkgconfig release only' } @@ -904,7 +904,7 @@ file(RENAME "`${CURRENT_PACKAGES_DIR}/bin/pkgconfig/libmorton.pc" "`${CURRENT_PA vcpkg_fixup_pkgconfig() file(REMOVE_RECURSE empty directories left by the above renames) "@ -if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { +if (-not $buildOutput.Contains($expected)) { throw 'Did not detect bad pkgconfig arch agnostic' } @@ -920,7 +920,7 @@ file(RENAME "`${CURRENT_PACKAGES_DIR}/bin/pkgconfig/zlib-no-libs.pc" "`${CURRENT vcpkg_fixup_pkgconfig() file(REMOVE_RECURSE empty directories left by the above renames) "@ -if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { +if (-not $buildOutput.Contains($expected)) { throw 'Did not detect bad pkgconfig arch agnostic empty libs' } @@ -936,7 +936,7 @@ file(RENAME "`${CURRENT_PACKAGES_DIR}/share/pkgconfig/zlib.pc" "`${CURRENT_PACKA vcpkg_fixup_pkgconfig() file(REMOVE_RECURSE empty directories left by the above renames) "@ -if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { +if (-not $buildOutput.Contains($expected)) { throw 'Did not detect bad pkgconfig arch dependent share' } @@ -962,10 +962,10 @@ $($packagesRoot)$($NativeSlash)vcpkg-policy-absolute-paths_$($Triplet)$($NativeS 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)) { + if (-not $buildOutput.Contains($expectedHeader)) { throw 'Did not detect bad absolute paths header' } - if (-not $buildOutput.Replace("`r`n", "`n").Contains($expectedFooter)) { + if (-not $buildOutput.Contains($expectedFooter)) { throw 'Did not detect bad absolute paths footer' } } @@ -980,10 +980,10 @@ $($packagesRoot)$($NativeSlash)vcpkg-policy-absolute-paths_$($Triplet)$($NativeS 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)) { + if (-not $buildOutput.Contains($expectedHeader)) { throw 'Did not detect bad absolute paths header' } - if (-not $buildOutput.Replace("`r`n", "`n").Contains($expectedFooter)) { + if (-not $buildOutput.Contains($expectedFooter)) { throw 'Did not detect bad absolute paths pkgconfig footer' } } diff --git a/azure-pipelines/end-to-end-tests-dir/usage.ps1 b/azure-pipelines/end-to-end-tests-dir/usage.ps1 index f2d84316e3..266ee2c4f4 100644 --- a/azure-pipelines/end-to-end-tests-dir/usage.ps1 +++ b/azure-pipelines/end-to-end-tests-dir/usage.ps1 @@ -59,8 +59,6 @@ vcpkg-header-only is header-only and can be used from CMake via: "--overlay-ports=$PSScriptRoot/../e2e-ports" )) -$usage = $usage.Replace("`r`n", "`n") - foreach ($requiredUsage in $requiredUsages) { if (-Not $usage.Contains($requiredUsage)) { throw "The usage text didn't contain the required entry:`n$requiredUsage" diff --git a/azure-pipelines/end-to-end-tests-dir/versions.ps1 b/azure-pipelines/end-to-end-tests-dir/versions.ps1 index 6f4ac057e0..2a5a4896fe 100644 --- a/azure-pipelines/end-to-end-tests-dir/versions.ps1 +++ b/azure-pipelines/end-to-end-tests-dir/versions.ps1 @@ -86,7 +86,7 @@ git -C $versionFilesPath @gitConfigOptions add -A git -C $versionFilesPath @gitConfigOptions commit -m "add octopus 1.0#1" $output = Run-VcpkgAndCaptureOutput @portsRedirectArgsOK x-add-version octopus Throw-IfNotFailed -if ($output.Replace("`r`n", "`n") -notmatch @" +if ($output -notmatch @" warning: In octopus, 1.0 is completely new version, so the "port-version" field should be removed. Remove "port-version", commit that change, and try again. To skip this check, rerun with --skip-version-format-check . "@) { throw "Expected detecting present port-version when a new version is added as bad" @@ -102,7 +102,7 @@ git -C $versionFilesPath @gitConfigOptions add -A git -C $versionFilesPath @gitConfigOptions commit -m "add octopus 2.0#1" $output = Run-VcpkgAndCaptureOutput @portsRedirectArgsOK x-add-version octopus Throw-IfNotFailed -if ($output.Replace("`r`n", "`n") -notmatch @" +if ($output -notmatch @" warning: In octopus, 2.0 is completely new version, so the "port-version" field should be removed. Remove "port-version", commit that change, and try again. To skip this check, rerun with --skip-version-format-check . "@) { throw "Expected detecting present port-version when a new version is added as bad" @@ -118,7 +118,7 @@ git -C $versionFilesPath @gitConfigOptions add -A git -C $versionFilesPath @gitConfigOptions commit -m "add octopus 2.0#3" $output = Run-VcpkgAndCaptureOutput @portsRedirectArgsOK x-add-version octopus Throw-IfNotFailed -if ($output.Replace("`r`n", "`n") -notmatch @" +if ($output -notmatch @" warning: In octopus, the current "port-version" for 2.0 is 1, so the next added "port-version" should be 2, but the port declares "port-version" 3. Change "port-version" to 2, commit that change, and try again. To skip this check, rerun with --skip-version-format-check . "@) { throw "Expected detecting present port-version when a new version is added as bad" diff --git a/azure-pipelines/end-to-end-tests-prelude.ps1 b/azure-pipelines/end-to-end-tests-prelude.ps1 index 9d0eaa3c8d..7a11e196b6 100644 --- a/azure-pipelines/end-to-end-tests-prelude.ps1 +++ b/azure-pipelines/end-to-end-tests-prelude.ps1 @@ -129,7 +129,7 @@ function Run-VcpkgAndCaptureOutput { Write-Host -ForegroundColor red $Script:CurrentTest $result = (& "$thisVcpkg" @testArgs) | Out-String Write-Host -ForegroundColor Gray $result - $result + $result.Replace("`r`n", "`n") } function Run-VcpkgAndCaptureStdErr { @@ -152,7 +152,7 @@ function Run-VcpkgAndCaptureStdErr { if ($null -eq $result) { $result = [string]::Empty } - return $result + return $result.Replace("`r`n", "`n") } function Run-Vcpkg { @@ -201,7 +201,6 @@ function Set-EmptyTestPort { "version": "$Version" "@ - $json = $json.Replace("`r`n", "`n") if (-not $null -eq $PortVersion) { $json += ",`n `"port-version`": $PortVersion" @@ -216,4 +215,53 @@ function Set-EmptyTestPort { Set-Content -Value $json -LiteralPath (Join-Path $portDir 'vcpkg.json') -Encoding Ascii -NoNewline } +function Throw-IfNonEqual { + Param( + [string]$Actual, + [string]$Expected + ) + 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" + Write-Stack + throw "Expected '$Expected' but got '$Actual'" + } +} + +function Throw-IfNonEndsWith { + Param( + [string]$Actual, + [string]$Expected + ) + + [string]$actualSuffix = $actual + $actualLength = $Actual.Length + if ($actualLength -gt $expected.Length) { + $actualSuffix = $Actual.Substring($actualLength - $expected.Length, $expected.Length) + } + + if ($actualSuffix -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" + Write-Stack + throw "Expected '$Expected' but got '$actualSuffix'" + } +} + +function Throw-IfNonContains { + Param( + [string]$Actual, + [string]$Expected + ) + if (-not ($Actual.Contains($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" + Write-Stack + throw "Expected '$Expected' to be in '$Actual'" + } +} + Refresh-TestRoot From 05ac9a10bd58d50b9f5d7a6ed250e9c9d8d99084 Mon Sep 17 00:00:00 2001 From: Embedded Bot Date: Wed, 23 Oct 2024 05:03:39 +0000 Subject: [PATCH 37/39] [localization][automated][ci skip] update locale files --- locales/messages.cs.json | 8 ++++---- locales/messages.de.json | 8 ++++---- locales/messages.es.json | 8 ++++---- locales/messages.fr.json | 8 ++++---- locales/messages.it.json | 8 ++++---- locales/messages.ja.json | 8 ++++---- locales/messages.pl.json | 8 ++++---- locales/messages.pt-BR.json | 8 ++++---- locales/messages.ru.json | 8 ++++---- locales/messages.tr.json | 8 ++++---- locales/messages.zh-Hans.json | 8 ++++---- locales/messages.zh-Hant.json | 8 ++++---- 12 files changed, 48 insertions(+), 48 deletions(-) diff --git a/locales/messages.cs.json b/locales/messages.cs.json index 23fa4b00b8..79421aac52 100644 --- a/locales/messages.cs.json +++ b/locales/messages.cs.json @@ -584,7 +584,7 @@ "HelpBinaryCachingAwsConfig": "**Experimentální: může se změnit nebo odebrat bez upozornění.**\nPřidá zdroj AWS S3. Přidá konfiguraci AWS. V současné době podporuje pouze parametr no-sign-request, který je ekvivalentem parametru --no-sign-request rozhraní příkazového řádku AWS.", "HelpBinaryCachingAwsHeader": "Zdroje webových služeb Azure", "HelpBinaryCachingAzBlob": "**Experimentální: může se změnit nebo odebrat bez upozornění.**\nPřidá zdroj Azure Blob Storage. Používá ověřování sdíleného přístupového podpisu. by měla obsahovat cestu ke kontejneru. musí mít předponu ?.", - "HelpBinaryCachingAzUpkg": "**Experimental: will change or be removed without warning**\nAdds a Universal Package Azure Artifacts source. Uses the Azure CLI (az artifacts) for uploads and downloads.", + "HelpBinaryCachingAzUpkg": "**Experimentální: bude změněno nebo odebráno bez upozornění**\nPřidá zdroj Azure Artifacts univerzálního balíčku. Pro nahrávání a stahování používá Azure CLI (az artifacts).", "HelpBinaryCachingCos": "**Experimentální: může se změnit nebo odebrat bez upozornění.**\nPřidá zdroj COS. Pro nahrávání a stahování používá rozhraní příkazového řádku cos. by měl obsahovat schéma cos:// a mít příponu /.", "HelpBinaryCachingDefaults": "Přidá výchozí umístění na základě souborů. Na základě nastavení systému je výchozí cesta k ukládání binárních souborů {path}. Nahlíží do %LOCALAPPDATA%/%APPDATA% ve Windows a $XDG_CACHE_HOME nebo $HOME na jiných platformách.", "HelpBinaryCachingDefaultsError": "Přidá výchozí umístění na základě souborů.", @@ -688,7 +688,7 @@ "InvalidArgumentRequiresAbsolutePath": "Neplatný argument: argumenty cesty binární konfigurace {binary_source} pro binární konfigurační řetězce musí být absolutní.", "InvalidArgumentRequiresBaseUrl": "Neplatný argument: binární konfigurace {binary_source} vyžaduje jako první argument základní adresu URL {base_url}.", "InvalidArgumentRequiresBaseUrlAndToken": "Neplatný argument: binární konfigurace {binary_source} vyžaduje alespoň základní adresu URL a token SAS.", - "InvalidArgumentRequiresFourOrFiveArguments": "invalid argument: binary config '{binary_source}' requires 4 or 5 arguments", + "InvalidArgumentRequiresFourOrFiveArguments": "neplatný argument: binární konfigurace {binary_source} vyžaduje 4 nebo 5 argumentů", "InvalidArgumentRequiresNoWildcards": "nelze opravit velikost písmen cesty Windows pro cestu obsahující zástupné znaky: {path}", "InvalidArgumentRequiresNoneArguments": "Neplatný argument: binární konfigurace {binary_source} nepřijímá argumenty.", "InvalidArgumentRequiresOneOrTwoArguments": "Neplatný argument: binární konfigurace {binary_source} vyžaduje 1 nebo 2 argumenty.", @@ -813,7 +813,7 @@ "NonExactlyArgs": "příkaz {command_name} vyžaduje přesně tento počet argumentů: {expected}, ale zadal se tento počet argumentů: {actual}", "NonOneRemainingArgs": "příkaz {command_name} vyžaduje přesně jeden argument", "NonRangeArgs": "příkaz {command_name} vyžaduje mezi {lower} a {upper} argumenty včetně, ale zadal se tento počet argumentů: {actual}", - "NonRangeArgsGreater": "the command '{command_name}' requires at least {lower} arguments, but {actual} were provided", + "NonRangeArgsGreater": "příkaz {command_name} vyžaduje alespoň tento počet argumentů: {lower}, ale byl zadán tento počet argumentů: {actual}", "NonZeroOrOneRemainingArgs": "příkaz {command_name} vyžaduje nula nebo jeden argument", "NonZeroRemainingArgs": "příkaz {command_name} nepřijímá žádné další argumenty", "NugetOutputNotCapturedBecauseInteractiveSpecified": "Příkaz NuGet selhal a výstup se nezachytil, protože se zadala možnost --interactive.", @@ -932,7 +932,7 @@ "RemovingPackage": "Odebírá se {action_index}/{count} {spec}", "ResponseFileCode": "@response_file", "RestoredPackagesFromAWS": "Počet obnovených balíčků z AWS: {count} za {elapsed} Pokud si chcete zobrazit další podrobnosti, použijte --debug.", - "RestoredPackagesFromAZUPKG": "Restored {count} package(s) from Universal Packages in {elapsed}. Use --debug to see more details.", + "RestoredPackagesFromAZUPKG": "Počet obnovených balíčků z Universal Packages za uplynulý čas ({elapsed}): {count}. Pokud si chcete zobrazit další podrobnosti, použijte --debug.", "RestoredPackagesFromCOS": "Počet obnovených balíčků z COS: {count} za {elapsed}. Pokud si chcete zobrazit další podrobnosti, použijte --debug.", "RestoredPackagesFromFiles": "Počet obnovených balíčků z cesty {path} za {elapsed}: {count} Pokud si chcete zobrazit další podrobnosti, použijte --debug.", "RestoredPackagesFromGCS": "Počet obnovených balíčků z GCS: {count} za {elapsed}. Pokud si chcete zobrazit další podrobnosti, použijte --debug.", diff --git a/locales/messages.de.json b/locales/messages.de.json index 1786edd609..4b9be8e1dc 100644 --- a/locales/messages.de.json +++ b/locales/messages.de.json @@ -584,7 +584,7 @@ "HelpBinaryCachingAwsConfig": "**Experimentell: Wird ohne Warnung geändert oder entfernt**\nFügt eine AWS S3-Quelle hinzu. Fügt eine AWS-Konfiguration hinzu. Unterstützt zurzeit nur den Parameter „no-sign-request“, der dem Parameter „--no-sign-request“ der AWS CLI entspricht.", "HelpBinaryCachingAwsHeader": "Azure-Webdienste-Quellen", "HelpBinaryCachingAzBlob": "**Experimentell: Wird ohne Warnung geändert oder entfernt**\nFügt eine Azure Blob Storage-Quelle hinzu. Verwendet eine Überprüfung mithilfe von Shared Access Signature. Die sollte den Containerpfad enthalten. muss ein „?“ vorangestellt werden.", - "HelpBinaryCachingAzUpkg": "**Experimental: will change or be removed without warning**\nAdds a Universal Package Azure Artifacts source. Uses the Azure CLI (az artifacts) for uploads and downloads.", + "HelpBinaryCachingAzUpkg": "**Experimentell: Wird ohne Warnung geändert oder entfernt**\nFügt eine Quelle für ein Universalpaket von Azure Artifacts hinzu. Verwendet die Azure CLI (az artifacts) für Uploads und Downloads.", "HelpBinaryCachingCos": "**Experimentell: Wird ohne Warnung geändert oder entfernt**\nFügt eine COS-Quelle hinzu. Verwendet die COS-CLI für Uploads und Downloads. muss das Schema „cos://“ enthalten und „/“ als Suffix haben.", "HelpBinaryCachingDefaults": "Fügt den dateibasierten Standardspeicherort hinzu. Basierend auf Ihren Systemeinstellungen lautet der Standardpfad zum Speichern von Binärdateien „{path}“. Hierdurch wird %LOCALAPPDATA%/%APPDATA% unter Windows und $XDG_CACHE_HOME oder $HOME auf anderen Plattformen abgefragt.", "HelpBinaryCachingDefaultsError": "Fügt den dateibasierten Standardspeicherort hinzu.", @@ -688,7 +688,7 @@ "InvalidArgumentRequiresAbsolutePath": "Ungültiges Argument: Die binäre Konfiguration '{binary_source}' Pfadargumente für binäre Konfigurationszeichenfolgen müssen absolut sein.", "InvalidArgumentRequiresBaseUrl": "Ungültiges Argument: Für die binäre Konfiguration '{binary_source}' ist eine {base_url} Basis-URL als erstes Argument erforderlich.", "InvalidArgumentRequiresBaseUrlAndToken": "Ungültiges Argument: Die Binärkonfiguration „{binary_source}“ erfordert mindestens eine Basis-URL und ein SAS-Token", - "InvalidArgumentRequiresFourOrFiveArguments": "invalid argument: binary config '{binary_source}' requires 4 or 5 arguments", + "InvalidArgumentRequiresFourOrFiveArguments": "ungültiges Argument: Binärkonfiguration „{binary_source}“ erfordert 4 oder 5 Argumente", "InvalidArgumentRequiresNoWildcards": "Der Windows-Pfadfall kann nicht behoben werden, weil der Pfad Platzhalter enthält: {path}", "InvalidArgumentRequiresNoneArguments": "Ungültiges Argument: Die binäre Konfiguration '{binary_source}' akzeptiert keine Argumente", "InvalidArgumentRequiresOneOrTwoArguments": "ungültiges Argument: Binärkonfiguration „{binary_source}“ erfordert 1 oder 2 Argumente", @@ -813,7 +813,7 @@ "NonExactlyArgs": "Der Befehl \"{command_name}\" erfordert genau {expected} Argumente, aber {actual} wurden angegeben.", "NonOneRemainingArgs": "Der Befehl \"{command_name}\" erfordert genau ein Argument.", "NonRangeArgs": "Der Befehl \"{command_name}\" erfordert zwischen {lower} und {upper} Argumenten, einschließlich, aber {actual} wurden angegeben.", - "NonRangeArgsGreater": "the command '{command_name}' requires at least {lower} arguments, but {actual} were provided", + "NonRangeArgsGreater": "Befehl „{command_name}“ erfordert mindestens {lower} Argumente, aber {actual} wurden angegeben.", "NonZeroOrOneRemainingArgs": "Der Befehl \"{command_name}\" erfordert NULL oder ein Argument.", "NonZeroRemainingArgs": "Der Befehl \"{command_name}\" akzeptiert keine zusätzlichen Argumente.", "NugetOutputNotCapturedBecauseInteractiveSpecified": "Fehler beim NuGet-Befehl, und die Ausgabe wurde nicht erfasst, weil \"--interactive\" angegeben wurde.", @@ -932,7 +932,7 @@ "RemovingPackage": "{action_index}/{count} {spec} wird entfernt.", "ResponseFileCode": "@response_file", "RestoredPackagesFromAWS": "{count} Paket(e) wurde(n) von AWS in {elapsed} wiederhergestellt. Verwenden Sie „--debug\", um weitere Details anzuzeigen.", - "RestoredPackagesFromAZUPKG": "Restored {count} package(s) from Universal Packages in {elapsed}. Use --debug to see more details.", + "RestoredPackagesFromAZUPKG": "{count} Paket(e) wurde(n) von Universal Packages in {elapsed} wiederhergestellt. Verwenden Sie „--debug\", um weitere Details anzuzeigen.", "RestoredPackagesFromCOS": "{count} Paket(e) wurde(n) von COS in {elapsed} wiederhergestellt. Verwenden Sie „--debug\", um weitere Details anzuzeigen.", "RestoredPackagesFromFiles": "{count} Paket(e) wurde(n) von {path} in {elapsed} wiederhergestellt. Verwenden Sie „--debug\", um weitere Details anzuzeigen.", "RestoredPackagesFromGCS": "{count} Paket(e) wurde(n) von GCS in {elapsed} wiederhergestellt. Verwenden Sie „--debug\", um weitere Details anzuzeigen.", diff --git a/locales/messages.es.json b/locales/messages.es.json index c07719b558..bcbbcf378f 100644 --- a/locales/messages.es.json +++ b/locales/messages.es.json @@ -584,7 +584,7 @@ "HelpBinaryCachingAwsConfig": "**Experimental: cambiará o se quitará sin advertencia**\nAgrega un origen de AWS S3. Agrega una configuración de AWS. Actualmente solo admite el parámetro \"no-sign-request\" equivalente al parámetro --no-sign-request de la CLI de AWS.", "HelpBinaryCachingAwsHeader": "Orígenes de servicios web de Azure", "HelpBinaryCachingAzBlob": "**Experimental: cambiará o se quitará sin advertencia**\nAgrega un origen de Azure Blob Storage. Usa la validación de firma de acceso compartido. debe incluir la ruta de acceso del contenedor. debe tener el prefijo \"?\".", - "HelpBinaryCachingAzUpkg": "**Experimental: will change or be removed without warning**\nAdds a Universal Package Azure Artifacts source. Uses the Azure CLI (az artifacts) for uploads and downloads.", + "HelpBinaryCachingAzUpkg": "**Experimental: cambiará o se quitará sin advertencia**\nAgrega un origen de Azure Artifacts de paquete universal. Usa el CLI de Azure (artefactos de Azure) para cargas y descargas.", "HelpBinaryCachingCos": "**Experimental: cambiará o se quitará sin advertencia**\nAgrega un origen de COS. Usa la CLI de cos para cargas y descargas. debe incluir el esquema \"cos://\" y tener \"/\" como sufijo.", "HelpBinaryCachingDefaults": "Agrega la ubicación predeterminada basada en archivos. Según la configuración del sistema, la ruta de acceso predeterminada para almacenar archivos binarios es \"{path}\". Esto efectúa una consulta %LOCALAPPDATA%/%APPDATA% en Windows y $XDG_CACHE_HOME o $HOME en otras plataformas.", "HelpBinaryCachingDefaultsError": "Agrega la ubicación predeterminada basada en archivos.", @@ -688,7 +688,7 @@ "InvalidArgumentRequiresAbsolutePath": "argumento no válido: los argumentos de la ruta de acceso de '{binary_source}' de configuración binaria para las cadenas de configuración binarias deben ser absolutos", "InvalidArgumentRequiresBaseUrl": "argumento no válido: '{binary_source}' de configuración binaria requiere una dirección URL base de {base_url} como primer argumento", "InvalidArgumentRequiresBaseUrlAndToken": "argumento no válido: configuración binaria '{binary_source}' requiere al menos una dirección URL base y un token SAS", - "InvalidArgumentRequiresFourOrFiveArguments": "invalid argument: binary config '{binary_source}' requires 4 or 5 arguments", + "InvalidArgumentRequiresFourOrFiveArguments": "argumento no válido: la configuración binaria \"{binary_source}\" requiere 4 ó 5 argumentos", "InvalidArgumentRequiresNoWildcards": "no se puede corregir el caso de la ruta de acceso de Windows para la ruta de acceso que contiene caracteres comodín: {path}", "InvalidArgumentRequiresNoneArguments": "argumento no válido: '{binary_source}' de configuración binaria no toma argumentos", "InvalidArgumentRequiresOneOrTwoArguments": "argumento no válido: '{binary_source}' de configuración binaria requiere 1 ó 2 argumentos", @@ -813,7 +813,7 @@ "NonExactlyArgs": "el comando '{command_name}' requiere exactamente {expected} argumentos, pero se proporcionaron {actual}.", "NonOneRemainingArgs": "el comando '{command_name}' requiere exactamente un argumento", "NonRangeArgs": "el comando \"{command_name}\" requiere entre {lower} y {upper} argumentos, ambos inclusive, pero se proporcionaron {actual}.", - "NonRangeArgsGreater": "the command '{command_name}' requires at least {lower} arguments, but {actual} were provided", + "NonRangeArgsGreater": "el comando \"{command_name}\" requiere al menos {lower} argumentos, pero se proporcionaron {actual}.", "NonZeroOrOneRemainingArgs": "el comando '{command_name}' requiere cero o un argumento", "NonZeroRemainingArgs": "el comando '{command_name}' no acepta ningún argumento adicional", "NugetOutputNotCapturedBecauseInteractiveSpecified": "Error del comando NuGet y no se capturó la salida porque se especificó --interactive", @@ -932,7 +932,7 @@ "RemovingPackage": "Quitando {action_index}/{count} {spec}", "ResponseFileCode": "@response_file", "RestoredPackagesFromAWS": "Se restauraron {count} paquetes de AWS en {elapsed}. Use --debug para ver más detalles.", - "RestoredPackagesFromAZUPKG": "Restored {count} package(s) from Universal Packages in {elapsed}. Use --debug to see more details.", + "RestoredPackagesFromAZUPKG": "Se restauraron {count} paquete(s) de Universal Packages en {elapsed}. Use --debug para ver más detalles.", "RestoredPackagesFromCOS": "Se restauraron {count} paquetes de COS en {elapsed}. Use --debug para ver más detalles.", "RestoredPackagesFromFiles": "Se restauraron {count} paquetes de {path} en {elapsed}. Use --debug para ver más detalles.", "RestoredPackagesFromGCS": "Se restauraron {count} paquetes de GCS en {elapsed}. Use --debug para ver más detalles.", diff --git a/locales/messages.fr.json b/locales/messages.fr.json index 16a9463a28..779c3a768c 100644 --- a/locales/messages.fr.json +++ b/locales/messages.fr.json @@ -584,7 +584,7 @@ "HelpBinaryCachingAwsConfig": "**Expérimental : sera modifié ou supprimé sans avertissement**\nAjoute une source AWS S3. Ajoute une configuration AWS, prend actuellement en charge uniquement le paramètre « no-sign-request » équivalent au paramètre --no-sign-request de l’interface CLI AWS.", "HelpBinaryCachingAwsHeader": "Sources Azure Service web", "HelpBinaryCachingAzBlob": "**Expérimental : sera modifié ou supprimé sans avertissement**\nAjoute une source Stockage Blob Azure. Utilise la validation de signature d’accès partagé. Doit inclure le chemin d’accès du conteneur. Doit avoir le préfixe « ? ».", - "HelpBinaryCachingAzUpkg": "**Experimental: will change or be removed without warning**\nAdds a Universal Package Azure Artifacts source. Uses the Azure CLI (az artifacts) for uploads and downloads.", + "HelpBinaryCachingAzUpkg": "**Expérimental : sera modifié ou supprimé sans avertissement**\nPermet d’ajouter une source Azure Artifacts de package universel. Permet d’utiliser l’interface Azure CLI (artefacts az) pour les chargements et les téléchargements.", "HelpBinaryCachingCos": "**Expérimental : sera modifié ou supprimé sans avertissement**\nAjoute une source COS. Utilise l’interface CLI cos pour les chargements et les téléchargements. doit inclure le schéma « cos:// » et avoir le suffixe « / ».", "HelpBinaryCachingDefaults": "Ajouter l’emplacement basé sur le fichier par défaut. En fonction de vos paramètres système, le chemin d’accès par défaut pour stocker les fichiers binaires est « {path} ». Cette opération consulte %LOCALAPPDATA%/%APPDATA% sur Windows et $XDG_CACHE_HOME ou $HOME sur d’autres plateformes.", "HelpBinaryCachingDefaultsError": "Ajoute l’emplacement basé sur les fichiers par défaut.", @@ -688,7 +688,7 @@ "InvalidArgumentRequiresAbsolutePath": "argument non valide : les arguments de chemin de la configuration binaire '{binary_source}' pour les chaînes de configuration binaires doivent être absolus", "InvalidArgumentRequiresBaseUrl": "argument non valide : la configuration binaire '{binary_source}' nécessite une URL de base {base_url} comme premier argument", "InvalidArgumentRequiresBaseUrlAndToken": "argument non valide : la configuration binaire '{binary_source}' nécessite au moins une URL de base et un jeton SAS", - "InvalidArgumentRequiresFourOrFiveArguments": "invalid argument: binary config '{binary_source}' requires 4 or 5 arguments", + "InvalidArgumentRequiresFourOrFiveArguments": "argument non valide : la configuration binaire « {binary_source} » nécessite 4 ou 5 arguments", "InvalidArgumentRequiresNoWildcards": "impossible de corriger la casse du chemin d’accès Windows pour le chemin contenant des caractères génériques : {path}", "InvalidArgumentRequiresNoneArguments": "argument invalide : la configuration binaire '{binary_source}' ne prend pas d’arguments", "InvalidArgumentRequiresOneOrTwoArguments": "argument non valide : la configuration binaire '{binary_source}' nécessite 1 ou 2 arguments", @@ -813,7 +813,7 @@ "NonExactlyArgs": "la commande '{command_name}' requiert exactement {expected} arguments, mais {actual} ont été fournis", "NonOneRemainingArgs": "la commande '{command_name}' requiert exactement un argument", "NonRangeArgs": "la '{command_name}' de commande requiert entre les arguments {lower} et {upper}, inclus, mais {actual} ont été fournis", - "NonRangeArgsGreater": "the command '{command_name}' requires at least {lower} arguments, but {actual} were provided", + "NonRangeArgsGreater": "la commande « {command_name} » requiert au moins {expected} arguments, mais {actual} ont été fournis", "NonZeroOrOneRemainingArgs": "la '{command_name}' de commande requiert zéro ou un argument", "NonZeroRemainingArgs": "la '{command_name}' de commande n’accepte aucun argument supplémentaire", "NugetOutputNotCapturedBecauseInteractiveSpecified": "La commande NuGet a échoué et la sortie n’a pas été capturée, car --interactive a été spécifié", @@ -932,7 +932,7 @@ "RemovingPackage": "Suppression de {action_index}/{count} {spec}", "ResponseFileCode": "@response_file", "RestoredPackagesFromAWS": "{count} package(s) restauré(s) à partir d’AWS dans {elapsed}. Utilisez --debug pour afficher plus de détails.", - "RestoredPackagesFromAZUPKG": "Restored {count} package(s) from Universal Packages in {elapsed}. Use --debug to see more details.", + "RestoredPackagesFromAZUPKG": "{count} package(s) ont été restauré(s) à partir d’Universal Packages en {elapsed}. Utilisez --debug pour afficher plus d’informations.", "RestoredPackagesFromCOS": "{count} package(s) restauré(s) à partir du COS dans {elapsed}. Utilisez --debug pour afficher plus de détails.", "RestoredPackagesFromFiles": "{count} package(s) restauré(s) à partir de {path} dans {elapsed}. Utilisez --debug pour afficher plus de détails.", "RestoredPackagesFromGCS": "{count} package(s) restauré(s) à partir de GCS dans {elapsed}. Utilisez --debug pour afficher plus de détails.", diff --git a/locales/messages.it.json b/locales/messages.it.json index f7f90ac2fa..986566c443 100644 --- a/locales/messages.it.json +++ b/locales/messages.it.json @@ -584,7 +584,7 @@ "HelpBinaryCachingAwsConfig": "**Sperimentale: verrà modificato o rimosso senza preavviso**\nAggiunge un'origine di AWS S3. Aggiunge una configurazione di AWS. Supporta attualmente solo il parametro 'no-sign-request' equivalente al parametro --no-sign-request dell'interfaccia della riga di comando di AWS.", "HelpBinaryCachingAwsHeader": "Origini di servizi Web di Azure", "HelpBinaryCachingAzBlob": "**Sperimentale: verrà modificato o rimosso senza preavviso**\nAggiunge un'origine di Archiviazione BLOB di Azure. Usa la convalida della firma di accesso condiviso. deve includere il percorso del contenitore. deve essere preceduto da un prefisso \"?\".", - "HelpBinaryCachingAzUpkg": "**Experimental: will change or be removed without warning**\nAdds a Universal Package Azure Artifacts source. Uses the Azure CLI (az artifacts) for uploads and downloads.", + "HelpBinaryCachingAzUpkg": "**Sperimentale: verrà modificato o rimosso senza avviso**\nAggiunge un'origine di Universal Packages Azure Artifacts. Usa l'interfaccia della riga di comando di Azure (artefatti az) per caricamenti e download.", "HelpBinaryCachingCos": "**Sperimentale: verrà modificato o rimosso senza preavviso**\nAggiunge un'origine di COS. Usa l'interfaccia della riga di comando cos per caricamenti e download. deve includere lo schema 'cos://' e deve avere \"/\" come suffisso.", "HelpBinaryCachingDefaults": "Aggiunge il percorso predefinito basato su file. In base alle impostazioni del sistema, il percorso predefinito per l'archiviazione dei file binari è \"{path}\". Consultare %LOCALAPPDATA%/%APPDATA% per Windows e $XDG_CACHE_HOME o $HOME in altre piattaforme.", "HelpBinaryCachingDefaultsError": "Aggiunge il percorso predefinito basato su file.", @@ -688,7 +688,7 @@ "InvalidArgumentRequiresAbsolutePath": "argomento non valido: gli argomenti del percorso di configurazione binaria '{binary_source}' per le stringhe di configurazione binarie devono essere assoluti", "InvalidArgumentRequiresBaseUrl": "argomento non valido: la configurazione binaria '{binary_source}' richiede un URL di base {base_url} come primo argomento", "InvalidArgumentRequiresBaseUrlAndToken": "argomento non valido: la configurazione binaria '{binary_source}' richiede almeno un URL di base e un token di firma di accesso condiviso", - "InvalidArgumentRequiresFourOrFiveArguments": "invalid argument: binary config '{binary_source}' requires 4 or 5 arguments", + "InvalidArgumentRequiresFourOrFiveArguments": "argomento non valido: la configurazione binaria '{binary_source}' richiede 4 o 5 argomenti", "InvalidArgumentRequiresNoWildcards": "non è possibile correggere maiuscole/minuscole del percorso di Windows per il percorso contenente caratteri jolly: {path}", "InvalidArgumentRequiresNoneArguments": "argomento non valido: la configurazione binaria '{binary_source}' non accetta argomenti", "InvalidArgumentRequiresOneOrTwoArguments": "argomento non valido: la configurazione binaria '{binary_source}' richiede 1 o 2 argomenti", @@ -813,7 +813,7 @@ "NonExactlyArgs": "il comando '{command_name}' richiede esattamente '{expected}' argomenti, ma ne sono stati specificati {actual}", "NonOneRemainingArgs": "il comando '{command_name}' richiede esattamente un argomento", "NonRangeArgs": "il comando '{command_name}' richiede un numero di argomenti compreso tra {lower} e {upper} inclusi, ma ne sono stati specificati {actual}", - "NonRangeArgsGreater": "the command '{command_name}' requires at least {lower} arguments, but {actual} were provided", + "NonRangeArgsGreater": "il comando '{command_name}' richiede almeno '{lower}' argomenti, ma ne sono stati specificati {actual}", "NonZeroOrOneRemainingArgs": "il comando '{command_name}' richiede un argomento o zero argomenti", "NonZeroRemainingArgs": "il comando '{command_name}' non accetta argomenti aggiuntivi", "NugetOutputNotCapturedBecauseInteractiveSpecified": "Il comando NuGet non è riuscito e l'output non è stato acquisito perché è stato specificato --interactive", @@ -932,7 +932,7 @@ "RemovingPackage": "Rimozione di {action_index}/{count} {spec}", "ResponseFileCode": "@response_file", "RestoredPackagesFromAWS": "Sono stati ripristinati {count} pacchetti da AWS in {elapsed}. Usare --debug per visualizzare altri dettagli.", - "RestoredPackagesFromAZUPKG": "Restored {count} package(s) from Universal Packages in {elapsed}. Use --debug to see more details.", + "RestoredPackagesFromAZUPKG": "{count} pacchetti ripristinati da Universal Packages in {elapsed}. Usare --debug per visualizzare altri dettagli.", "RestoredPackagesFromCOS": "Sono stati ripristinati {count} pacchetti da COS in {elapsed}. Usare --debug per visualizzare altri dettagli.", "RestoredPackagesFromFiles": "Sono stati ripristinati {count} pacchetti da {path} in {elapsed}. Usare --debug per visualizzare altri dettagli.", "RestoredPackagesFromGCS": "Sono stati ripristinati {count} pacchetti da GCS in {elapsed}. Usare --debug per visualizzare altri dettagli.", diff --git a/locales/messages.ja.json b/locales/messages.ja.json index 0df85bf120..2c29926437 100644 --- a/locales/messages.ja.json +++ b/locales/messages.ja.json @@ -584,7 +584,7 @@ "HelpBinaryCachingAwsConfig": "**実験的: 警告なしに変更または削除されます**\nAWS S3 ソースを追加します。AWS 構成を追加します。現在、AWS CLI の --no-sign-request パラメーターに相当する 'no-sign-request' パラメーターのみをサポートしています。", "HelpBinaryCachingAwsHeader": "Azure Web サービス ソース", "HelpBinaryCachingAzBlob": "**実験的: 警告なしに変更または削除されます**\nAzure Blob Storage ソースを追加します。Shared Access Signature 検証を使用します。 にはコンテナー パスを含める必要があります。 には \"?\" を前に付ける必要があります。", - "HelpBinaryCachingAzUpkg": "**Experimental: will change or be removed without warning**\nAdds a Universal Package Azure Artifacts source. Uses the Azure CLI (az artifacts) for uploads and downloads.", + "HelpBinaryCachingAzUpkg": "**試験段階: 警告なしに変更または削除されます**\nユニバーサル パッケージ Azure Artifacts ソースを追加します。アップロードとダウンロードに Azure CLI (az artifacts) を使用します。", "HelpBinaryCachingCos": "**実験的: 警告なしに変更または削除されます**\nCOS ソースを追加します。アップロードとダウンロードに cos CLI を使用します。 にはスキーム 'cos://' を含め、\"/\" のサフィックスを付ける必要があります。", "HelpBinaryCachingDefaults": "既定のファイルベースの場所を追加します。システム設定に基づいて、バイナリを格納するための既定のパスは “{path}” です。これは、Windows では %LOCALAPPDATA%/%APPDATA% を参照し、他のプラットフォームでは $XDG_CACHE_HOME または $HOME を参照します。", "HelpBinaryCachingDefaultsError": "既定のファイルベースの場所を追加します。", @@ -688,7 +688,7 @@ "InvalidArgumentRequiresAbsolutePath": "無効な引数: バイナリ構成文字列のバイナリ構成 '{binary_source}' パス引数は絶対である必要があります", "InvalidArgumentRequiresBaseUrl": "無効な引数: バイナリ構成 '{binary_source}' には、最初の引数として {base_url} ベース URL が必要です", "InvalidArgumentRequiresBaseUrlAndToken": "無効な引数: バイナリ構成 '{binary_source}' には、少なくともベース URL と SAS トークンが必要です", - "InvalidArgumentRequiresFourOrFiveArguments": "invalid argument: binary config '{binary_source}' requires 4 or 5 arguments", + "InvalidArgumentRequiresFourOrFiveArguments": "無効な引数: バイナリ構成 '{binary_source}' には 4 つまたは 5 つの引数が必要です", "InvalidArgumentRequiresNoWildcards": "ワイルドカードを含むパスの Windows パス ケースを修正できません: {path}", "InvalidArgumentRequiresNoneArguments": "無効な引数: バイナリ構成 '{binary_source}' は引数を受け取りません", "InvalidArgumentRequiresOneOrTwoArguments": "無効な引数: バイナリ構成 '{binary_source}' には 1 つまたは 2 つの引数が必要です", @@ -813,7 +813,7 @@ "NonExactlyArgs": "コマンド '{command_name}' には正確に {expected} 個の引数が必要ですが、{actual} 個が指定されました", "NonOneRemainingArgs": "コマンド '{command_name}' には正確に 1 個の引数が必要です", "NonRangeArgs": "コマンド '{command_name}' には、{lower} 引数と {upper} 引数の間 (両端を含む) が必要ですが、{actual} が指定されました", - "NonRangeArgsGreater": "the command '{command_name}' requires at least {lower} arguments, but {actual} were provided", + "NonRangeArgsGreater": "コマンド '{command_name}' には少なくとも {lower} 個の引数が必要ですが、{actual} 個が指定されました", "NonZeroOrOneRemainingArgs": "コマンド '{command_name}' には 0 または 1 個の引数が必要です", "NonZeroRemainingArgs": "コマンド '{command_name}' は追加の引数を受け付けません", "NugetOutputNotCapturedBecauseInteractiveSpecified": "--interactive が指定されたため、NuGet コマンドが失敗し、出力はキャプチャされませんでした", @@ -932,7 +932,7 @@ "RemovingPackage": "{action_index}/{count} {spec} を削除しています", "ResponseFileCode": "@response_file", "RestoredPackagesFromAWS": "{elapsed} で AWS から {count} パッケージを復元しました。--debug を使用して詳細を表示します。", - "RestoredPackagesFromAZUPKG": "Restored {count} package(s) from Universal Packages in {elapsed}. Use --debug to see more details.", + "RestoredPackagesFromAZUPKG": "{elapsed} の Universal Packages から {count} 個のパッケージを復元しました。--debug を使用して詳細を表示します。", "RestoredPackagesFromCOS": "{elapsed} の COS から {count} パッケージを復元しました。--debug を使用して詳細を表示します。", "RestoredPackagesFromFiles": "{elapsed} の {path} から {count} パッケージを復元しました。--debug を使用して詳細を表示します。", "RestoredPackagesFromGCS": "{elapsed} の GCS から {count} パッケージを復元しました。--debug を使用して詳細を表示します。", diff --git a/locales/messages.pl.json b/locales/messages.pl.json index d7db9fe65a..36758b1eac 100644 --- a/locales/messages.pl.json +++ b/locales/messages.pl.json @@ -584,7 +584,7 @@ "HelpBinaryCachingAwsConfig": "**Eksperymentalne: zmieni się lub zostanie usunięte bez ostrzeżenia**\nDodaje źródło usługi AWS S3. Dodaje konfigurację platformy AWS; obecnie obsługuje tylko parametr „no-sign-request”, który jest odpowiednikiem parametru --no-sign-request interfejsu wiersza polecenia platformy AWS.", "HelpBinaryCachingAwsHeader": "Źródła usług sieci Web platformy Azure", "HelpBinaryCachingAzBlob": "**Eksperymentalne: zmieni się lub zostanie usunięte bez ostrzeżenia**\nDodaje źródło usługi Azure Blob Storage. Używa weryfikacji sygnatury dostępu współdzielonego. powinna zawierać ścieżkę kontenera. musi mieć prefiks „?”.", - "HelpBinaryCachingAzUpkg": "**Experimental: will change or be removed without warning**\nAdds a Universal Package Azure Artifacts source. Uses the Azure CLI (az artifacts) for uploads and downloads.", + "HelpBinaryCachingAzUpkg": "**Eksperymentalne: mogą ulec zmianie lub zostać usunięte bez ostrzeżenia**\nDodaje źródło pakietu Universal Package Azure Artifacts. Używa interfejsu wiersza polecenia platformy Azure (Azure Artifacts) do przekazywania i pobierania.", "HelpBinaryCachingCos": "**Eksperymentalne: zmieni się lub zostanie usunięte bez ostrzeżenia**\nDodaje źródło COS. Używa interfejsu wiersza polecenia COS do przekazywania i pobierania. powinien zawierać schemat „cos://” i być zakończony sufiksem „/”.", "HelpBinaryCachingDefaults": "Dodaje domyślną lokalizację opartą na pliku. Na podstawie ustawień systemu, domyślną ścieżką do przechowywania plików binarnych jest „{path}”. Dotyczy to usługi %LOCALAPPDATA%/%APPDATA% w systemie Windows i $XDG_CACHE_HOME lub $HOME na innych platformach.", "HelpBinaryCachingDefaultsError": "Dodaje domyślną lokalizację opartą na pliku.", @@ -688,7 +688,7 @@ "InvalidArgumentRequiresAbsolutePath": "nieprawidłowy argument: argumenty ścieżki konfiguracji binarnej \"{binary_source}\" dla binarnych ciągów konfiguracji muszą być bezwzględne", "InvalidArgumentRequiresBaseUrl": "nieprawidłowy argument: konfiguracja binarna \"{binary_source}\" wymaga podstawowego adresu URL {base_url} jako pierwszego argumentu", "InvalidArgumentRequiresBaseUrlAndToken": "nieprawidłowy argument: konfiguracja binarna \"{binary_source}\" wymaga co najmniej podstawowego adresu URL i tokenu SAS", - "InvalidArgumentRequiresFourOrFiveArguments": "invalid argument: binary config '{binary_source}' requires 4 or 5 arguments", + "InvalidArgumentRequiresFourOrFiveArguments": "nieprawidłowy argument: konfiguracja binarna „{binary_source}” wymaga 4 lub 5 argumentów", "InvalidArgumentRequiresNoWildcards": "nie można naprawić przypadku ścieżki systemu Windows dla ścieżki zawierającej symbole wieloznaczne: {path}", "InvalidArgumentRequiresNoneArguments": "nieprawidłowy argument: konfiguracja binarna „{binary_source}” nie wymaga argumentów", "InvalidArgumentRequiresOneOrTwoArguments": "nieprawidłowy argument: konfiguracja binarna „{binary_source}” wymaga 1 lub 2 argumentów", @@ -813,7 +813,7 @@ "NonExactlyArgs": "polecenie '{command_name}' wymaga dokładnie {expected} argumentów, a podano {actual}", "NonOneRemainingArgs": "polecenie '{command_name}' wymaga dokładnie jednego argumentu", "NonRangeArgs": "polecenie '{command_name}' wymaga od {lower} do {upper} argumentów włącznie, a podano {actual}", - "NonRangeArgsGreater": "the command '{command_name}' requires at least {lower} arguments, but {actual} were provided", + "NonRangeArgsGreater": "polecenie „{command_name}” wymaga co najmniej {lower} argumentów, ale {actual} zostały dostarczone", "NonZeroOrOneRemainingArgs": "polecenie '{command_name}' wymaga zera lub jednego argumentu", "NonZeroRemainingArgs": "polecenie '{command_name}' nie akceptuje żadnych dodatkowych argumentów", "NugetOutputNotCapturedBecauseInteractiveSpecified": "Polecenie NuGet nie powiodło się i dane wyjściowe nie zostały przechwycone, ponieważ określono parametr --interactive", @@ -932,7 +932,7 @@ "RemovingPackage": "Usuwanie {action_index}/{count} {spec}", "ResponseFileCode": "@response_file", "RestoredPackagesFromAWS": "Przywrócono następującą liczbę pakietów: {count} z platformy AWS w ciągu {elapsed}. Użyj opcji --debug, aby wyświetlić więcej szczegółów.", - "RestoredPackagesFromAZUPKG": "Restored {count} package(s) from Universal Packages in {elapsed}. Use --debug to see more details.", + "RestoredPackagesFromAZUPKG": "Przywrócono {count} pakietów z usługi Universal Packages w {elapsed}. Użyj opcji --debug, aby wyświetlić więcej szczegółów.", "RestoredPackagesFromCOS": "Przywrócono następującą liczbę pakietów: {count} z COS w ciągu {elapsed}. Użyj opcji --debug, aby wyświetlić więcej szczegółów.", "RestoredPackagesFromFiles": "Przywrócono następującą liczbę pakietów: {count} ze {path} w ciągu {elapsed}. Użyj opcji --debug, aby wyświetlić więcej szczegółów.", "RestoredPackagesFromGCS": "Przywrócono następującą liczbę pakietów: {count} z GCS w ciągu {elapsed}. Użyj opcji --debug, aby wyświetlić więcej szczegółów.", diff --git a/locales/messages.pt-BR.json b/locales/messages.pt-BR.json index f8d13b48a0..242b861c1e 100644 --- a/locales/messages.pt-BR.json +++ b/locales/messages.pt-BR.json @@ -584,7 +584,7 @@ "HelpBinaryCachingAwsConfig": "**Experimental: será alterado ou removido sem aviso prévio**\nAdiciona uma fonte AWS S3. Adiciona uma configuração AWS; atualmente dá suporte apenas ao parâmetro 'no-sign-request' que é equivalente ao parâmetro --no-sign-request da AWS CLI.", "HelpBinaryCachingAwsHeader": "Fontes de Serviços Web do Azure", "HelpBinaryCachingAzBlob": "**Experimental: será alterado ou removido sem aviso prévio**\nAdiciona uma fonte de Armazenamento de Blobs do Azure. Usa validação de assinatura de acesso compartilhado. deve incluir o caminho do contêiner. deve ser prefixado com um \"?\".", - "HelpBinaryCachingAzUpkg": "**Experimental: will change or be removed without warning**\nAdds a Universal Package Azure Artifacts source. Uses the Azure CLI (az artifacts) for uploads and downloads.", + "HelpBinaryCachingAzUpkg": "**Experimental: será alterado ou removido sem aviso**\nAdiciona uma fonte do Azure Artifacts de Pacote Universal. Usa a CLI do Azure (az artifacts) para uploads e downloads.", "HelpBinaryCachingCos": "**Experimental: será alterado ou removido sem aviso prévio**\nAdiciona uma fonte COS. Usa a CLI cos para uploads e downloads. deve incluir o esquema 'cos://' e ser sufixado com \"/\".", "HelpBinaryCachingDefaults": "Adiciona o local baseado em arquivo padrão. Com base nas configurações do sistema, o caminho padrão para armazenar binários é \"{path}\". Isso consulta %LOCALAPPDATA%/%APPDATA% no Windows e $XDG_CACHE_HOME ou $HOME em outras plataformas.", "HelpBinaryCachingDefaultsError": "Adiciona o local baseado em arquivo padrão.", @@ -688,7 +688,7 @@ "InvalidArgumentRequiresAbsolutePath": "argumento inválido: os argumentos de caminho da configuração binária '{binary_source}' para cadeias de caracteres de configuração binária devem ser absolutos", "InvalidArgumentRequiresBaseUrl": "argumento inválido: a configuração binária '{binary_source}' requer uma URL base {base_url} como o primeiro argumento", "InvalidArgumentRequiresBaseUrlAndToken": "argumento inválido: a configuração binária '{binary_source}' requer pelo menos uma URL base e um token SAS", - "InvalidArgumentRequiresFourOrFiveArguments": "invalid argument: binary config '{binary_source}' requires 4 or 5 arguments", + "InvalidArgumentRequiresFourOrFiveArguments": "argumento inválido: a configuração binária '{binary_source}' requer 4 ou 5 argumentos", "InvalidArgumentRequiresNoWildcards": "não é possível corrigir o caso do caminho do Windows para o caminho que contém curingas: {path}", "InvalidArgumentRequiresNoneArguments": "argumento inválido: a configuração binária '{binary_source}' não usa argumentos", "InvalidArgumentRequiresOneOrTwoArguments": "argumento inválido: a configuração binária '{binary_source}' requer 1 ou 2 argumentos", @@ -813,7 +813,7 @@ "NonExactlyArgs": "o comando “{command_name}” requer exatamente {expected} argumentos, mas {actual} foram fornecidos.", "NonOneRemainingArgs": "o comando “{command_name}” requer exatamente um argumento", "NonRangeArgs": "o comando “{command_name}” requer entre {lower} e {upper} argumentos, inclusive, mas {actual} foram fornecidos", - "NonRangeArgsGreater": "the command '{command_name}' requires at least {lower} arguments, but {actual} were provided", + "NonRangeArgsGreater": "o comando '{command_name}' requer pelo menos {lower} argumentos, mas {actual} foram fornecidos", "NonZeroOrOneRemainingArgs": "o comando “{command_name}” requer zero ou um argumento", "NonZeroRemainingArgs": "o comando “{command_name}” não aceita argumentos adicionais", "NugetOutputNotCapturedBecauseInteractiveSpecified": "Falha no comando NuGet e a saída não foi capturada porque --interactive foi especificado", @@ -932,7 +932,7 @@ "RemovingPackage": "Removendo {action_index}/{count} {spec}", "ResponseFileCode": "@response_file", "RestoredPackagesFromAWS": "{count} pacote(s) restaurado(s) da AWS em {elapsed}. Use --debug para ver mais detalhes.", - "RestoredPackagesFromAZUPKG": "Restored {count} package(s) from Universal Packages in {elapsed}. Use --debug to see more details.", + "RestoredPackagesFromAZUPKG": "{count} pacote(s) restaurado(s) do Universal Packages em {elapsed}. Use --debug para ver mais detalhes.", "RestoredPackagesFromCOS": "{count} pacote(s) restaurado(s) do COS em {elapsed}. Use --debug para ver mais detalhes.", "RestoredPackagesFromFiles": "{count} pacote(s) restaurado(s) de {path} em {elapsed}. Use --debug para ver mais detalhes.", "RestoredPackagesFromGCS": "{count} pacote(s) restaurado(s) do GCS em {elapsed}. Use --debug para ver mais detalhes.", diff --git a/locales/messages.ru.json b/locales/messages.ru.json index fe1b1df88b..ca96076089 100644 --- a/locales/messages.ru.json +++ b/locales/messages.ru.json @@ -584,7 +584,7 @@ "HelpBinaryCachingAwsConfig": "**Экспериментальная функция: будет изменена или удалена без предупреждения**\nДобавляет источник AWS S3. Добавляет конфигурацию AWS. Сейчас поддерживает только параметр \"no-sign-request\", который эквивалентен параметру --no-sign-request в AWS CLI.", "HelpBinaryCachingAwsHeader": "Источники веб-служб Azure", "HelpBinaryCachingAzBlob": "**Экспериментальная функция: будет изменена или удалена без предупреждения**\nДобавляет источник Хранилища BLOB-объектов Azure. Использует проверку подписанного URL-адреса. должен содержать путь к контейнеру. должен быть указан с префиксом \"?\".", - "HelpBinaryCachingAzUpkg": "**Experimental: will change or be removed without warning**\nAdds a Universal Package Azure Artifacts source. Uses the Azure CLI (az artifacts) for uploads and downloads.", + "HelpBinaryCachingAzUpkg": "**Экспериментальная функция: будет изменена или удалена без предупреждения**\nДобавляет источник Universal Package Azure Artifacts. Использует Azure CLI (az artifacts) для отправки и скачивания.", "HelpBinaryCachingCos": "**Экспериментальная функция: будет изменена или удалена без предупреждения**\nДобавляет источник COS. Использует cos CLI для отправки и скачивания. должен содержать схему \"cos://\" и иметь суффикс \"/\".", "HelpBinaryCachingDefaults": "Добавляет расположение на основе файла по умолчанию. В соответствии с настройками вашей системы путь по умолчанию для хранения двоичных файлов — \"{path}\". Для этого используется %LOCALAPPDATA%/%APPDATA% в Windows и $XDG_CACHE_HOME или $HOME на других платформах.", "HelpBinaryCachingDefaultsError": "Добавляет расположение на основе файлов по умолчанию.", @@ -688,7 +688,7 @@ "InvalidArgumentRequiresAbsolutePath": "недопустимый аргумент: аргументы пути двоичной config \"{binary_source}\" для двоичных строк config должны быть абсолютными", "InvalidArgumentRequiresBaseUrl": "недопустимый аргумент: для двоичной config \"{binary_source}\" в качестве первого аргумента требуется базовый URL-адрес {base_url}", "InvalidArgumentRequiresBaseUrlAndToken": "недопустимый аргумент: для двоичной config \"{binary_source}\" требуется по крайней мере базовый URL-адрес и маркер SAS", - "InvalidArgumentRequiresFourOrFiveArguments": "invalid argument: binary config '{binary_source}' requires 4 or 5 arguments", + "InvalidArgumentRequiresFourOrFiveArguments": "недопустимый аргумент: для двоичной конфигурации \"{binary_source}\" требуется 4 или 5 аргументов", "InvalidArgumentRequiresNoWildcards": "не удается исправить регистр пути Windows для пути, содержащего подстановочные знаки: {path}", "InvalidArgumentRequiresNoneArguments": "недопустимый аргумент: двоичная config \"{binary_source}\" не принимает аргументы", "InvalidArgumentRequiresOneOrTwoArguments": "недопустимый аргумент: для двоичной config \"{binary_source}\" требуется 1 или 2 аргумента", @@ -813,7 +813,7 @@ "NonExactlyArgs": "команда \"{command_name}\" требует ровно {expected} аргументов, но указано {actual}", "NonOneRemainingArgs": "команда \"{command_name}\" требует ровно один аргумент", "NonRangeArgs": "команда \"{command_name}\" требует от {lower} до {upper} аргументов включительно, но указано {actual}", - "NonRangeArgsGreater": "the command '{command_name}' requires at least {lower} arguments, but {actual} were provided", + "NonRangeArgsGreater": "команда \"{command_name}\" требует не менее {lower} аргументов, но указано {actual}", "NonZeroOrOneRemainingArgs": "команда \"{command_name}\" требует ноль аргументов или один аргумент", "NonZeroRemainingArgs": "команда \"{command_name}\" не принимает дополнительные аргументы", "NugetOutputNotCapturedBecauseInteractiveSpecified": "Не удалось выполнить команду NuGet, и выходные данные не записаны, поскольку указан параметр --interactive", @@ -932,7 +932,7 @@ "RemovingPackage": "Выполняется удаление {action_index}/{count} {spec}", "ResponseFileCode": "@response_file", "RestoredPackagesFromAWS": "Восстановлено несколько ({count}) пакетов из AWS за {elapsed}. Используйте --debug, чтобы увидеть больше деталей.", - "RestoredPackagesFromAZUPKG": "Restored {count} package(s) from Universal Packages in {elapsed}. Use --debug to see more details.", + "RestoredPackagesFromAZUPKG": "Восстановлено несколько ({count}) пакетов из Universal Packages за {elapsed}. Используйте --debug, чтобы увидеть больше деталей.", "RestoredPackagesFromCOS": "Восстановлено несколько ({count}) пакетов из COS за {elapsed}. Используйте --debug, чтобы увидеть больше деталей.", "RestoredPackagesFromFiles": "Восстановлено несколько ({count}) пакетов из {path} за {elapsed}. Используйте --debug, чтобы увидеть больше деталей.", "RestoredPackagesFromGCS": "Восстановлено несколько ({count}) пакетов из GCS за {elapsed}. Используйте --debug, чтобы увидеть больше деталей.", diff --git a/locales/messages.tr.json b/locales/messages.tr.json index 64645c1845..87829a8d5f 100644 --- a/locales/messages.tr.json +++ b/locales/messages.tr.json @@ -584,7 +584,7 @@ "HelpBinaryCachingAwsConfig": "**Deneysel: değiştirilecek veya uyarılmadan kaldırılacaktır**\nBir AWS S3 kaynağı ekler. Bir AWS yapılandırması ekler; şu anda yalnızca AWS CLI'nin --no-sign-request parametresine eşdeğer olan 'no-sign-request' parametresini desteklemektedir.", "HelpBinaryCachingAwsHeader": "Azure Web Hizmetleri kaynakları", "HelpBinaryCachingAzBlob": "**Deneysel: değiştirilecek veya uyarılmadan kaldırılacaktır**\nBir Azure Blob Depolama kaynağı ekler. Paylaşılan Erişim İmzası doğrulamasını kullanır. kapsayıcı yolunu içermelidir. önüne \"?\" eklenmelidir.", - "HelpBinaryCachingAzUpkg": "**Experimental: will change or be removed without warning**\nAdds a Universal Package Azure Artifacts source. Uses the Azure CLI (az artifacts) for uploads and downloads.", + "HelpBinaryCachingAzUpkg": "**Deneysel: Uyarı olmadan değiştirilecek veya kaldırılacak**\nBir Evrensel Paket Azure Artifacts ekler. Karşıya yüklemeler ve indirmeler için Azure CLI (az artifacts) kullanır.", "HelpBinaryCachingCos": "**Deneysel: değiştirilecek veya uyarılmadan kaldırılacaktır**\nBir COS kaynağı ekler. Yüklemeler ve indirmeler için cos CLI'yi kullanır. , 'cos://' şemasını içermeli ve sonuna \"/\" eklenmelidir.", "HelpBinaryCachingDefaults": "Varsayılan dosya tabanlı konumu ekler. Sistem ayarlarınıza bağlı olarak, ikili dosyaları depolamak için varsayılan yol \"{yol}\" şeklindedir. Bu, Windows'ta %LOCALAPPDATA%/%APPDATA% ve diğer platformlarda $XDG_CACHE_HOME veya $HOME'a başvurur.", "HelpBinaryCachingDefaultsError": "Varsayılan dosya tabanlı konumu ekler.", @@ -688,7 +688,7 @@ "InvalidArgumentRequiresAbsolutePath": "geçersiz bağımsız değişken: ikili yapılandırma “{binary_source}” ikili yapılandırma dizeleri için yol bağımsız değişkenleri mutlak olmalıdır", "InvalidArgumentRequiresBaseUrl": "geçersiz bağımsız değişken: ikili yapılandırma “{binary_source}”, ilk bağımsız değişken olarak bir {base_url} temel url'sini gerektirir", "InvalidArgumentRequiresBaseUrlAndToken": "geçersiz bağımsız değişken: ikili yapılandırma “{binary_source}” en az bir temel url ve bir SAS belirteci gerektirir", - "InvalidArgumentRequiresFourOrFiveArguments": "invalid argument: binary config '{binary_source}' requires 4 or 5 arguments", + "InvalidArgumentRequiresFourOrFiveArguments": "geçersiz bağımsız değişken: ikili yapılandırma “{binary_source}” 4 veya 5 bağımsız değişken gerektirir", "InvalidArgumentRequiresNoWildcards": "joker karakterler içeren yol için Windows yol durumu düzeltilemedi: {path}", "InvalidArgumentRequiresNoneArguments": "geçersiz bağımsız değişken: ikili yapılandırma “{binary_source}” bağımsız değişken almıyor", "InvalidArgumentRequiresOneOrTwoArguments": "geçersiz bağımsız değişken: ikili yapılandırma “{binary_source}” 1 veya 2 bağımsız değişken gerektiriyor", @@ -813,7 +813,7 @@ "NonExactlyArgs": "'{command_name}' komutu tam olarak {expected} bağımsız değişken gerektirir ancak {actual} bağımsız değişken sağlandı", "NonOneRemainingArgs": "'{command_name}' komutu, tam olarak bir bağımsız değişken gerektirir", "NonRangeArgs": "'{command_name}' komutu {lower} ile {upper} bağımsız değişkeni (bunlar dahil) arasında olmalıdır, ancak {actual} sağlandı", - "NonRangeArgsGreater": "the command '{command_name}' requires at least {lower} arguments, but {actual} were provided", + "NonRangeArgsGreater": "“{command_name}” komutu en az {lower} bağımsız değişken gerektirir ancak {actual} bağımsız değişken sağlandı", "NonZeroOrOneRemainingArgs": "'{command_name}' komutu, sıfır veya bir bağımsız değişken gerektirir", "NonZeroRemainingArgs": "'{command_name}' komutu başka bağımsız değişken kabul etmez", "NugetOutputNotCapturedBecauseInteractiveSpecified": "NuGet komutu başarısız oldu ve --interactive belirtildiğinden çıkış yakalanmadı", @@ -932,7 +932,7 @@ "RemovingPackage": "{action_index}/{count} {spec} kaldırılıyor", "ResponseFileCode": "@response_file", "RestoredPackagesFromAWS": "{elapsed} içinde AWS kaynağından {count} paket geri yüklendi. Daha fazla ayrıntı için --debug kullanın.", - "RestoredPackagesFromAZUPKG": "Restored {count} package(s) from Universal Packages in {elapsed}. Use --debug to see more details.", + "RestoredPackagesFromAZUPKG": "{elapsed} içinde Universal Packages’dan {count} paket geri yüklendi. Daha fazla ayrıntı için --debug komutunu kullanın.", "RestoredPackagesFromCOS": "{elapsed} içinde COS kaynağından {count} paket geri yüklendi. Daha fazla ayrıntı için --debug kullanın.", "RestoredPackagesFromFiles": "{elapsed} içinde {path} kaynağından {count} paket geri yüklendi. Daha fazla ayrıntı için --debug kullanın.", "RestoredPackagesFromGCS": "{elapsed} içinde GCS kaynağından {count} paket geri yüklendi. Daha fazla ayrıntı için --debug kullanın.", diff --git a/locales/messages.zh-Hans.json b/locales/messages.zh-Hans.json index 31ba80039e..d3d8b7301d 100644 --- a/locales/messages.zh-Hans.json +++ b/locales/messages.zh-Hans.json @@ -584,7 +584,7 @@ "HelpBinaryCachingAwsConfig": "**试验性: 将在不发出警告的情况下更改或删除**\n添加 AWS S3 源。添加 AWS 配置; 目前仅支持与 AWS CLI 的 --no-sign-request 参数等效的 \"no-sign-request\" 参数。", "HelpBinaryCachingAwsHeader": "Azure Web 服务源", "HelpBinaryCachingAzBlob": "**试验性: 将在不发出警告的情况下更改或删除**\n添加 Azure Blob 存储源。使用共享访问签名验证。应包含容器路径。必须以 \"?\" 为前缀。", - "HelpBinaryCachingAzUpkg": "**Experimental: will change or be removed without warning**\nAdds a Universal Package Azure Artifacts source. Uses the Azure CLI (az artifacts) for uploads and downloads.", + "HelpBinaryCachingAzUpkg": "**实验性:将更改或删除而不发出警告**\n添加通用包 Azure Artifacts 源。使用 Azure CLI (Az 项目) 进行上传和下载。", "HelpBinaryCachingCos": "**试验性: 将在不发出警告的情况下更改或删除**\n添加 COS 源。使用 cos CLI 进行上传和下载。应包括方案 \"cos://\",后缀为 \"/\"。", "HelpBinaryCachingDefaults": "添加默认的基于文件的位置。根据系统设置,存储二进制文件的默认路径为 \"{path}\"。这会在 Windows 上咨询 %LOCALAPPDATA%/%APPDATA%,在其他平台上咨询 $XDG_CACHE_HOME 或 $HOME。", "HelpBinaryCachingDefaultsError": "添加默认的基于文件的位置。", @@ -688,7 +688,7 @@ "InvalidArgumentRequiresAbsolutePath": "参数无效: 二进制配置字符串的二进制配置“{binary_source}”路径参数必须是绝对参数", "InvalidArgumentRequiresBaseUrl": "参数无效: 二进制配置“{binary_source}”要求将 {base_url} 基 URL 作为第一个参数", "InvalidArgumentRequiresBaseUrlAndToken": "参数无效: 二进制配置“{binary_source}”至少需要一个基 URL 和一个 SAS 令牌", - "InvalidArgumentRequiresFourOrFiveArguments": "invalid argument: binary config '{binary_source}' requires 4 or 5 arguments", + "InvalidArgumentRequiresFourOrFiveArguments": "参数无效: 二进制配置“{binary_source}”需要 4 或 5 个参数", "InvalidArgumentRequiresNoWildcards": "无法修复包含通配符的路径的 Windows 路径大小写: {path}", "InvalidArgumentRequiresNoneArguments": "参数无效: 二进制配置“{binary_source}”不接受参数", "InvalidArgumentRequiresOneOrTwoArguments": "参数无效: 二进制配置“{binary_source}”需要 1 或 2 个参数", @@ -813,7 +813,7 @@ "NonExactlyArgs": "命令“{command_name}”只需要 {expected} 个参数,但提供了 {actual} 个", "NonOneRemainingArgs": "命令“{command_name}”只需要一个参数", "NonRangeArgs": "命令“{command_name}”需要介于 {lower} 和 {upper} 个参数之间(含),但提供了 {actual} 个", - "NonRangeArgsGreater": "the command '{command_name}' requires at least {lower} arguments, but {actual} were provided", + "NonRangeArgsGreater": "命令“{command_name}”只需要 {lower} 个参数,但提供了 {actual} 个", "NonZeroOrOneRemainingArgs": "命令“{command_name}”需要零个或一个参数", "NonZeroRemainingArgs": "命令“{command_name}”不接受任何其他参数", "NugetOutputNotCapturedBecauseInteractiveSpecified": "NuGet 命令失败,未捕获输出,因为指定为交互式的", @@ -932,7 +932,7 @@ "RemovingPackage": "正在删除 {action_index}/{count} 个 {spec}", "ResponseFileCode": "@response_file", "RestoredPackagesFromAWS": "{elapsed} 后从 AWS 还原了 {count} 个包。使用 --debug 了解更多详细信息。", - "RestoredPackagesFromAZUPKG": "Restored {count} package(s) from Universal Packages in {elapsed}. Use --debug to see more details.", + "RestoredPackagesFromAZUPKG": "{elapsed}内从 Universal Packages 还原了 {count} 个包。使用 --debug 了解更多详细信息。", "RestoredPackagesFromCOS": "{elapsed} 后从 COS 还原了 {count} 个包。使用 --debug 了解更多详细信息。", "RestoredPackagesFromFiles": "{elapsed} 后从 {path} 还原了 {count} 个包。使用 --debug 了解更多详细信息。", "RestoredPackagesFromGCS": "{elapsed} 后从 GCS 还原了 {count} 个包。使用 --debug 了解更多详细信息。", diff --git a/locales/messages.zh-Hant.json b/locales/messages.zh-Hant.json index 8688c06a90..c1a79b0454 100644 --- a/locales/messages.zh-Hant.json +++ b/locales/messages.zh-Hant.json @@ -584,7 +584,7 @@ "HelpBinaryCachingAwsConfig": "**實驗性: 將會變更或移除而不顯示警告**\n新增 AWS S3 來源。新增 AWS 設定; 目前只支援與 AWS CLI 的 --no-sign-request 參數相等的 'no-sign-request' 參數。", "HelpBinaryCachingAwsHeader": "Azure Web 服務來源", "HelpBinaryCachingAzBlob": "**實驗性: 將會變更或移除而不顯示警告**\n新增 Azure Blob 儲存體來源。使用共用存取簽章驗證。應包含容器路徑。必須以「?」作為前置詞。", - "HelpBinaryCachingAzUpkg": "**Experimental: will change or be removed without warning**\nAdds a Universal Package Azure Artifacts source. Uses the Azure CLI (az artifacts) for uploads and downloads.", + "HelpBinaryCachingAzUpkg": "**實驗性: 將會變更或移除而不顯示警告**\n新增通用套件 Azure Artifacts 來源。使用 Azure CLI (Az 成品) 上傳和下載。", "HelpBinaryCachingCos": "**實驗性: 將會變更或移除而不顯示警告**\n新增 COS 來源。使用 cos CLI 上傳和下載。應包含配置 'cos://',且尾碼為「/」。", "HelpBinaryCachingDefaults": "新增預設檔案型位置。根據您的系統設定,儲存二進位檔的預設路徑是 \"{path}\"。這會在 Windows 上諮詢 %LOCALAPPDATA%/%APPDATA% 或在其他平台上諮詢 $XDG_CACHE_HOME 或 $HOME。", "HelpBinaryCachingDefaultsError": "新增預設的檔案式位置。", @@ -688,7 +688,7 @@ "InvalidArgumentRequiresAbsolutePath": "引數無效: 二進位 config 字串的二進位 config '{binary_source}' 路徑引數必須是絕對", "InvalidArgumentRequiresBaseUrl": "引數無效: 二進位 config '{binary_source}' 需要 {base_url} 基底 URL 做為第一個引數", "InvalidArgumentRequiresBaseUrlAndToken": "引數無效: 二進位 config '{binary_source}' 至少需要基底 URL 和 SAS 權杖", - "InvalidArgumentRequiresFourOrFiveArguments": "invalid argument: binary config '{binary_source}' requires 4 or 5 arguments", + "InvalidArgumentRequiresFourOrFiveArguments": "引數無效: 二進位 config '{binary_source}' 需要 4 或 5 個引數", "InvalidArgumentRequiresNoWildcards": "無法修正以下包含萬用字元之路徑的 Windows 路徑案例: {path}", "InvalidArgumentRequiresNoneArguments": "引數無效: 二進位設定 '{binary_source}' 不接受引數", "InvalidArgumentRequiresOneOrTwoArguments": "引數無效: 二進位 config '{binary_source}' 需要 1 或 2 個引數", @@ -813,7 +813,7 @@ "NonExactlyArgs": "命令 '{command_name}' 需要只有 '{expected}' 個引數,但提供了 '{actual}'。", "NonOneRemainingArgs": "命令 '{command_name}' 需要只有 1 個引數", "NonRangeArgs": "命令 '{command_name}' 需要是 {lower} 和 {upper} (含) 個之間的引數,但提供了 {actual}", - "NonRangeArgsGreater": "the command '{command_name}' requires at least {lower} arguments, but {actual} were provided", + "NonRangeArgsGreater": "命令 '{command_name}' 需要只有 '{expected}' 個引數,但提供了 '{actual}'。", "NonZeroOrOneRemainingArgs": "命令 '{command_name}' 需要 0 個或 1 個引數", "NonZeroRemainingArgs": "命令 '{command_name}' 不接受任何其他引數", "NugetOutputNotCapturedBecauseInteractiveSpecified": "NuGet 命令失敗且未擷取輸出,因為已指定 --interactive", @@ -932,7 +932,7 @@ "RemovingPackage": "正在移除 {action_index}/{count} {spec}", "ResponseFileCode": "@response_file", "RestoredPackagesFromAWS": "已從 {elapsed} 中的 AWS 還原 ({count}) 個封裝。使用 --debug 以查看更多詳細資料。", - "RestoredPackagesFromAZUPKG": "Restored {count} package(s) from Universal Packages in {elapsed}. Use --debug to see more details.", + "RestoredPackagesFromAZUPKG": "已從 {elapsed} 中的 Universal Packages 還原 {count} 個套件。使用 --debug 以查看更多詳細資料。", "RestoredPackagesFromCOS": "已從 {elapsed} 中的 COS 還原 ({count}) 個封裝。使用 --debug 以查看更多詳細資料。", "RestoredPackagesFromFiles": "已從 {elapsed} 中的 {path} 還原 ({count}) 個封裝。使用 --debug 以查看更多詳細資料。", "RestoredPackagesFromGCS": "已從 {elapsed} 中的 GCS 還原 ({count}) 個封裝。使用 --debug 以查看更多詳細資料。", From 18859ec098d18723f072c4fe81a42efdc1a4336f Mon Sep 17 00:00:00 2001 From: "CSIGS@microsoft.com" Date: Wed, 23 Oct 2024 11:33:17 -0700 Subject: [PATCH 38/39] Juno: check in to juno/hb_cb3056d7-d122-4ef4-8657-e36080a7f8c6_20241023125053437. (#1524) --- src/localization/ko/messages.json.lcl | 36 +++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/localization/ko/messages.json.lcl b/src/localization/ko/messages.json.lcl index 860ec7ef26..efaf6c11a0 100644 --- a/src/localization/ko/messages.json.lcl +++ b/src/localization/ko/messages.json.lcl @@ -6169,6 +6169,15 @@ + + + + + + + + + should include the scheme 'cos://' and be suffixed with a "/".]]> @@ -7288,6 +7297,15 @@ + + + + + + + + + @@ -8533,6 +8551,15 @@ + + + + + + + + + @@ -9799,6 +9826,15 @@ + + + + + + + + + From 76ca355da528d860e150916e12fae32758f05216 Mon Sep 17 00:00:00 2001 From: Billy O'Neal Date: Wed, 23 Oct 2024 11:35:54 -0700 Subject: [PATCH 39/39] Allow constexpr optionals. (#1509) Extracted from https://github.com/microsoft/vcpkg-tool/pull/1490/ as it's unclear when that change will land. --- include/vcpkg/base/optional.h | 209 ++++++++++++++++++++-------------- src/vcpkg-test/optional.cpp | 4 + 2 files changed, 129 insertions(+), 84 deletions(-) diff --git a/include/vcpkg/base/optional.h b/include/vcpkg/base/optional.h index 12c192957c..c18619deb9 100644 --- a/include/vcpkg/base/optional.h +++ b/include/vcpkg/base/optional.h @@ -23,205 +23,246 @@ namespace vcpkg namespace details { + struct EngageTag + { + }; + + template> + struct OptionalStorageDtor + { + bool m_is_present; + union + { + char m_inactive; + T m_t; + }; + + constexpr OptionalStorageDtor() : m_is_present(false), m_inactive() { } + template + constexpr OptionalStorageDtor(EngageTag, + Args&&... args) noexcept(std::is_nothrow_constructible_v) + : m_is_present(true), m_t(std::forward(args)...) + { + } + }; + + template + struct OptionalStorageDtor + { + bool m_is_present; + union + { + char m_inactive; + T m_t; + }; + + constexpr OptionalStorageDtor() : m_is_present(false), m_inactive() { } + template + constexpr OptionalStorageDtor(EngageTag, + Args&&... args) noexcept(std::is_nothrow_constructible_v) + : m_is_present(true), m_t(std::forward(args)...) + { + } + + ~OptionalStorageDtor() + { + if (m_is_present) + { + m_t.~T(); + } + } + }; + template> - struct OptionalStorage + struct OptionalStorage : OptionalStorageDtor { - constexpr OptionalStorage() noexcept : m_is_present(false), m_inactive() { } + OptionalStorage() = default; constexpr OptionalStorage(const T& t) noexcept(std::is_nothrow_copy_constructible_v) - : m_is_present(true), m_t(t) + : OptionalStorageDtor(EngageTag{}, t) { } constexpr OptionalStorage(T&& t) noexcept(std::is_nothrow_move_constructible_v) - : m_is_present(true), m_t(std::move(t)) + : OptionalStorageDtor(EngageTag{}, std::move(t)) { } template>> explicit OptionalStorage(Optional&& t) noexcept(std::is_nothrow_constructible_v) - : m_is_present(false), m_inactive() + : OptionalStorageDtor() { if (auto p = t.get()) { - m_is_present = true; - new (&m_t) T(std::move(*p)); + this->m_is_present = true; + new (&this->m_t) T(std::move(*p)); } } template explicit OptionalStorage(const Optional& t) noexcept(std::is_nothrow_constructible_v) - : m_is_present(false), m_inactive() + : OptionalStorageDtor() { if (auto p = t.get()) { - m_is_present = true; - new (&m_t) T(*p); + this->m_is_present = true; + new (&this->m_t) T(*p); } } - ~OptionalStorage() - { - if (m_is_present) m_t.~T(); - } - OptionalStorage(const OptionalStorage& o) noexcept(std::is_nothrow_copy_constructible_v) - : m_is_present(o.m_is_present), m_inactive() + : OptionalStorageDtor() { - if (m_is_present) new (&m_t) T(o.m_t); + if (o.m_is_present) + { + this->m_is_present = true; + new (&this->m_t) T(o.m_t); + } } OptionalStorage(OptionalStorage&& o) noexcept(std::is_nothrow_move_constructible_v) - : m_is_present(o.m_is_present), m_inactive() + : OptionalStorageDtor() { - if (m_is_present) + if (o.m_is_present) { - new (&m_t) T(std::move(o.m_t)); + this->m_is_present = true; + new (&this->m_t) T(std::move(o.m_t)); } } 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) + if (this->m_is_present && o.m_is_present) { - m_t = o.m_t; + this->m_t = o.m_t; } - else if (!m_is_present && o.m_is_present) + else if (!this->m_is_present && o.m_is_present) { - new (&m_t) T(o.m_t); - m_is_present = true; + new (&this->m_t) T(o.m_t); + this->m_is_present = true; } - else if (m_is_present && !o.m_is_present) + else if (this->m_is_present && !o.m_is_present) { destroy(); } + return *this; } OptionalStorage& operator=(OptionalStorage&& o) noexcept // enforces termination { - if (m_is_present && o.m_is_present) + if (this->m_is_present && o.m_is_present) { - m_t = std::move(o.m_t); + this->m_t = std::move(o.m_t); } - else if (!m_is_present && o.m_is_present) + else if (!this->m_is_present && o.m_is_present) { - new (&m_t) T(std::move(o.m_t)); - m_is_present = true; + new (&this->m_t) T(std::move(o.m_t)); + this->m_is_present = true; } - else if (m_is_present && !o.m_is_present) + else if (this->m_is_present && !o.m_is_present) { destroy(); } return *this; } - constexpr bool has_value() const noexcept { return m_is_present; } + constexpr bool has_value() const noexcept { return this->m_is_present; } const T& value() const noexcept { return this->m_t; } T& value() noexcept { return this->m_t; } - const T* get() const& noexcept { return m_is_present ? &m_t : nullptr; } - T* get() & noexcept { return m_is_present ? &m_t : nullptr; } + const T* get() const& noexcept { return this->m_is_present ? &this->m_t : nullptr; } + T* get() & noexcept { return this->m_is_present ? &this->m_t : nullptr; } const T* get() const&& = delete; T* get() && = delete; void destroy() noexcept // enforces termination { - m_is_present = false; - m_t.~T(); - m_inactive = '\0'; + this->m_is_present = false; + this->m_t.~T(); + this->m_inactive = '\0'; } template T& emplace(Args&&... args) noexcept(std::is_nothrow_constructible_v) { - if (m_is_present) destroy(); - new (&m_t) T(static_cast(args)...); - m_is_present = true; - return m_t; + if (this->m_is_present) destroy(); + new (&this->m_t) T(static_cast(args)...); + this->m_is_present = true; + return this->m_t; } - - private: - bool m_is_present; - union - { - char m_inactive; - T m_t; - }; }; template - struct OptionalStorage + struct OptionalStorage : OptionalStorageDtor { - constexpr OptionalStorage() noexcept : m_is_present(false), m_inactive() { } + OptionalStorage() = default; constexpr OptionalStorage(T&& t) noexcept(std::is_nothrow_move_constructible_v) - : m_is_present(true), m_t(std::move(t)) + : OptionalStorageDtor(EngageTag{}, std::move(t)) { } - - ~OptionalStorage() + template>> + explicit OptionalStorage(Optional&& t) noexcept(std::is_nothrow_constructible_v) + : OptionalStorageDtor() { - if (m_is_present) m_t.~T(); + if (auto p = t.get()) + { + this->m_is_present = true; + new (&this->m_t) T(std::move(*p)); + } } - OptionalStorage(OptionalStorage&& o) noexcept(std::is_nothrow_move_constructible_v) - : m_is_present(o.m_is_present), m_inactive() + : OptionalStorageDtor() { - if (m_is_present) + if (o.m_is_present) { - new (&m_t) T(std::move(o.m_t)); + this->m_is_present = true; + new (&this->m_t) T(std::move(o.m_t)); } } OptionalStorage& operator=(OptionalStorage&& o) noexcept // enforces termination { - if (m_is_present && o.m_is_present) + if (this->m_is_present && o.m_is_present) { - m_t = std::move(o.m_t); + this->m_t = std::move(o.m_t); } - else if (!m_is_present && o.m_is_present) + else if (!this->m_is_present && o.m_is_present) { - m_is_present = true; - new (&m_t) T(std::move(o.m_t)); + this->m_is_present = true; + new (&this->m_t) T(std::move(o.m_t)); } - else if (m_is_present && !o.m_is_present) + else if (this->m_is_present && !o.m_is_present) { destroy(); } + return *this; } - constexpr bool has_value() const noexcept { return m_is_present; } + constexpr bool has_value() const noexcept { return this->m_is_present; } const T& value() const noexcept { return this->m_t; } T& value() noexcept { return this->m_t; } - const T* get() const& noexcept { return m_is_present ? &m_t : nullptr; } - T* get() & noexcept { return m_is_present ? &m_t : nullptr; } + const T* get() const& noexcept { return this->m_is_present ? &this->m_t : nullptr; } + T* get() & noexcept { return this->m_is_present ? &this->m_t : nullptr; } const T* get() const&& = delete; T* get() && = delete; template T& emplace(Args&&... args) noexcept(std::is_nothrow_constructible_v) { - if (m_is_present) destroy(); - new (&m_t) T(static_cast(args)...); - m_is_present = true; - return m_t; + if (this->m_is_present) destroy(); + new (&this->m_t) T(static_cast(args)...); + this->m_is_present = true; + return this->m_t; } void destroy() noexcept { - m_is_present = false; - m_t.~T(); - m_inactive = '\0'; + this->m_is_present = false; + this->m_t.~T(); + this->m_inactive = '\0'; } - - private: - bool m_is_present; - union - { - char m_inactive; - T m_t; - }; }; template diff --git a/src/vcpkg-test/optional.cpp b/src/vcpkg-test/optional.cpp index 88c3211001..2bb85b642d 100644 --- a/src/vcpkg-test/optional.cpp +++ b/src/vcpkg-test/optional.cpp @@ -65,6 +65,7 @@ TEST_CASE ("value conversion", "[optional]") Optional j = 1; Optional i = j; + (void)i; Optional cstr = "hello, world!"; Optional cppstr = cstr; @@ -89,9 +90,12 @@ TEST_CASE ("optional.map", "[optional]") const Optional> move_only; Optional m = move_only.map([](auto&& p) { return p.get(); }); + (void)m; Optional> n = move_only.map([](auto&& p) -> Optional { return p ? Optional{p.get()} : nullopt; }); + (void)n; Optional o = move_only.map([](auto&&) { return nullopt; }); + (void)o; Optional five = 5;