summaryrefslogtreecommitdiff
path: root/net-misc/curl
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2024-08-07 12:37:21 +0100
committerV3n3RiX <venerix@koprulu.sector>2024-08-07 12:37:21 +0100
commitb8c7370a682e4e29cda623222d17a790c01c3642 (patch)
treef6caa14689bd00a5760eadaa381ff41e50ef3c1b /net-misc/curl
parent8a4997a7e2d1e36c089d4d76935b5a902d98d3d0 (diff)
gentoo auto-resync : 07:08:2024 - 12:37:20
Diffstat (limited to 'net-misc/curl')
-rw-r--r--net-misc/curl/Manifest9
-rw-r--r--net-misc/curl/curl-8.9.1-r1.ebuild (renamed from net-misc/curl/curl-8.7.1-r3.ebuild)122
-rw-r--r--net-misc/curl/curl-8.9.1.ebuild (renamed from net-misc/curl/curl-8.8.0.ebuild)104
-rw-r--r--net-misc/curl/curl-9999.ebuild33
-rw-r--r--net-misc/curl/files/curl-8.9.1-sigpipe.patch26
5 files changed, 181 insertions, 113 deletions
diff --git a/net-misc/curl/Manifest b/net-misc/curl/Manifest
index 76bf21221e02..ee7f848b6c04 100644
--- a/net-misc/curl/Manifest
+++ b/net-misc/curl/Manifest
@@ -5,6 +5,7 @@ AUX curl-8.7.1-rustls-fixes.patch 1526 BLAKE2B c1ce730bc1d78d9655378a174b32706bc
AUX curl-8.8.0-install-manpage.patch 659 BLAKE2B 44a303863fb826d0fca139c8a9091ce1e9ed461f3ee1545b4c3fb9a03dae2f707622b61d4f34345bafcccab751f989972eead676de5a784b5af138a1cc0e467c SHA512 0d5acfb2cf32b3855a29e01cacc5b3f06014832ca0adfa554938b3b06658dd63a4bac75932b4476b856f4c9adb096217bbb549b1a81a4a012f8b668cb9420079
AUX curl-8.8.0-mbedtls.patch 1686 BLAKE2B 6bafbfcf8c418e0507dc910aafe8667c3a71c535fa13f329ef67087edb4f6dcbe70113f752baf8a9ac6c72424045a3111b4e21992c84c7d2cd66684cfaa0ad0f SHA512 07ae1a42da92a200bbc72d911ecbf83b93df2a2be6022605842fc08bc870e466b19b6dc78298039027266155a5c9fcc81f05107fdbdfba4cfac4ddaad4d2a586
AUX curl-8.8.0-multi_wait-timeout.patch 2732 BLAKE2B ae2f40f6dcec16761d959fe5eeaff531ff3ac2c2cd26d676261ecac406653c3d560941455f6d46dd1552f20429582173e45f05865cbdd009c28f21de6a98a458 SHA512 1fbb5506ce1b87c90ea2d029adb9eaccb9930203c8aa0c119666cbee6fc1fc190423f02592bb2620ca3fa1b60822fc704bbc6f671152e877b2383173260acb04
+AUX curl-8.9.1-sigpipe.patch 773 BLAKE2B 7ef3bbd4ca9558621b4f1ea5cb9847705cd6331b7f3d5d2a950642d090c789b802c0ff4f96ff2805b9e1dfe807b14daaee223dbcb2ff1426458dadb3e71d1e79 SHA512 55e55da046425e9a60064ff79ec3f8ab37a10275210f46cfb10ad29e9a29cb137a28ba6a0effa90bfc46d687aab929565b97bfa7549ac8a202746e332d1fa6ed
AUX curl-prefix-2.patch 1075 BLAKE2B 657ac450c9d50a08f62be72dc9d1bc68c494dcc0c8153f1a89d5cb50d240aa6bcd56b48242ed3ea1352da5cd5d98b8c6daaff6fdcc672a95a0233db1f8d27bdd SHA512 91a531291426477a68108dcc40656e6a56caabfda26f351d4b7cdb39e66f500ffd532f2417a81c5a789ea624b4f6325aa8006155292910612e54ab3d9daa3620
AUX curl-prefix.patch 880 BLAKE2B 5b7552a8339014221864a585d174b02a96ec7dd7fe8762d331d1981834044f8ec4db64d527a4ded3f5f4cccc86f281576668de092439eb19f5477d5fcf8369cf SHA512 c7cd13b9ccbd12ed01ea121ffece9c23b898a5b34698bae59ae1dd23b1cf2445180b84d80c4a640981f16dba5018df944f405dd5c660addab54ca21e0e673b7f
AUX curl-respect-cflags-3.patch 406 BLAKE2B 1b533144858aff5566150c4a2648ad2e48e8ff29849ae285592edfee4b3332d06e750395dea7190ee6a01d2b5ee2c2c42c10400c2e5defa09963a90a1a10417d SHA512 3219e4e67d534e35012909243fc8d69d58989462db44dd507c502e7aaa299f1d9a01392e2c83797cc2bdb53d503470c5d6e7bf94572a6ccc6e5eafcc0466bc54
@@ -12,9 +13,11 @@ DIST curl-8.7.1.tar.xz 2707016 BLAKE2B a2a9f48d0b69c0d92fcbbda535ce55082a5243abe
DIST curl-8.7.1.tar.xz.asc 488 BLAKE2B 1c91d116aecc8e98d8ec3aad68b7c96f11151e6c2716f531e5d2989e9b6b1199e180603673891d7967cdcdaee1d6b5e15160ccabe9b51590e2887022db03c2ed SHA512 f98c393997c4a32f545a8982226e8cd612395210915a4576c2ce227d0f650cff341be7bf15e989d1789abf32ac4fd9c190b9250b81e650b569e8532048746b37
DIST curl-8.8.0.tar.xz 2748860 BLAKE2B c14903bad4cbd1752a5335afa6bcc78be1a484692fce0e0a6c2061963e0e6b4e56defb8332cef32d0dbddb481ad0443b71faf3a52a6e9d945c89ecbce373d2a3 SHA512 9d2c0d3a0d8f6c31ba4fabe48f801910f886fde43dc198dc4213708d6967ed5e040a1bb7348aa1cb126577ee508a3ec36fe65256d027d861d6ffb70f6383967a
DIST curl-8.8.0.tar.xz.asc 488 BLAKE2B d80c0ff357b344d7ec2b975a92f1eeb7557993b61a69e7adaaeab89c9b5a53ddade5104fe1a0ad260145db9c90fc0aae36dfc22320492db6696f290da9ff675b SHA512 37b501770225dff6b1e7bde1157f556f10ec1c597fcbbb5c8b8c370efb97a3a70f585f2f5c201b96380d68466696474a5f65a07da59b704678d6927567d25359
-EBUILD curl-8.7.1-r3.ebuild 11043 BLAKE2B 3d468dea6498e583f32d9ab2d1f46d318ff1be54f618eb6d675aa62600cdd54e8fa8456ffd625554453ff3892ada172f8180cba3b6a764e8b3c873edb700575e SHA512 ecb08a53bf882c4c8ab6b659f8cbe30f595f336c830c239be35abe13bf80eabf41513719a4c13193110ef20dc19edd5d9653aa484a3abbc1a3ada3abe3a9e29c
+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
EBUILD curl-8.7.1-r4.ebuild 11267 BLAKE2B 50dba5d100c3fee6b1721a63c059e365a27e02924c514164f13b082f7afabb4afc5aa47a14eb48283701828c834906bcde012530cd60697167a09d615da7df1d SHA512 aa5b768414133e81cdafb774f44c33f14de19c607013f64d83f5e2460285215e1792e738746d8665f2b98ff85ab0d50c03d96d65145ae72967193a34be3aae13
EBUILD curl-8.8.0-r1.ebuild 11494 BLAKE2B 6086d91363a1724a62f45062899114d4f96af8ca28ce67bfe843b2c8d435b65e543e4860be4619c4628a7e66425edc19c90de3d22a54eaba2ac118075d2d44a2 SHA512 1f18433acec5d1ba5631b7e6ecd1c9cf7c3039decdb5e001333ed709f86487808d92afee96e31a9ce5c2c1ed79b5189be205397378bc2f0583efd7acb286c54b
-EBUILD curl-8.8.0.ebuild 11117 BLAKE2B d088f434876adfaee0e4b4983c2b9cd047460496260b2a2678581bec7a63bf2e93272159b3e82fbd472df17f062f1b3fe6f81e75a5e2dd1ab588b208a6f6909f SHA512 8419bcac5a90e96a0ae896787ab632d85c29c373365c4084bfa14e414f2e9494f01ad0c812e2fb1b8596ee96f682cc76da2818f3b5cc992801c0a1660f61ac9a
-EBUILD curl-9999.ebuild 11092 BLAKE2B 366122c9c5c9ff592959d8932b0adb04b73fce5b3155a5e47bd2246ae3922546c4e39a4b0f9a556e0f6163953398ac8270f49ab4af34d05c88f815e40e807d53 SHA512 0551db5807a5d02e096548d3b9116ce6563bff1c6be661a04da6ccdae077cee1cd9936d1f61c8ee38dd4442e4b519dcab7c04c5034f207ce1c002f0ab2bf0808
+EBUILD curl-8.9.1-r1.ebuild 11448 BLAKE2B 6e321535bc9e79401b923e4b4464b99facb1b87c1079dd9ed0686c8e373f6431bb463ff0dea237710f50d4ca8d8fdb86b9c32a12eb841f7d7789438c1c8764e4 SHA512 fe112d9cb2c0984fb58754255c14978fb1f1bdef677e867b1725cb1497b5325ec1e71bcec9da481c9869e7d5689a2c01b415faa0002314b78e986f31851442c4
+EBUILD curl-8.9.1.ebuild 11401 BLAKE2B 5b90711bcc0fc5058ca59799482356b0bd35025259b722862bbdf5352dbfbdce0aed6294b11e6e8f71cb0ffa72d340a28311e8333e5fce935a44b04a0385647b SHA512 b00508d74545a380e8327cf8f4bf9c7e3c255e49a8310c1d18ba8678a06218ef741bc6e715f115ebbef8f3dacc9b07cbe55fa1c24566c680a91b1edca50d27d6
+EBUILD curl-9999.ebuild 11399 BLAKE2B 171c5b00a9b4be26e79efe04efa464adaa6c7962700557f3a3b6734190b2d522d602eb304303cda0c750bf723ee3ff5cf17e75cb1e4623b0f33ccfd845a228b4 SHA512 c3b3d5d96006d0f2ebcb6c24f8d27be3f820e92577098522f5fcb6697ab85c0a275fcff130bbc23dbf9284594fa070881c523450d20d061cd5b6a7fb7912a833
MISC metadata.xml 2215 BLAKE2B aa0851849ffda831aeec7a6315d23892c35680ab42c0bc9a5662238e7b8289d5f48d5f2a60ab0bacba06f71271bf60d14958bfec029a048f732d22fdc60faded SHA512 7da9247a1bbb533ae0bdc919f5bd2ad7ed298a7f9e986dce6d2471cedeee9f1542a8ef79b1fdbca5a1a0d33194b99ff3d3f5c27054ac01a3f1e40a1e94d6c1b2
diff --git a/net-misc/curl/curl-8.7.1-r3.ebuild b/net-misc/curl/curl-8.9.1-r1.ebuild
index 7877669d822a..68501e82986b 100644
--- a/net-misc/curl/curl-8.7.1-r3.ebuild
+++ b/net-misc/curl/curl-8.9.1-r1.ebuild
@@ -3,6 +3,10 @@
EAPI=8
+# Maintainers should subscribe to the 'curl-distros' ML for backports etc
+# https://daniel.haxx.se/blog/2024/03/25/curl-distro-report/
+# https://lists.haxx.se/listinfo/curl-distros
+
VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/danielstenberg.asc
inherit autotools multilib-minimal multiprocessing prefix toolchain-funcs verify-sig
@@ -17,21 +21,30 @@ else
https://curl.se/download/${P}.tar.xz
verify-sig? ( https://curl.se/download/${P}.tar.xz.asc )
"
- KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
+ KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
fi
LICENSE="BSD curl ISC test? ( BSD-4 )"
SLOT="0"
-IUSE="+adns +alt-svc brotli +ftp gnutls gopher +hsts +http2 idn +imap kerberos ldap mbedtls nghttp3 +openssl +pop3"
-IUSE+=" +psl +progress-meter rtmp rustls samba +smtp ssh ssl sslv3 static-libs test telnet +tftp websockets zstd"
-# These select the default SSL implementation
-IUSE+=" curl_ssl_gnutls curl_ssl_mbedtls +curl_ssl_openssl curl_ssl_rustls"
+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"
RESTRICT="!test? ( test )"
-# Only one default ssl provider can be enabled
-# The default ssl provider needs its USE satisfied
-# nghttp3 = https://bugs.gentoo.org/912029
+# 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? (
+ ^^ (
+ curl_quic_openssl
+ curl_quic_ngtcp2
+ )
+ http3
+ ssl
+ )
ssl? (
^^ (
curl_ssl_gnutls
@@ -40,13 +53,25 @@ REQUIRED_USE="
curl_ssl_rustls
)
)
+ curl_quic_openssl? (
+ curl_ssl_openssl
+ quic
+ !gnutls
+ !mbedtls
+ !rustls
+ )
+ curl_quic_ngtcp2? (
+ curl_ssl_gnutls
+ quic
+ !mbedtls
+ !openssl
+ !rustls
+ )
curl_ssl_gnutls? ( gnutls )
curl_ssl_mbedtls? ( mbedtls )
curl_ssl_openssl? ( openssl )
curl_ssl_rustls? ( rustls )
- nghttp3? (
- !openssl
- alt-svc )
+ http3? ( alt-svc quic )
"
# cURL's docs and CI/CD are great resources for confirming supported versions
@@ -56,20 +81,21 @@ REQUIRED_USE="
# - https://github.com/curl/curl/blob/master/.github/workflows/quiche-linux.yml (CI/CD for TCP/2)
# However 'supported' vs 'works' are two entirely different things; be sane but
# don't be afraid to require a later version.
-
+# ngtcp2 = https://bugs.gentoo.org/912029 - can only build with one tls backend at a time.
RDEPEND="
>=sys-libs/zlib-1.1.4[${MULTILIB_USEDEP}]
- adns? ( net-dns/c-ares:=[${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}] )
- idn? ( net-dns/libidn2:=[static-libs?,${MULTILIB_USEDEP}] )
+ http2? ( >=net-libs/nghttp2-1.15.0:=[${MULTILIB_USEDEP}] )
+ http3? ( >=net-libs/nghttp3-1.1.0[${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}] )
- nghttp3? (
- >=net-libs/nghttp3-0.15.0[${MULTILIB_USEDEP}]
- >=net-libs/ngtcp2-0.19.1[gnutls,ssl,-openssl,${MULTILIB_USEDEP}]
- )
psl? ( net-libs/libpsl[${MULTILIB_USEDEP}] )
+ quic? (
+ curl_quic_openssl? ( >=dev-libs/openssl-3.3.0:=[quic,${MULTILIB_USEDEP}] )
+ curl_quic_ngtcp2? ( >=net-libs/ngtcp2-1.2.0[gnutls,ssl,-openssl,${MULTILIB_USEDEP}] )
+ )
rtmp? ( media-video/rtmpdump[${MULTILIB_USEDEP}] )
ssh? ( >=net-libs/libssh2-1.0.0[${MULTILIB_USEDEP}] )
ssl? (
@@ -85,8 +111,8 @@ RDEPEND="
openssl? (
>=dev-libs/openssl-0.9.7:=[sslv3(-)=,static-libs?,${MULTILIB_USEDEP}]
)
- rustls? ( >=net-libs/rustls-ffi-0.12.1:=[${MULTILIB_USEDEP}]
- <net-libs/rustls-ffi-0.13.0:=[${MULTILIB_USEDEP}]
+ rustls? (
+ >=net-libs/rustls-ffi-0.13.0:=[${MULTILIB_USEDEP}]
)
)
zstd? ( app-arch/zstd:=[${MULTILIB_USEDEP}] )
@@ -100,7 +126,7 @@ BDEPEND="
test? (
sys-apps/diffutils
http2? ( >=net-libs/nghttp2-1.15.0:=[utils,${MULTILIB_USEDEP}] )
- nghttp3? ( net-libs/nghttp2:=[utils,${MULTILIB_USEDEP}] )
+ http3? ( net-libs/nghttp2:=[utils,${MULTILIB_USEDEP}] )
)
verify-sig? ( sec-keys/openpgp-keys-danielstenberg )
"
@@ -130,11 +156,9 @@ QA_CONFIG_IMPL_DECL_SKIP=(
)
PATCHES=(
- "${FILESDIR}"/${PN}-prefix.patch
+ "${FILESDIR}"/${PN}-prefix-2.patch
"${FILESDIR}"/${PN}-respect-cflags-3.patch
- "${FILESDIR}"/${PN}-8.7.1-rustls-fixes.patch
- "${FILESDIR}"/${P}-chunked-post.patch
- "${FILESDIR}"/${P}-fix-compress-option.patch
+ "${FILESDIR}"/${PN}-8.9.1-sigpipe.patch
)
src_prepare() {
@@ -221,7 +245,6 @@ multilib_src_configure() {
$(use_enable ldap)
$(use_enable ldap ldaps)
--enable-ntlm
- --disable-ntlm-wb
$(use_enable pop3)
--enable-rt
--enable-rtsp
@@ -262,8 +285,9 @@ multilib_src_configure() {
--without-libgsasl
$(use_with psl libpsl)
--without-msh3
- $(use_with nghttp3)
- $(use_with nghttp3 ngtcp2)
+ $(use_with http3 nghttp3)
+ $(use_with curl_quic_ngtcp2 ngtcp2)
+ $(use_with curl_quic_openssl openssl-quic)
--without-quiche
$(use_with rtmp librtmp)
--without-schannel
@@ -279,7 +303,13 @@ multilib_src_configure() {
--with-zsh-functions-dir="${EPREFIX}"/usr/share/zsh/site-functions
)
- if use test && multilib_is_native_abi && ( use http2 || use nghttp3 ); then
+ if use debug; then
+ myconf+=(
+ --enable-debug
+ )
+ fi
+
+ if use test && multilib_is_native_abi && ( use http2 || use http3 ); then
myconf+=(
--with-test-nghttpx="${BROOT}/usr/bin/nghttpx"
)
@@ -299,30 +329,6 @@ multilib_src_configure() {
sed -i -e '/SUBDIRS/s:scripts::' Makefile || die
fi
- # Fix up the pkg-config file to be more robust.
- # https://github.com/curl/curl/issues/864
- local priv=() libs=()
- # We always enable zlib.
- libs+=( "-lz" )
- priv+=( "zlib" )
- if use http2; then
- libs+=( "-lnghttp2" )
- priv+=( "libnghttp2" )
- fi
- if use nghttp3; then
- libs+=( "-lnghttp3" "-lngtcp2" )
- priv+=( "libnghttp3" "libngtcp2" )
- fi
- if use ssl && use curl_ssl_openssl; then
- libs+=( "-lssl" "-lcrypto" )
- priv+=( "openssl" )
- fi
- grep -q Requires.private libcurl.pc && die "need to update ebuild"
- libs=$(printf '|%s' "${libs[@]}")
- sed -i -r \
- -e "/^Libs.private/s:(${libs#|})( |$)::g" \
- libcurl.pc || die
- echo "Requires.private: ${priv[*]}" >> libcurl.pc || die
}
multilib_src_compile() {
@@ -368,3 +374,11 @@ multilib_src_install_all() {
find "${ED}" -type f -name '*.la' -delete || die
rm -rf "${ED}"/etc/ || die
}
+
+pkg_postinst() {
+ if use debug; then
+ ewarn "USE=debug has been selected, enabling debug codepaths and making cURL extra verbose."
+ ewarn "Use this _only_ for testing. Debug builds should _not_ be used in anger."
+ ewarn "hic sunt dracones; you have been warned."
+ fi
+}
diff --git a/net-misc/curl/curl-8.8.0.ebuild b/net-misc/curl/curl-8.9.1.ebuild
index db51f02670f5..29fe1924e39a 100644
--- a/net-misc/curl/curl-8.8.0.ebuild
+++ b/net-misc/curl/curl-8.9.1.ebuild
@@ -26,16 +26,24 @@ fi
LICENSE="BSD curl ISC test? ( BSD-4 )"
SLOT="0"
-IUSE="+adns +alt-svc brotli +ftp gnutls gopher +hsts +http2 idn +imap kerberos ldap mbedtls nghttp3 +openssl +pop3"
-IUSE+=" +psl +progress-meter rtmp rustls samba +smtp ssh ssl sslv3 static-libs test telnet +tftp websockets zstd"
-# These select the default SSL implementation
-IUSE+=" curl_ssl_gnutls curl_ssl_mbedtls +curl_ssl_openssl curl_ssl_rustls"
+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"
RESTRICT="!test? ( test )"
-# Only one default ssl provider can be enabled
-# The default ssl provider needs its USE satisfied
-# nghttp3 = https://bugs.gentoo.org/912029
+# 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? (
+ ^^ (
+ curl_quic_openssl
+ curl_quic_ngtcp2
+ )
+ http3
+ )
ssl? (
^^ (
curl_ssl_gnutls
@@ -44,13 +52,25 @@ REQUIRED_USE="
curl_ssl_rustls
)
)
+ curl_quic_openssl? (
+ curl_ssl_openssl
+ quic
+ !gnutls
+ !mbedtls
+ !rustls
+ )
+ curl_quic_ngtcp2? (
+ curl_ssl_gnutls
+ quic
+ !mbedtls
+ !openssl
+ !rustls
+ )
curl_ssl_gnutls? ( gnutls )
curl_ssl_mbedtls? ( mbedtls )
curl_ssl_openssl? ( openssl )
curl_ssl_rustls? ( rustls )
- nghttp3? (
- !openssl
- alt-svc )
+ http3? ( alt-svc quic )
"
# cURL's docs and CI/CD are great resources for confirming supported versions
@@ -60,20 +80,21 @@ REQUIRED_USE="
# - https://github.com/curl/curl/blob/master/.github/workflows/quiche-linux.yml (CI/CD for TCP/2)
# However 'supported' vs 'works' are two entirely different things; be sane but
# don't be afraid to require a later version.
-
+# ngtcp2 = https://bugs.gentoo.org/912029 - can only build with one tls backend at a time.
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}] )
- idn? ( net-dns/libidn2:=[static-libs?,${MULTILIB_USEDEP}] )
+ http2? ( >=net-libs/nghttp2-1.15.0:=[${MULTILIB_USEDEP}] )
+ http3? ( >=net-libs/nghttp3-1.1.0[${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}] )
- nghttp3? (
- >=net-libs/nghttp3-1.1.0[${MULTILIB_USEDEP}]
- >=net-libs/ngtcp2-1.2.0[gnutls,ssl,-openssl,${MULTILIB_USEDEP}]
- )
psl? ( net-libs/libpsl[${MULTILIB_USEDEP}] )
+ quic? (
+ curl_quic_openssl? ( >=dev-libs/openssl-3.3.0:=[quic,${MULTILIB_USEDEP}] )
+ curl_quic_ngtcp2? ( >=net-libs/ngtcp2-1.2.0[gnutls,ssl,-openssl,${MULTILIB_USEDEP}] )
+ )
rtmp? ( media-video/rtmpdump[${MULTILIB_USEDEP}] )
ssh? ( >=net-libs/libssh2-1.0.0[${MULTILIB_USEDEP}] )
ssl? (
@@ -104,7 +125,7 @@ BDEPEND="
test? (
sys-apps/diffutils
http2? ( >=net-libs/nghttp2-1.15.0:=[utils,${MULTILIB_USEDEP}] )
- nghttp3? ( net-libs/nghttp2:=[utils,${MULTILIB_USEDEP}] )
+ http3? ( net-libs/nghttp2:=[utils,${MULTILIB_USEDEP}] )
)
verify-sig? ( sec-keys/openpgp-keys-danielstenberg )
"
@@ -136,8 +157,6 @@ QA_CONFIG_IMPL_DECL_SKIP=(
PATCHES=(
"${FILESDIR}"/${PN}-prefix-2.patch
"${FILESDIR}"/${PN}-respect-cflags-3.patch
- "${FILESDIR}"/${P}-install-manpage.patch
- "${FILESDIR}"/${P}-mbedtls.patch
)
src_prepare() {
@@ -264,8 +283,9 @@ multilib_src_configure() {
--without-libgsasl
$(use_with psl libpsl)
--without-msh3
- $(use_with nghttp3)
- $(use_with nghttp3 ngtcp2)
+ $(use_with http3 nghttp3)
+ $(use_with curl_quic_ngtcp2 ngtcp2)
+ $(use_with curl_quic_openssl openssl-quic)
--without-quiche
$(use_with rtmp librtmp)
--without-schannel
@@ -281,7 +301,13 @@ multilib_src_configure() {
--with-zsh-functions-dir="${EPREFIX}"/usr/share/zsh/site-functions
)
- if use test && multilib_is_native_abi && ( use http2 || use nghttp3 ); then
+ if use debug; then
+ myconf+=(
+ --enable-debug
+ )
+ fi
+
+ if use test && multilib_is_native_abi && ( use http2 || use http3 ); then
myconf+=(
--with-test-nghttpx="${BROOT}/usr/bin/nghttpx"
)
@@ -301,30 +327,6 @@ multilib_src_configure() {
sed -i -e '/SUBDIRS/s:scripts::' Makefile || die
fi
- # Fix up the pkg-config file to be more robust.
- # https://github.com/curl/curl/issues/864
- local priv=() libs=()
- # We always enable zlib.
- libs+=( "-lz" )
- priv+=( "zlib" )
- if use http2; then
- libs+=( "-lnghttp2" )
- priv+=( "libnghttp2" )
- fi
- if use nghttp3; then
- libs+=( "-lnghttp3" "-lngtcp2" )
- priv+=( "libnghttp3" "libngtcp2" )
- fi
- if use ssl && use curl_ssl_openssl; then
- libs+=( "-lssl" "-lcrypto" )
- priv+=( "openssl" )
- fi
- grep -q Requires.private libcurl.pc && die "need to update ebuild"
- libs=$(printf '|%s' "${libs[@]}")
- sed -i -r \
- -e "/^Libs.private/s:(${libs#|})( |$)::g" \
- libcurl.pc || die
- echo "Requires.private: ${priv[*]}" >> libcurl.pc || die
}
multilib_src_compile() {
@@ -370,3 +372,11 @@ multilib_src_install_all() {
find "${ED}" -type f -name '*.la' -delete || die
rm -rf "${ED}"/etc/ || die
}
+
+pkg_postinst() {
+ if use debug; then
+ ewarn "USE=debug has been selected, enabling debug codepaths and making cURL extra verbose."
+ ewarn "Use this _only_ for testing. Debug builds should _not_ be used in anger."
+ ewarn "hic sunt dracones; you have been warned."
+ fi
+}
diff --git a/net-misc/curl/curl-9999.ebuild b/net-misc/curl/curl-9999.ebuild
index b42cca9c5152..94d88b092468 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? (
^^ (
@@ -41,6 +43,7 @@ REQUIRED_USE="
curl_quic_ngtcp2
)
http3
+ ssl
)
ssl? (
^^ (
@@ -50,8 +53,20 @@ REQUIRED_USE="
curl_ssl_rustls
)
)
- curl_quic_openssl? ( openssl )
- curl_quic_ngtcp2? ( gnutls )
+ curl_quic_openssl? (
+ curl_ssl_openssl
+ quic
+ !gnutls
+ !mbedtls
+ !rustls
+ )
+ curl_quic_ngtcp2? (
+ curl_ssl_gnutls
+ quic
+ !mbedtls
+ !openssl
+ !rustls
+ )
curl_ssl_gnutls? ( gnutls )
curl_ssl_mbedtls? ( mbedtls )
curl_ssl_openssl? ( openssl )
@@ -71,9 +86,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}] )
@@ -116,7 +131,7 @@ BDEPEND="
verify-sig? ( sec-keys/openpgp-keys-danielstenberg )
"
-DOCS=( CHANGES README docs/{FEATURES.md,INTERNALS.md,FAQ,BUGS.md,CONTRIBUTE.md} )
+DOCS=( README docs/{FEATURES.md,INTERNALS.md,FAQ,BUGS.md,CONTRIBUTE.md} )
MULTILIB_WRAPPED_HEADERS=(
/usr/include/curl/curlbuild.h
@@ -330,7 +345,7 @@ multilib_src_test() {
# See https://github.com/curl/curl/blob/master/tests/runtests.pl#L5721
# -n: no valgrind (unreliable in sandbox and doesn't work correctly on all arches)
# -v: verbose
- # -a: keep going on failure (so we see everything which breaks, not just 1st test)
+ # -a: keep going on failure (so we see everything that breaks, not just 1st test)
# -k: keep test files after completion
# -am: automake style TAP output
# -p: print logs if test fails
diff --git a/net-misc/curl/files/curl-8.9.1-sigpipe.patch b/net-misc/curl/files/curl-8.9.1-sigpipe.patch
new file mode 100644
index 000000000000..d308fc4420e1
--- /dev/null
+++ b/net-misc/curl/files/curl-8.9.1-sigpipe.patch
@@ -0,0 +1,26 @@
+https://github.com/curl/curl/commit/3eec5afbd0b6377eca893c392569b2faf094d970
+From: Daniel Stenberg <daniel@haxx.se>
+Date: Mon, 5 Aug 2024 00:17:17 +0200
+Subject: [PATCH] sigpipe: init the struct so that first apply ignores
+
+Initializes 'no_signal' to TRUE, so that a call to sigpipe_apply() after
+init ignores the signal (unless CURLOPT_NOSIGNAL) is set.
+
+I have read the existing code multiple times now and I think it gets the
+initial state reversed this missing to ignore.
+
+Regression from 17e6f06ea37136c36d27
+
+Reported-by: Rasmus Thomsen
+Fixes #14344
+Closes #14390
+--- a/lib/sigpipe.h
++++ b/lib/sigpipe.h
+@@ -39,6 +39,7 @@ struct sigpipe_ignore {
+ static void sigpipe_init(struct sigpipe_ignore *ig)
+ {
+ memset(ig, 0, sizeof(*ig));
++ ig->no_signal = TRUE;
+ }
+
+ /*