commit:     00f5031e36ffde7784d10ded6f2c753c3a5513a5
Author:     Matt Jolly <kangie <AT> gentoo <DOT> org>
AuthorDate: Thu Aug  1 00:42:53 2024 +0000
Commit:     Matt Jolly <kangie <AT> gentoo <DOT> org>
CommitDate: Thu Aug  1 03:17:41 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=00f5031e

net-misc/curl: add 8.9.1; enable HTTP/3 (QUIC) by default

The support for HTTP/3 is stable enough and we haven't seen any
reported issues since unmasking the USE where possible.

HTTP/3 is default-enabled using dev-libs/openssl[quic],
with the USE_EXPAND and REQUIRED_USE enforcing required deps
and enabling users to select an alternative implementation.

The only currently-supported option for this is net-libs/ngtcp2[gnutls],
though it is expected that as other TLS backends implement QUIC
(or are supported by other backends) that this will increase.

Of note is that HTTP/3 support and MultiSSL are mutually exclusive at
this point in time. There does not appear to be a significant benefit
to MutliSSL in 2024:

> An original driving factor for this feature was to allow Schannel with
> other TLS backends on Windows so that users could access "native" CA certs
> in the Windows CA store. Subsequently, curl has introduced support in multiple
> TLS backends to use native CAs.
> This reduces the need for many people to use and switch TLS backends.
> There are probably also other use cases, since the TLS backends are not all 
> alike.

We're not dropping MutliSSL support, however HTTP/3 as the default seems
like the option that provides the greater utility as a default
configuration.

This is not to say that MultiSSL support is inherently incompatible with
HTTP/3, it will just require a sufficiently motivated developer
to implement the code.

Closes: https://bugs.gentoo.org/936627
Signed-off-by: Matt Jolly <kangie <AT> gentoo.org>

 net-misc/curl/Manifest                             |  2 ++
 .../curl/{curl-9999.ebuild => curl-8.9.1.ebuild}   | 26 ++++++++++++++++------
 net-misc/curl/curl-9999.ebuild                     | 26 ++++++++++++++++------
 3 files changed, 40 insertions(+), 14 deletions(-)

diff --git a/net-misc/curl/Manifest b/net-misc/curl/Manifest
index 531b8c06008f..fb1e98c7b273 100644
--- a/net-misc/curl/Manifest
+++ b/net-misc/curl/Manifest
@@ -4,3 +4,5 @@ DIST curl-8.8.0.tar.xz 2748860 BLAKE2B 
c14903bad4cbd1752a5335afa6bcc78be1a484692
 DIST curl-8.8.0.tar.xz.asc 488 BLAKE2B 
d80c0ff357b344d7ec2b975a92f1eeb7557993b61a69e7adaaeab89c9b5a53ddade5104fe1a0ad260145db9c90fc0aae36dfc22320492db6696f290da9ff675b
 SHA512 
37b501770225dff6b1e7bde1157f556f10ec1c597fcbbb5c8b8c370efb97a3a70f585f2f5c201b96380d68466696474a5f65a07da59b704678d6927567d25359
 DIST curl-8.9.0.tar.xz 2781828 BLAKE2B 
3302ce98d937bb398fc1abcc1c403796503099e06919ea3b104c873a6fb6cd79328ea9684f5118f63ebb20bad18b94ebfbe92e87716fc24b91dcc92ff2d304b7
 SHA512 
922c726cfa3a73954927a32f485248d7a53a3348638a6a01add1bc0a67a7d2ee9cdb7c78b6db84bb7e2fab9d2d5487a96d9071832198b63a86d2caaef85c9310
 DIST curl-8.9.0.tar.xz.asc 488 BLAKE2B 
7f35383fd98fe0947be9cb0bfb4737a185f40bb3c3e7ab001cb1bef026dec654a01059e225c0d9774c2c5a57a6ee00a4ccf4be8eb1a2db17fe7b2cdbdd06b2f1
 SHA512 
44cc7053ac0fddcb5131e7806fcd793d70bd49c5549b2548bbcbe60fdf913f450e45861ff6497b30eb00fd84483302ff9b6c3aea6b66728d6e54dd7ffc388408
+DIST curl-8.9.1.tar.xz 2782364 BLAKE2B 
6e38e20e2b03ab5bfbb8d9797442dfdd9644fc80d7b1f7c1efb1f44e0d730524e82ccf7413b2c6f4555bd61ae42f91ec7c0201e2c0d563811c85164aa234aada
 SHA512 
a0fe234402875db194aad4e4208b7e67e7ffc1562622eea90948d4b9b0122c95c3dde8bbe2f7445a687cb3de7cb09f20e5819d424570442d976aa4c913227fc7
+DIST curl-8.9.1.tar.xz.asc 488 BLAKE2B 
437268f6e5ba5db73f205fd87f3ded1e5fc200e8bf63a83cdb7e21dfbf2f4a4620e598cd0bf5d8fa1548ade08d45b386599542cd988df46a238b85790409f42e
 SHA512 
18acd58436d70900ab6912b84774da2c451b9dbfc83d6d00f85bbbe7894b67075918e58956fdb753fcc1486e4f10caa31139d7c68b037d7c83dc2e9c2fae9f9b

diff --git a/net-misc/curl/curl-9999.ebuild b/net-misc/curl/curl-8.9.1.ebuild
similarity index 93%
copy from net-misc/curl/curl-9999.ebuild
copy to net-misc/curl/curl-8.9.1.ebuild
index b42cca9c5152..c8446b6178ce 100644
--- a/net-misc/curl/curl-9999.ebuild
+++ b/net-misc/curl/curl-8.9.1.ebuild
@@ -26,14 +26,16 @@ fi
 
 LICENSE="BSD curl ISC test? ( BSD-4 )"
 SLOT="0"
-IUSE="+adns +alt-svc brotli debug +ftp gnutls gopher +hsts +http2 http3 idn 
+imap kerberos ldap mbedtls +openssl +pop3"
-IUSE+=" +psl +progress-meter quic rtmp rustls samba +smtp ssh ssl sslv3 
static-libs test telnet +tftp websockets zstd"
+IUSE="+adns +alt-svc brotli debug +ftp gnutls gopher +hsts +http2 +http3 idn 
+imap kerberos ldap mbedtls +openssl +pop3"
+IUSE+=" +psl +progress-meter +quic rtmp rustls samba +smtp ssh ssl sslv3 
static-libs test telnet +tftp websockets zstd"
 # These select the default tls implementation / which quic impl to use
-IUSE+=" curl_quic_openssl curl_quic_ngtcp2 curl_ssl_gnutls curl_ssl_mbedtls 
+curl_ssl_openssl curl_ssl_rustls"
+IUSE+=" +curl_quic_openssl curl_quic_ngtcp2 curl_ssl_gnutls curl_ssl_mbedtls 
+curl_ssl_openssl curl_ssl_rustls"
 RESTRICT="!test? ( test )"
 
 # Only one default ssl / quic provider can be enabled
 # The default provider needs its USE satisfied
+# HTTP/3 and MultiSSL are mutually exclusive; it's not clear if MultiSSL 
offers any benefit at all in the modern day.
+# https://github.com/curl/curl/commit/65ece771f4602107d9cdd339dff4b420280a2c2e
 REQUIRED_USE="
        quic? (
                ^^ (
@@ -50,8 +52,18 @@ REQUIRED_USE="
                        curl_ssl_rustls
                )
        )
-       curl_quic_openssl? ( openssl )
-       curl_quic_ngtcp2? ( gnutls )
+       curl_quic_openssl? (
+               curl_ssl_openssl
+               !gnutls
+               !mbedtls
+               !rustls
+       )
+       curl_quic_ngtcp2? (
+               curl_ssl_gnutls
+               !mbedtls
+               !openssl
+               !rustls
+       )
        curl_ssl_gnutls? ( gnutls )
        curl_ssl_mbedtls? ( mbedtls )
        curl_ssl_openssl? ( openssl )
@@ -71,9 +83,9 @@ RDEPEND="
        >=sys-libs/zlib-1.1.4[${MULTILIB_USEDEP}]
        adns? ( >=net-dns/c-ares-1.16.0:=[${MULTILIB_USEDEP}] )
        brotli? ( app-arch/brotli:=[${MULTILIB_USEDEP}] )
-       http2? ( >=net-libs/nghttp2-1.12.0:=[${MULTILIB_USEDEP}] )
+       http2? ( >=net-libs/nghttp2-1.15.0:=[${MULTILIB_USEDEP}] )
        http3? ( >=net-libs/nghttp3-1.1.0[${MULTILIB_USEDEP}] )
-       idn? ( net-dns/libidn2:=[static-libs?,${MULTILIB_USEDEP}] )
+       idn? ( >=net-dns/libidn2-2.0.0:=[static-libs?,${MULTILIB_USEDEP}] )
        kerberos? ( >=virtual/krb5-0-r1[${MULTILIB_USEDEP}] )
        ldap? ( >=net-nds/openldap-2.0.0:=[static-libs?,${MULTILIB_USEDEP}] )
        psl? ( net-libs/libpsl[${MULTILIB_USEDEP}] )

diff --git a/net-misc/curl/curl-9999.ebuild b/net-misc/curl/curl-9999.ebuild
index b42cca9c5152..c8446b6178ce 100644
--- a/net-misc/curl/curl-9999.ebuild
+++ b/net-misc/curl/curl-9999.ebuild
@@ -26,14 +26,16 @@ fi
 
 LICENSE="BSD curl ISC test? ( BSD-4 )"
 SLOT="0"
-IUSE="+adns +alt-svc brotli debug +ftp gnutls gopher +hsts +http2 http3 idn 
+imap kerberos ldap mbedtls +openssl +pop3"
-IUSE+=" +psl +progress-meter quic rtmp rustls samba +smtp ssh ssl sslv3 
static-libs test telnet +tftp websockets zstd"
+IUSE="+adns +alt-svc brotli debug +ftp gnutls gopher +hsts +http2 +http3 idn 
+imap kerberos ldap mbedtls +openssl +pop3"
+IUSE+=" +psl +progress-meter +quic rtmp rustls samba +smtp ssh ssl sslv3 
static-libs test telnet +tftp websockets zstd"
 # These select the default tls implementation / which quic impl to use
-IUSE+=" curl_quic_openssl curl_quic_ngtcp2 curl_ssl_gnutls curl_ssl_mbedtls 
+curl_ssl_openssl curl_ssl_rustls"
+IUSE+=" +curl_quic_openssl curl_quic_ngtcp2 curl_ssl_gnutls curl_ssl_mbedtls 
+curl_ssl_openssl curl_ssl_rustls"
 RESTRICT="!test? ( test )"
 
 # Only one default ssl / quic provider can be enabled
 # The default provider needs its USE satisfied
+# HTTP/3 and MultiSSL are mutually exclusive; it's not clear if MultiSSL 
offers any benefit at all in the modern day.
+# https://github.com/curl/curl/commit/65ece771f4602107d9cdd339dff4b420280a2c2e
 REQUIRED_USE="
        quic? (
                ^^ (
@@ -50,8 +52,18 @@ REQUIRED_USE="
                        curl_ssl_rustls
                )
        )
-       curl_quic_openssl? ( openssl )
-       curl_quic_ngtcp2? ( gnutls )
+       curl_quic_openssl? (
+               curl_ssl_openssl
+               !gnutls
+               !mbedtls
+               !rustls
+       )
+       curl_quic_ngtcp2? (
+               curl_ssl_gnutls
+               !mbedtls
+               !openssl
+               !rustls
+       )
        curl_ssl_gnutls? ( gnutls )
        curl_ssl_mbedtls? ( mbedtls )
        curl_ssl_openssl? ( openssl )
@@ -71,9 +83,9 @@ RDEPEND="
        >=sys-libs/zlib-1.1.4[${MULTILIB_USEDEP}]
        adns? ( >=net-dns/c-ares-1.16.0:=[${MULTILIB_USEDEP}] )
        brotli? ( app-arch/brotli:=[${MULTILIB_USEDEP}] )
-       http2? ( >=net-libs/nghttp2-1.12.0:=[${MULTILIB_USEDEP}] )
+       http2? ( >=net-libs/nghttp2-1.15.0:=[${MULTILIB_USEDEP}] )
        http3? ( >=net-libs/nghttp3-1.1.0[${MULTILIB_USEDEP}] )
-       idn? ( net-dns/libidn2:=[static-libs?,${MULTILIB_USEDEP}] )
+       idn? ( >=net-dns/libidn2-2.0.0:=[static-libs?,${MULTILIB_USEDEP}] )
        kerberos? ( >=virtual/krb5-0-r1[${MULTILIB_USEDEP}] )
        ldap? ( >=net-nds/openldap-2.0.0:=[static-libs?,${MULTILIB_USEDEP}] )
        psl? ( net-libs/libpsl[${MULTILIB_USEDEP}] )

Reply via email to