-
Notifications
You must be signed in to change notification settings - Fork 6.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[curl] ngtcp2 http3 curl features #40219
base: master
Are you sure you want to change the base?
Conversation
73e409f
to
657223b
Compare
c-ares should be fixed in c-ares/c-ares@3fd5925 |
@bradh352 Thank you for your fix! |
@dg0yt I am trying to debug on my local windows why cmake fail.
|
@dg0yt I cannot reproduce the error in my local machine. Maybe is a CI thing? Maybe permissions? |
It is unclear because there is no error message. It might help to inspect the file. |
/azp run |
Azure Pipelines successfully started running 1 pipeline(s). |
@JonLiu1993 Can you stop the ci for this PR? |
This PR depends on #40224 |
657223b
to
8e37981
Compare
@JonLiu1993 This PR is ready for review. |
ports/curl/math.patch
Outdated
set(USE_NGTCP2 ON) | ||
include_directories(${NGTCP2_INCLUDE_DIRS}) | ||
- list(APPEND CURL_LIBS ${NGTCP2_LIBRARIES}) | ||
+ list(APPEND CURL_LIBS ${NGTCP2_LIBRARIES} ${MATH_LIBRARY}) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We don't want to link m
with the absolute path. You can use find_library
to check for it, but just link m
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ok. I already submit this patch to upstream and they merge it.
So next version of curl, you will need to patch it again.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
And the other issue is that fix belongs to the wolfssl cmake package.
curl/curl#14343 (comment)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it better to create a PR and fix the way you think it is, instead just tell them a comment on a closed PR.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Adding a note close to the issue is just the quick start. Creating good PRs is done separately.
ports/curl/portfile.cmake
Outdated
@@ -54,6 +56,28 @@ endif() | |||
|
|||
set(OPTIONS "") | |||
|
|||
if(FEATURES MATCHES "http3-(gnutls|wolfssl)") | |||
if("http3-gnutls" IN_LIST FEATURES AND "http3-wolfssl" IN_LIST FEATURES) | |||
message(FATAL_ERROR "Cannot have both features of http3 (http3-gnutls and http3-wolfssl). Choose one") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So these features implement alternatives.
Basically curl wouldn't need two http3 features because the choice of ssl backend has already been made with other features. But you want to have a dependency on ngtcp2 with the right ssl feature enabled.
1496aa2
to
85363e5
Compare
@JonLiu1993 I answered all the points for @dg0yt . |
What is your suggestion? |
I'm in favor of a robust feature interface. The question is again if the team is happy with port curl failing to build for any combination of |
http3 feature in curl is by definition without MutliSSL. Other features is curl already breaks when install together, like openssl and wolfssl. If you have better solution or other suggestion to add http3 feature to curl vcpkg, I will happy to hear your thoughts. |
@talregev, please fix Conflicting files thanks. |
b89c1ff
to
82867ef
Compare
@JonLiu1993 |
We'll be discussing this one in the next meeting. |
Related / new information from last we looked: https://samueloph.dev/blog/debian-curl-now-supports-http3/ |
Unfortuately, the Debian situation can't be easily serve as a guide for vcpkg. (Binary packages, alternative packages, GPL, schannel.) |
I agree, we certainly wouldn't be able to do this for Windows. But we at least aren't going to be trailblazers on doing this. I'm still mildly pessimistic about being able to ship this as is but I haven't truly looked into the details. In particular, I'm worried about vcpkg customers out there who might be talking to OpenSSL in their process with the expectation of that affecting libcurl, that would break if we changed the default backend. Crucially, the system's configured TLS root certificates need to be respected at a bare minimum; this is what forces SChannel on Windows. |
Yeah, this looks to be the case. The thing that changed in Debian is what curl the command line utility uses -- it now uses I'm going to ask other maintainers for more thoughts given this information. |
1373a36
to
8fecd20
Compare
@BillyONeal Thank you in advance! 🙏🏻 |
I explained the above and @AugP @vicroms @JavierMatosD @data-queue and @ras0219-msft seem convinced that Debian unfortunately can't serve as a blueprint for us here, given that we model We would still be extremely happy with instructions in the port describing how to make an overlay-port that has these effects, but we don't think changing the default TLS implementation from OpenSSL on the POSIX platforms is a change we can safely make at this time. :( |
Thank you for the details answer. |
It breaks multi-TLS meaning we would have to make requesting one of the other TLS backends require making an overlay-port under https://learn.microsoft.com/en-us/vcpkg/contributing/maintainer-guide#do-not-use-features-to-implement-alternatives (I'm not closing the PR though because this area is still kind of in a state of flux) |
8fecd20
to
0904e42
Compare
Add ngtcp2 http3 curl features
These features is not experimental in http3 curl:
https://curl.se/docs/http3.html
./vcpkg x-add-version --all
and committing the result.