Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
d9cbe4a
add and link libcurl
Neumann-A Jun 10, 2024
d6aafe4
Replace curl executable with libcurl API calls
vicroms Apr 22, 2025
f5a89c7
Fix FindLibCURL for builds wihthout network access
vicroms Sep 2, 2025
5fc4d4e
Merge branch 'main' of https://github.com/microsoft/vcpkg-tool into l…
vicroms Oct 9, 2025
7b40572
Merge branch 'main' of https://github.com/microsoft/vcpkg-tool into l…
vicroms Oct 9, 2025
e7f40e1
Remove winHttp
vicroms Oct 20, 2025
da2529c
Restore progress function
vicroms Oct 20, 2025
2865022
Handle non-dl transfer progress
vicroms Oct 20, 2025
60b90a5
Merge branch 'main' of github.com:Microsoft/vcpkg-tool into link-libcurl
vicroms Oct 22, 2025
dfe1d47
Remove unused WinHttp code
vicroms Oct 23, 2025
8e0bd40
Merge branch 'main' of github.com:Microsoft/vcpkg-tool into link-libcurl
vicroms Oct 23, 2025
245480c
Format and regenerate messages
vicroms Oct 23, 2025
b280137
Fix exepected console output of end-to-end test for multiple authorit…
vicroms Oct 23, 2025
03f06ef
Remove unused parameter
vicroms Oct 23, 2025
1517ce7
Remove unused parameters 2
vicroms Oct 23, 2025
a12a086
Format and regenerate messages
vicroms Oct 23, 2025
293fe4e
Fix curl info read loop
vicroms Oct 24, 2025
e22b475
Fix warnings and remove unused messages
vicroms Oct 24, 2025
022d2b8
Update src/vcpkg/binarycaching.cpp
vicroms Oct 28, 2025
bc7816e
Delete CurlRequestPrivateData (#2)
BillyONeal Oct 30, 2025
4433017
PR comments WIP
vicroms Nov 5, 2025
1daf219
PR comments WIP
vicroms Nov 5, 2025
622f98a
Format and regenerate messages
vicroms Nov 5, 2025
06cb1c3
Merge branch 'main' of github.com:Microsoft/vcpkg-tool into link-libcurl
vicroms Nov 5, 2025
f7172f4
Fix download retry
vicroms Nov 6, 2025
2577dee
More review comments
vicroms Nov 6, 2025
d76569b
Handle response code from file:// downloads/
vicroms Nov 6, 2025
5a2cd88
Update end-to-end test expected output
vicroms Nov 6, 2025
c50352d
Fix download progress
vicroms Nov 6, 2025
e8f878d
Add curl license and notices
vicroms Nov 7, 2025
60dd34d
Fix call to upload metrics
vicroms Nov 7, 2025
9cc1edc
Fix expected output comparison with newer versions of libcurl
vicroms Nov 7, 2025
87b7169
Fix expected output comparison with newer versions of libcurl
vicroms Nov 7, 2025
8e2018b
Merge branch 'link-libcurl' of github.com:vicroms/vcpkg-tool into lin…
vicroms Nov 7, 2025
1c53d79
Apply suggestions from code review
vicroms Nov 10, 2025
fd741eb
More PR comments
vicroms Nov 10, 2025
a9c5782
Disable curl examples and fix out-of-bounds access in retry loop
vicroms Nov 11, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,11 @@ jobs:
uses: github/codeql-action/init@v3
with:
languages: javascript-typescript, c-cpp
- name: Install system libcurl
if: matrix.preset == 'linux-arm64-ci' || matrix.preset == 'linux-ci'
run: |
sudo apt update
sudo apt install -y libcurl4-openssl-dev
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems wrong that we care about which libcurl flavor we get?

Comment thread
BillyONeal marked this conversation as resolved.
- name: Configure and Build
if: matrix.preset != 'windows-ci'
run: |
Expand Down
3 changes: 3 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,7 @@ set(TEST_SCRIPT_ASSET_CACHE_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/test-script

find_package(fmt REQUIRED)
find_package(CMakeRC REQUIRED)
find_package(LibCURL REQUIRED)

# === Target: locale-resources ===

Expand Down Expand Up @@ -229,6 +230,8 @@ target_compile_definitions(vcpkglib PUBLIC
_FILE_OFFSET_BITS=64
)

target_link_libraries(vcpkglib PUBLIC CURL::libcurl)

if(VCPKG_STANDALONE_BUNDLE_SHA)
target_compile_definitions(vcpkglib PUBLIC
"VCPKG_STANDALONE_BUNDLE_SHA=${VCPKG_STANDALONE_BUNDLE_SHA}"
Expand Down
21 changes: 9 additions & 12 deletions azure-pipelines/end-to-end-tests-dir/asset-caching.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ Throw-IfNotFailed
$expected = @(
"A suitable version of cmake was not found \(required v[0-9.]+\)\.",
"Trying to download cmake-[0-9.]+-[^.]+\.(zip|tar\.gz) using asset cache file://$assetCacheRegex/[0-9a-z]+",
"error: curl: \(37\) Couldn't open file [^\n]+",
"error: curl operation failed with error code 37 \(Couldn't read a file:// file\)\.",
"error: there were no asset cache hits, and x-block-origin blocks trying the authoritative source https://github\.com/Kitware/CMake/releases/download/[^ ]+",
"note: If you are using a proxy, please ensure your proxy settings are correct\.",
"Possible causes are:",
Expand Down Expand Up @@ -105,7 +105,7 @@ if (-not ($actual -match $expected)) {
Refresh-TestRoot
$expected = @(
"^Downloading https://localhost:1234/foobar\.html -> example3\.html",
"error: curl: \(7\) Failed to connect to localhost port 1234( after \d+ ms)?: ((Could not|Couldn't) connect to server|Connection refused)",
"error: curl operation failed with error code 7 \(Couldn't connect to server\)\.",
"note: If you are using a proxy, please ensure your proxy settings are correct\.",
"Possible causes are:",
"1\. You are actually using an HTTP proxy, but setting HTTPS_PROXY variable to ``https//address:port``\.",
Expand All @@ -129,8 +129,8 @@ Refresh-TestRoot
$expected = @(
"^Downloading example3\.html, trying https://localhost:1234/foobar\.html",
"Trying https://localhost:1235/baz\.html",
"error: curl: \(7\) Failed to connect to localhost port 1234( after \d+ ms)?: ((Could not|Couldn't) connect to server|Connection refused)",
"error: curl: \(7\) Failed to connect to localhost port 1235( after \d+ ms)?: ((Could not|Couldn't) connect to server|Connection refused)",
"error: curl operation failed with error code 7 \(Couldn't connect to server\)\.",
"error: curl operation failed with error code 7 \(Couldn't connect to server\)\.",
"note: If you are using a proxy, please ensure your proxy settings are correct\.",
"Possible causes are:",
"1\. You are actually using an HTTP proxy, but setting HTTPS_PROXY variable to ``https//address:port``\.",
Expand Down Expand Up @@ -206,9 +206,6 @@ if ($IsWindows) {
Refresh-TestRoot
$expected = @(
"^Downloading example3\.html, trying https://nonexistent\.example\.com",
"warning: (Problem : timeout\.|Transient problem: timeout) Will retry in 1 seconds?\. 3 retries left\.",
"warning: (Problem : timeout\.|Transient problem: timeout) Will retry in 2 seconds\. 2 retries left\.",
"warning: (Problem : timeout\.|Transient problem: timeout) Will retry in 4 seconds\. 1 (retries|retry) left\.",
"Trying https://example\.com",
"Successfully downloaded example3\.html",
Comment thread
vicroms marked this conversation as resolved.
"$"
Expand All @@ -217,7 +214,7 @@ $expected = @(
$actual = Run-VcpkgAndCaptureOutput @commonArgs x-download "$TestDownloadsRoot/example3.html" --sha512 d06b93c883f8126a04589937a884032df031b05518eed9d433efb6447834df2596aebd500d69b8283e5702d988ed49655ae654c1683c7a4ae58bfa6b92f2b73a --url https://nonexistent.example.com --url https://example.com --header "Cache-Control: no-cache"
Throw-IfFailed
if (-not ($actual -match $expected)) {
throw "Failure: azurl (no), x-block-origin (no), asset-cache (n/a), download (succeed)"
throw "Failure: azurl (no), x-block-origin (no), asset-cache (n/a), download (succeed), headers (cache-control)"
Comment thread
vicroms marked this conversation as resolved.
}

# azurl (no), x-block-origin (yes), asset-cache (n/a), download (n/a)
Expand All @@ -241,8 +238,8 @@ Refresh-TestRoot
$expected = @(
"^Trying to download example3\.html using asset cache file://$assetCacheRegex/[0-9a-z]+",
"Asset cache miss; trying authoritative source https://localhost:1234/foobar\.html",
"error: curl: \(37\) Couldn't open file [^\n]+",
"error: curl: \(7\) Failed to connect to localhost port 1234( after \d+ ms)?: ((Could not|Couldn't) connect to server|Connection refused)",
"error: curl operation failed with error code 37 \(Couldn't read a file:// file\)\.",
"error: curl operation failed with error code 7 \(Couldn't connect to server\)\.",
"note: If you are using a proxy, please ensure your proxy settings are correct\.",
"Possible causes are:",
"1\. You are actually using an HTTP proxy, but setting HTTPS_PROXY variable to ``https//address:port``\.",
Expand Down Expand Up @@ -301,7 +298,7 @@ if (-not ($actual -match $expected)) {
$expected = @(
"^Trying to download example3\.html using asset cache file://$assetCacheRegex/[0-9a-z]+",
"Asset cache miss; trying authoritative source https://example\.com",
"error: curl: \(37\) Couldn't open file [^\n]+",
"error: curl operation failed with error code 37 \(Couldn't read a file:// file\)\.",
"note: If you are using a proxy, please ensure your proxy settings are correct\.",
"Possible causes are:",
"1\. You are actually using an HTTP proxy, but setting HTTPS_PROXY variable to ``https//address:port``\.",
Expand Down Expand Up @@ -363,7 +360,7 @@ if (-not ($actual -match $expected)) {
Refresh-TestRoot
$expected = @(
"^Trying to download example3\.html using asset cache file://$assetCacheRegex/[0-9a-z]+",
"error: curl: \(37\) Couldn't open file [^\n]+",
"error: curl operation failed with error code 37 \(Couldn't read a file:// file\)\.",
"error: there were no asset cache hits, and x-block-origin blocks trying the authoritative source https://example\.com",
"note: or https://alternate\.example\.com",
"note: If you are using a proxy, please ensure your proxy settings are correct\.",
Expand Down
82 changes: 82 additions & 0 deletions cmake/FindLibCURL.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
if (WIN32)
option(VCPKG_DEPENDENCY_EXTERNAL_LIBCURL "Use an external version of the libcurl library" OFF)
else()
option(VCPKG_DEPENDENCY_EXTERNAL_LIBCURL "Use an external version of the libcurl library" ON)
endif()

# This option exists to allow the URI to be replaced with a Microsoft-internal URI in official
# builds which have restricted internet access; see azure-pipelines/signing.yml
# Note that the SHA512 is the same, so vcpkg-tool contributors need not be concerned that we built
# with different content.
if(NOT VCPKG_LIBCURL_URL)
set(VCPKG_LIBCURL_URL "https://github.com/curl/curl/archive/refs/tags/curl-8_8_0.tar.gz")
endif()

if(POLICY CMP0135)
cmake_policy(SET CMP0135 NEW)
endif()

include(FetchContent)
FetchContent_Declare(
Comment thread
vicroms marked this conversation as resolved.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since curl is a nontrivial build should we consider trying to host ourselves rather than using FetchContent for this case? Our existing other dependencies don't really have meaningful builds which is why we never opened that can of worms.

LibCURL
URL "${VCPKG_LIBCURL_URL}"
URL_HASH "SHA512=e66cbf9bd3ae7b9b031475210b80b883b6a133042fbbc7cf2413f399d1b38aa54ab7322626abd3c6f1af56e0d540221f618aa903bd6b463ac8324f2c4e92dfa8"
)

if(NOT LibCURL_FIND_REQUIRED)
message(FATAL_ERROR "LibCURL must be REQUIRED")
endif()

if(VCPKG_DEPENDENCY_EXTERNAL_LIBCURL)
find_package(CURL REQUIRED)
else()
function(get_libcurl)
set(BUILD_SHARED_LIBS OFF)
set(BUILD_CURL_EXE OFF)
set(CURL_ENABLE_EXPORT_TARGET OFF)
set(ENABLE_UNICODE ON)
set(BUILD_LIBCURL_DOCS OFF)
set(BUILD_MISC_DOCS OFF)
set(ENABLE_CURL_MANUAL OFF)
set(PICKY_COMPILER OFF)
set(CMAKE_DISABLE_FIND_PACKAGE_Perl ON)
set(CMAKE_DISABLE_FIND_PACKAGE_ZLIB ON)
set(CMAKE_DISABLE_FIND_PACKAGE_LibPSL ON)
set(CMAKE_DISABLE_FIND_PACKAGE_LibSSH2 ON)
if(MSVC) # This is in function() so no need to backup the variables
string(APPEND CMAKE_C_FLAGS " /wd6101")
string(APPEND CMAKE_C_FLAGS " /wd6011")
string(APPEND CMAKE_C_FLAGS " /wd6054")
string(APPEND CMAKE_C_FLAGS " /wd6240")
string(APPEND CMAKE_C_FLAGS " /wd6239")
string(APPEND CMAKE_C_FLAGS " /wd6323")
string(APPEND CMAKE_C_FLAGS " /wd6387")
string(APPEND CMAKE_C_FLAGS " /wd28182")
string(APPEND CMAKE_C_FLAGS " /wd28183")
string(APPEND CMAKE_C_FLAGS " /wd28251")
string(APPEND CMAKE_C_FLAGS " /wd28301")
else()
string(APPEND CMAKE_C_FLAGS " -Wno-error")
endif()
if (WIN32)
set(CURL_USE_SCHANNEL ON)
endif()
FetchContent_MakeAvailable(LibCURL)
endfunction()

get_libcurl()

if(NOT TARGET CURL::libcurl)
if(TARGET libcurl_static)
add_library(CURL::libcurl ALIAS libcurl_static)
target_compile_definitions(libcurl_static INTERFACE CURL_STATICLIB)
elseif(TARGET libcurl)
add_library(CURL::libcurl ALIAS libcurl)
if(NOT BUILD_SHARED_LIBS)
target_compile_definitions(libcurl INTERFACE CURL_STATICLIB)
endif()
else()
message(FATAL_ERROR "After FetchContent_MakeAvailable(LibCURL) no suitable curl target (libcurl or libcurl_static) was found.")
endif()
endif()
endif()
1 change: 1 addition & 0 deletions include/vcpkg/base/contractual-constants.h
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,7 @@ namespace vcpkg
inline constexpr StringLiteral SwitchDebug = "debug";
inline constexpr StringLiteral SwitchDebugBin = "debug-bin";
inline constexpr StringLiteral SwitchDebugEnv = "debug-env";
inline constexpr StringLiteral SwitchDeleteFileAfterUpload = "delete-file-after-upload";
Comment thread
vicroms marked this conversation as resolved.
Outdated
inline constexpr StringLiteral SwitchDgml = "dgml";
inline constexpr StringLiteral SwitchDisableMetrics = "disable-metrics";
inline constexpr StringLiteral SwitchDot = "dot";
Expand Down
17 changes: 17 additions & 0 deletions include/vcpkg/base/curl.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@

#ifdef _MSC_VER
#pragma warning(push) // Save current warning state
Comment thread
vicroms marked this conversation as resolved.
Outdated
#pragma warning(disable : 6101) // Disable specific warning (e.g., warning 4996)
Comment thread
vicroms marked this conversation as resolved.
Outdated
#endif

#include <curl/curl.h>
#include <curl/multi.h>

#ifdef _MSC_VER
#pragma warning(pop)
#endif

namespace vcpkg
{
CURLcode curl_global_init_status() noexcept;
}
17 changes: 0 additions & 17 deletions include/vcpkg/base/downloads.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,16 +37,6 @@ namespace vcpkg

View<std::string> azure_blob_headers();

// Parses a curl output line for curl invoked with
// -w "PREFIX%{http_code} %{exitcode} %{errormsg}"
// with specific handling for curl version < 7.75.0 which does not understand %{exitcode} %{errormsg}
// If the line is malformed for any reason, no entry to http_codes is added.
// Returns: true if the new version of curl's output with exitcode and errormsg was parsed; otherwise, false.
bool parse_curl_status_line(DiagnosticContext& context,
std::vector<int>& http_codes,
StringLiteral prefix,
StringView this_line);

std::vector<int> download_files_no_cache(DiagnosticContext& context,
View<std::pair<std::string, Path>> url_pairs,
View<std::string> headers,
Expand All @@ -58,13 +48,6 @@ namespace vcpkg
const std::string& github_repository,
const Json::Object& snapshot);

Optional<std::string> invoke_http_request(DiagnosticContext& context,
StringLiteral method,
View<std::string> headers,
StringView url,
View<std::string> secrets,
StringView data = {});

std::string format_url_query(StringView base_url, View<std::string> query_params);

std::vector<int> url_heads(DiagnosticContext& context,
Expand Down
2 changes: 2 additions & 0 deletions include/vcpkg/base/files.h
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,8 @@ namespace vcpkg
// reads any remaining chunks of the file; used to implement read_to_end
void read_to_end_suffix(
std::string& output, std::error_code& ec, char* buffer, size_t buffer_size, size_t last_read);
uint64_t size(LineInfo li) const;
uint64_t size(std::error_code& ec) const;
};

struct WriteFilePointer : FilePointer
Expand Down
30 changes: 16 additions & 14 deletions include/vcpkg/base/message-data.inc.h
Original file line number Diff line number Diff line change
Expand Up @@ -870,6 +870,7 @@ DECLARE_MESSAGE(CmdUpdateRegistryAllOrTargets,
(),
"",
"Update registry requires either a list of artifact registry names or URiIs to update, or --all.")
DECLARE_MESSAGE(CmdUploadMetricsDeleteFileAfterUpload, (), "", "Delete metrics payload file after upload")
DECLARE_MESSAGE(CmdUpgradeOptNoDryRun, (), "", "Actually upgrade")
DECLARE_MESSAGE(CmdUpgradeOptNoKeepGoing, (), "", "Stop installing packages on failure")
DECLARE_MESSAGE(CmdUseExample1,
Expand Down Expand Up @@ -966,24 +967,25 @@ DECLARE_MESSAGE(CreatingNugetPackage, (), "", "Creating NuGet package...")
DECLARE_MESSAGE(CreatingZipArchive, (), "", "Creating zip archive...")
DECLARE_MESSAGE(CreationFailed, (msg::path), "", "Creating {path} failed.")
DECLARE_MESSAGE(CurlFailedGeneric,
(msg::exit_code, msg::error_msg),
"curl is the name of a program, see curl.se.",
"curl operation failed with error code {exit_code} ({error_msg}).")
DECLARE_MESSAGE(CurlFailedGenericWithRetry,
(msg::exit_code, msg::error_msg, msg::count, msg::value),
"curl is the name of a program, see curl.se. {value} is the maximum amount of retries.",
"curl operation failed with error code {exit_code} ({error_msg}) retry {count} of {value}.")
DECLARE_MESSAGE(CurlFailedHttpResponse,
(msg::exit_code),
"curl is the name of a program, see curl.se.",
"curl operation failed with error code {exit_code}.")
DECLARE_MESSAGE(CurlFailedToPut,
(msg::exit_code, msg::url),
"curl is the name of a program, see curl.se",
"curl failed to put file to {url} with exit code {exit_code}.")
"curl operation failed with HTTP response code {exit_code}.")
DECLARE_MESSAGE(CurlFailedHttpResponseWithRetry,
(msg::exit_code, msg::count, msg::value),
"curl is the name of a program, see curl.se. {value} is the maximum amount of retries.",
"curl operation failed with HTTP response code {exit_code} retry {count} of {value}.")
DECLARE_MESSAGE(CurlFailedToPutHttp,
(msg::exit_code, msg::url, msg::value),
(msg::exit_code, msg::error_msg, msg::url, msg::value),
"curl is the name of a program, see curl.se. {value} is an HTTP status code",
"curl failed to put file to {url} with exit code {exit_code} and http code {value}.")
DECLARE_MESSAGE(
CurlFailedToReturnExpectedNumberOfExitCodes,
(msg::exit_code, msg::command_line),
"",
"curl failed to return the expected number of exit codes; this can happen if something terminates curl "
"before it has finished. curl exited with {exit_code} which is normally the result code for the last operation, "
"but may be the result of a crash. The command line was {command_line}, and all output is below:")
"curl failed to put file to {url} with exit code {exit_code} ({error_msg}) and http code {value}.")
Comment thread
vicroms marked this conversation as resolved.
Outdated
DECLARE_MESSAGE(CurrentCommitBaseline,
(msg::commit_sha),
"",
Expand Down
4 changes: 1 addition & 3 deletions include/vcpkg/metrics.h
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,5 @@ namespace vcpkg
extern std::atomic<bool> g_should_send_metrics;

void flush_global_metrics(const Filesystem&);
#if defined(_WIN32)
void winhttp_upload_metrics(StringView payload);
#endif // ^^^ _WIN32
bool curl_upload_metrics(StringView payload);
}
19 changes: 11 additions & 8 deletions locales/messages.json
Original file line number Diff line number Diff line change
Expand Up @@ -506,6 +506,7 @@
"CmdUpdateRegistrySynopsis": "Re-downloads an artifact registry",
"CmdUpgradeOptNoDryRun": "Actually upgrade",
"CmdUpgradeOptNoKeepGoing": "Stop installing packages on failure",
"CmdUploadMetricsDeleteFileAfterUpload": "Delete metrics payload file after upload",
"CmdUseExample1": "vcpkg use <artifact name>",
"_CmdUseExample1.comment": "This is a command line, only the <artifact name> part should be localized.",
"CmdUseSynopsis": "Activate a single artifact in this shell",
Expand Down Expand Up @@ -563,14 +564,16 @@
"CreatingZipArchive": "Creating zip archive...",
"CreationFailed": "Creating {path} failed.",
"_CreationFailed.comment": "An example of {path} is /foo/bar.",
"CurlFailedGeneric": "curl operation failed with error code {exit_code}.",
"_CurlFailedGeneric.comment": "curl is the name of a program, see curl.se. An example of {exit_code} is 127.",
"CurlFailedToPut": "curl failed to put file to {url} with exit code {exit_code}.",
"_CurlFailedToPut.comment": "curl is the name of a program, see curl.se An example of {exit_code} is 127. An example of {url} is https://github.com/microsoft/vcpkg.",
"CurlFailedToPutHttp": "curl failed to put file to {url} with exit code {exit_code} and http code {value}.",
"_CurlFailedToPutHttp.comment": "curl is the name of a program, see curl.se. {value} is an HTTP status code An example of {exit_code} is 127. An example of {url} is https://github.com/microsoft/vcpkg.",
"CurlFailedToReturnExpectedNumberOfExitCodes": "curl failed to return the expected number of exit codes; this can happen if something terminates curl before it has finished. curl exited with {exit_code} which is normally the result code for the last operation, but may be the result of a crash. The command line was {command_line}, and all output is below:",
"_CurlFailedToReturnExpectedNumberOfExitCodes.comment": "An example of {exit_code} is 127. An example of {command_line} is vcpkg install zlib.",
"CurlFailedGeneric": "curl operation failed with error code {exit_code} ({error_msg}).",
"_CurlFailedGeneric.comment": "curl is the name of a program, see curl.se. An example of {exit_code} is 127. An example of {error_msg} is File Not Found.",
"CurlFailedGenericWithRetry": "curl operation failed with error code {exit_code} ({error_msg}) retry {count} of {value}.",
"_CurlFailedGenericWithRetry.comment": "curl is the name of a program, see curl.se. {value} is the maximum amount of retries. An example of {exit_code} is 127. An example of {error_msg} is File Not Found. An example of {count} is 42.",
"CurlFailedHttpResponse": "curl operation failed with HTTP response code {exit_code}.",
"_CurlFailedHttpResponse.comment": "curl is the name of a program, see curl.se. An example of {exit_code} is 127.",
"CurlFailedHttpResponseWithRetry": "curl operation failed with HTTP response code {exit_code} retry {count} of {value}.",
"_CurlFailedHttpResponseWithRetry.comment": "curl is the name of a program, see curl.se. {value} is the maximum amount of retries. An example of {exit_code} is 127. An example of {count} is 42.",
"CurlFailedToPutHttp": "curl failed to put file to {url} with exit code {exit_code} ({error_msg}) and http code {value}.",
"_CurlFailedToPutHttp.comment": "curl is the name of a program, see curl.se. {value} is an HTTP status code An example of {exit_code} is 127. An example of {error_msg} is File Not Found. An example of {url} is https://github.com/microsoft/vcpkg.",
"CurrentCommitBaseline": "You can use the current commit as a baseline, which is:\n\t\"builtin-baseline\": \"{commit_sha}\"",
"_CurrentCommitBaseline.comment": "An example of {commit_sha} is 7cfad47ae9f68b183983090afd6337cd60fd4949.",
"CycleDetectedDuring": "cycle detected during {spec}:",
Expand Down
Loading
Loading