From 1551fe56fd6ba43a94509cffc61b6bf854b7ac9f Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Sat, 1 Jun 2024 00:07:06 +0100 Subject: gentoo auto-resync : 01:06:2024 - 00:07:06 --- net-misc/curl/Manifest | 4 +- net-misc/curl/curl-8.8.0-r1.ebuild | 387 +++++++++++++++++++++ net-misc/curl/curl-9999.ebuild | 16 +- .../curl/files/curl-8.8.0-multi_wait-timeout.patch | 75 ++++ 4 files changed, 480 insertions(+), 2 deletions(-) create mode 100644 net-misc/curl/curl-8.8.0-r1.ebuild create mode 100644 net-misc/curl/files/curl-8.8.0-multi_wait-timeout.patch (limited to 'net-misc/curl') diff --git a/net-misc/curl/Manifest b/net-misc/curl/Manifest index ae97cb4fb4f3..85c66045c0d7 100644 --- a/net-misc/curl/Manifest +++ b/net-misc/curl/Manifest @@ -4,6 +4,7 @@ AUX curl-8.7.1-http2-git-clone.patch 14120 BLAKE2B 5bc2c0765ebd400f2e79d0552621c AUX curl-8.7.1-rustls-fixes.patch 1526 BLAKE2B c1ce730bc1d78d9655378a174b32706bc964e07b1b4fde5385212542bf0c85b2adfa8110266410b6d8766bb2ca5c46a58295d7098ab4acb71acb0a5dbd6d5d20 SHA512 7ca3004306595ead6057bbbfa6dcbb5d7b8b7782a7627e5607a916fff8626b4c3bfb2cbac48aa0e65a93b3c4fb0f87a7ee09273f1f9b1eadb9126fbcc4a72ce2 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-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 @@ -13,6 +14,7 @@ DIST curl-8.8.0.tar.xz 2748860 BLAKE2B c14903bad4cbd1752a5335afa6bcc78be1a484692 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 EBUILD curl-8.7.1-r4.ebuild 11267 BLAKE2B 50dba5d100c3fee6b1721a63c059e365a27e02924c514164f13b082f7afabb4afc5aa47a14eb48283701828c834906bcde012530cd60697167a09d615da7df1d SHA512 aa5b768414133e81cdafb774f44c33f14de19c607013f64d83f5e2460285215e1792e738746d8665f2b98ff85ab0d50c03d96d65145ae72967193a34be3aae13 +EBUILD curl-8.8.0-r1.ebuild 11500 BLAKE2B 82e2f840b63d5dcf87d4480a58ed5ba70486a8d779a80c1acd2106fa7710bce2749b9613bbf8d04f4aca6faa8acb735ffc18e355b51e65d4e2f58ef220480295 SHA512 f999143e45a76acada5485dcf2ff6a2d6aa840a95f3768eae67f3eeb1e5ebf2baa4310cd506ab5fb8605e6304d567012a3566a63ff2c2a53641e72a2df18f000 EBUILD curl-8.8.0.ebuild 11117 BLAKE2B d088f434876adfaee0e4b4983c2b9cd047460496260b2a2678581bec7a63bf2e93272159b3e82fbd472df17f062f1b3fe6f81e75a5e2dd1ab588b208a6f6909f SHA512 8419bcac5a90e96a0ae896787ab632d85c29c373365c4084bfa14e414f2e9494f01ad0c812e2fb1b8596ee96f682cc76da2818f3b5cc992801c0a1660f61ac9a -EBUILD curl-9999.ebuild 11041 BLAKE2B 915ee8be6b00ab35c379525a7bf1af14f54b23a470525d309fe94c0d71ca7e9ae4283a902050db120ab64ce48e74bceb643cef969585065ab4d72727d3334fc4 SHA512 8c5980b3831cdddbe8999508ecdd46b26585e8f223238b327bf0cabbe613d56f14172b2761b7cbc1c4a92b9020a2066db08e72320eb70e7594b75768068c5d88 +EBUILD curl-9999.ebuild 11379 BLAKE2B 5f5bba218c26ee3af4fcda9eaf95f78749dfe287f10bf96d7f87366a276356cdbd1ddd91581eb1858195f159a47aec4b4d2acbf1ab8267c8250c60989bd09bf3 SHA512 ca9081fb8fc07cdd5771879ed48562b895c6d7c1623e44ede4c50201e261b9ca4db0c0c42ffe956644df44846d7b95b63f987779b1647329fb9465441a1c4999 MISC metadata.xml 2090 BLAKE2B 54d366aadfc25650c40081ff10eb150bcb9811a29f802c418afce166c384e2bafc999ff7e69ceeb25a96e952d4875d808e8e89240b437741cd363fab46267a25 SHA512 2103a849b67f9a14a85eb769b870e7272bf8f9c78ca579b4271150be01f26787a884614bff874d50f90be99af4a6ecb136510fca2837463e0bc91611ddbeae40 diff --git a/net-misc/curl/curl-8.8.0-r1.ebuild b/net-misc/curl/curl-8.8.0-r1.ebuild new file mode 100644 index 000000000000..b77ba32f5d7e --- /dev/null +++ b/net-misc/curl/curl-8.8.0-r1.ebuild @@ -0,0 +1,387 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +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 + +DESCRIPTION="A Client that groks URLs" +HOMEPAGE="https://curl.se/" + +if [[ ${PV} == 9999 ]]; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/curl/curl.git" +else + SRC_URI=" + 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" +fi + +LICENSE="BSD curl ISC test? ( BSD-4 )" +SLOT="0" +IUSE="+adns +alt-svc brotli debug +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" +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 +REQUIRED_USE=" + ssl? ( + ^^ ( + curl_ssl_gnutls + curl_ssl_mbedtls + curl_ssl_openssl + curl_ssl_rustls + ) + ) + curl_ssl_gnutls? ( gnutls ) + curl_ssl_mbedtls? ( mbedtls ) + curl_ssl_openssl? ( openssl ) + curl_ssl_rustls? ( rustls ) + nghttp3? ( + !openssl + alt-svc ) +" + +# cURL's docs and CI/CD are great resources for confirming supported versions +# particulary for fast-moving targets like HTTP/2 and TCP/2 e.g.: +# - https://github.com/curl/curl/blob/master/docs/INTERNALS.md (core dependencies + minimum versions) +# - https://github.com/curl/curl/blob/master/docs/HTTP3.md (example of a feature that moves quickly) +# - 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. + +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}] ) + 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}] ) + rtmp? ( media-video/rtmpdump[${MULTILIB_USEDEP}] ) + ssh? ( >=net-libs/libssh2-1.0.0[${MULTILIB_USEDEP}] ) + ssl? ( + gnutls? ( + app-misc/ca-certificates + >=net-libs/gnutls-3.1.10:=[static-libs?,${MULTILIB_USEDEP}] + dev-libs/nettle:=[${MULTILIB_USEDEP}] + ) + mbedtls? ( + app-misc/ca-certificates + net-libs/mbedtls:=[${MULTILIB_USEDEP}] + ) + openssl? ( + >=dev-libs/openssl-0.9.7:=[sslv3(-)=,static-libs?,${MULTILIB_USEDEP}] + ) + rustls? ( + >=net-libs/rustls-ffi-0.13.0:=[${MULTILIB_USEDEP}] + ) + ) + zstd? ( app-arch/zstd:=[${MULTILIB_USEDEP}] ) +" + +DEPEND="${RDEPEND}" + +BDEPEND=" + dev-lang/perl + virtual/pkgconfig + test? ( + sys-apps/diffutils + http2? ( >=net-libs/nghttp2-1.15.0:=[utils,${MULTILIB_USEDEP}] ) + nghttp3? ( net-libs/nghttp2:=[utils,${MULTILIB_USEDEP}] ) + ) + verify-sig? ( sec-keys/openpgp-keys-danielstenberg ) +" + +DOCS=( CHANGES README docs/{FEATURES.md,INTERNALS.md,FAQ,BUGS.md,CONTRIBUTE.md} ) + +MULTILIB_WRAPPED_HEADERS=( + /usr/include/curl/curlbuild.h +) + +MULTILIB_CHOST_TOOLS=( + /usr/bin/curl-config +) + +QA_CONFIG_IMPL_DECL_SKIP=( + __builtin_available + closesocket + CloseSocket + getpass_r + ioctlsocket + IoctlSocket + mach_absolute_time + setmode + _fseeki64 + # custom AC_LINK_IFELSE code fails to link even without -Werror + OSSL_QUIC_client_method +) + +PATCHES=( + "${FILESDIR}"/${PN}-prefix-2.patch + "${FILESDIR}"/${PN}-respect-cflags-3.patch + "${FILESDIR}"/${P}-install-manpage.patch + "${FILESDIR}"/${P}-mbedtls.patch + "${FILESDIR}"/${P}-multi_wait-timeout.patch +) + +src_prepare() { + default + + eprefixify curl-config.in + eautoreconf +} + +multilib_src_configure() { + # We make use of the fact that later flags override earlier ones + # So start with all ssl providers off until proven otherwise + # TODO: in the future, we may want to add wolfssl (https://www.wolfssl.com/) + local myconf=() + + myconf+=( --without-ca-fallback --with-ca-bundle="${EPREFIX}"/etc/ssl/certs/ca-certificates.crt ) + if use ssl; then + myconf+=( --without-gnutls --without-mbedtls --without-rustls ) + + if use gnutls; then + multilib_is_native_abi && einfo "SSL provided by gnutls" + myconf+=( --with-gnutls ) + fi + if use mbedtls; then + multilib_is_native_abi && einfo "SSL provided by mbedtls" + myconf+=( --with-mbedtls ) + fi + if use openssl; then + multilib_is_native_abi && einfo "SSL provided by openssl" + myconf+=( --with-ssl --with-ca-path="${EPREFIX}"/etc/ssl/certs ) + fi + if use rustls; then + multilib_is_native_abi && einfo "SSL provided by rustls" + myconf+=( --with-rustls ) + fi + if use curl_ssl_gnutls; then + multilib_is_native_abi && einfo "Default SSL provided by gnutls" + myconf+=( --with-default-ssl-backend=gnutls ) + elif use curl_ssl_mbedtls; then + multilib_is_native_abi && einfo "Default SSL provided by mbedtls" + myconf+=( --with-default-ssl-backend=mbedtls ) + elif use curl_ssl_openssl; then + multilib_is_native_abi && einfo "Default SSL provided by openssl" + myconf+=( --with-default-ssl-backend=openssl ) + elif use curl_ssl_rustls; then + multilib_is_native_abi && einfo "Default SSL provided by rustls" + myconf+=( --with-default-ssl-backend=rustls ) + else + eerror "We can't be here because of REQUIRED_USE." + die "Please file a bug, hit impossible condition w/ USE=ssl handling." + fi + + else + myconf+=( --without-ssl ) + einfo "SSL disabled" + fi + + # These configuration options are organized alphabetically + # within each category. This should make it easier if we + # ever decide to make any of them contingent on USE flags: + # 1) protocols first. To see them all do + # 'grep SUPPORT_PROTOCOLS configure.ac' + # 2) --enable/disable options second. + # 'grep -- --enable configure | grep Check | awk '{ print $4 }' | sort + # 3) --with/without options third. + # grep -- --with configure | grep Check | awk '{ print $4 }' | sort + + myconf+=( + $(use_enable alt-svc) + --enable-basic-auth + --enable-bearer-auth + --enable-digest-auth + --enable-kerberos-auth + --enable-negotiate-auth + --enable-aws + --enable-dict + --disable-ech + --enable-file + $(use_enable ftp) + $(use_enable gopher) + $(use_enable hsts) + --enable-http + $(use_enable imap) + $(use_enable ldap) + $(use_enable ldap ldaps) + --enable-ntlm + $(use_enable pop3) + --enable-rt + --enable-rtsp + $(use_enable samba smb) + $(use_with ssh libssh2) + $(use_enable smtp) + $(use_enable telnet) + $(use_enable tftp) + --enable-tls-srp + $(use_enable adns ares) + --enable-cookies + --enable-dateparse + --enable-dnsshuffle + --enable-doh + --enable-symbol-hiding + --enable-http-auth + --enable-ipv6 + --enable-largefile + --enable-manual + --enable-mime + --enable-netrc + $(use_enable progress-meter) + --enable-proxy + --enable-socketpair + --disable-sspi + $(use_enable static-libs static) + --enable-pthreads + --enable-threaded-resolver + --disable-versioned-symbols + --without-amissl + --without-bearssl + $(use_with brotli) + --with-fish-functions-dir="${EPREFIX}"/usr/share/fish/vendor_completions.d + $(use_with http2 nghttp2) + --without-hyper + $(use_with idn libidn2) + $(use_with kerberos gssapi "${EPREFIX}"/usr) + --without-libgsasl + $(use_with psl libpsl) + --without-msh3 + $(use_with nghttp3) + $(use_with nghttp3 ngtcp2) + --without-quiche + $(use_with rtmp librtmp) + --without-schannel + --without-secure-transport + --without-test-caddy + --without-test-httpd + --without-test-nghttpx + $(use_enable websockets) + --without-winidn + --without-wolfssl + --with-zlib + $(use_with zstd) + --with-zsh-functions-dir="${EPREFIX}"/usr/share/zsh/site-functions + ) + + if use debug; then + myconf+=( + --enable-debug + ) + fi + + if use test && multilib_is_native_abi && ( use http2 || use nghttp3 ); then + myconf+=( + --with-test-nghttpx="${BROOT}/usr/bin/nghttpx" + ) + fi + + if [[ ${CHOST} == *mingw* ]] ; then + myconf+=( + --disable-pthreads + ) + fi + + ECONF_SOURCE="${S}" econf "${myconf[@]}" + + if ! multilib_is_native_abi; then + # Avoid building the client (we just want libcurl for multilib) + sed -i -e '/SUBDIRS/s:src::' Makefile || die + 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() { + default + + if multilib_is_native_abi; then + # Shell completions + ! tc-is-cross-compiler && emake -C scripts + fi +} + +# There is also a pytest harness that tests for bugs in some very specific +# situations; we can rely on upstream for this rather than adding additional test deps. +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) + # -k: keep test files after completion + # -am: automake style TAP output + # -p: print logs if test fails + # Note: if needed, we can skip specific tests. See e.g. Fedora's packaging + # or just read https://github.com/curl/curl/tree/master/tests#run. + # Note: we don't run the testsuite for cross-compilation. + # Upstream recommend 7*nproc as a starting point for parallel tests, but + # this ends up breaking when nproc is huge (like -j80). + # The network sandbox causes tests 241 and 1083 to fail; these are typically skipped + # as most gentoo users don't have an 'ip6-localhost' + multilib_is_native_abi && emake test TFLAGS="-n -v -a -k -am -p -j$((2*$(makeopts_jobs))) !241 !1083" +} + +multilib_src_install() { + emake DESTDIR="${D}" install + + if multilib_is_native_abi; then + # Shell completions + ! tc-is-cross-compiler && emake -C scripts DESTDIR="${D}" install + fi +} + +multilib_src_install_all() { + einstalldocs + 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 17ec871e7e2a..7f560fb74a9b 100644 --- a/net-misc/curl/curl-9999.ebuild +++ b/net-misc/curl/curl-9999.ebuild @@ -26,7 +26,7 @@ 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="+adns +alt-svc brotli debug +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" @@ -279,6 +279,12 @@ multilib_src_configure() { --with-zsh-functions-dir="${EPREFIX}"/usr/share/zsh/site-functions ) + if use debug; then + myconf+=( + --enable-debug + ) + fi + if use test && multilib_is_native_abi && ( use http2 || use nghttp3 ); then myconf+=( --with-test-nghttpx="${BROOT}/usr/bin/nghttpx" @@ -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/files/curl-8.8.0-multi_wait-timeout.patch b/net-misc/curl/files/curl-8.8.0-multi_wait-timeout.patch new file mode 100644 index 000000000000..38d8c1bd3f20 --- /dev/null +++ b/net-misc/curl/files/curl-8.8.0-multi_wait-timeout.patch @@ -0,0 +1,75 @@ +https://github.com/curl/curl/pull/13825 +From: Stefan Eissing +Date: Wed, 29 May 2024 17:13:34 +0200 +Subject: [PATCH] fix multi_wait() timeout handling + +- determine the actual poll timeout *after* all sockets + have been collected. Protocols and connection filters may + install new timeouts during collection. +- add debug logging to test1533 where the mistake was noticed +- refs #13782 +--- a/lib/multi.c ++++ b/lib/multi.c +@@ -1366,13 +1366,6 @@ static CURLMcode multi_wait(struct Curl_multi *multi, + if(timeout_ms < 0) + return CURLM_BAD_FUNCTION_ARGUMENT; + +- /* If the internally desired timeout is actually shorter than requested from +- the outside, then use the shorter time! But only if the internal timer +- is actually larger than -1! */ +- (void)multi_timeout(multi, &timeout_internal); +- if((timeout_internal >= 0) && (timeout_internal < (long)timeout_ms)) +- timeout_ms = (int)timeout_internal; +- + memset(ufds, 0, ufds_len * sizeof(struct pollfd)); + memset(&ps, 0, sizeof(ps)); + +@@ -1476,6 +1469,14 @@ static CURLMcode multi_wait(struct Curl_multi *multi, + #endif + #endif + ++ /* We check the internal timeout *AFTER* we collected all sockets to ++ * poll. Collecting the sockets may install new timers by protocols ++ * and connection filters. ++ * Use the shorter one of the internal and the caller requested timeout. */ ++ (void)multi_timeout(multi, &timeout_internal); ++ if((timeout_internal >= 0) && (timeout_internal < (long)timeout_ms)) ++ timeout_ms = (int)timeout_internal; ++ + #if defined(ENABLE_WAKEUP) && defined(USE_WINSOCK) + if(nfds || use_wakeup) { + #else +--- a/tests/libtest/Makefile.inc ++++ b/tests/libtest/Makefile.inc +@@ -487,7 +487,7 @@ lib1551_SOURCES = lib1551.c $(SUPPORTFILES) + lib1552_SOURCES = lib1552.c $(SUPPORTFILES) $(TESTUTIL) + lib1552_LDADD = $(TESTUTIL_LIBS) + +-lib1553_SOURCES = lib1553.c $(SUPPORTFILES) $(TESTUTIL) ++lib1553_SOURCES = lib1553.c $(SUPPORTFILES) $(TSTTRACE) $(TESTUTIL) + lib1553_LDADD = $(TESTUTIL_LIBS) + + lib1554_SOURCES = lib1554.c $(SUPPORTFILES) +--- a/tests/libtest/lib1553.c ++++ b/tests/libtest/lib1553.c +@@ -24,6 +24,7 @@ + #include "test.h" + + #include "testutil.h" ++#include "testtrace.h" + #include "warnless.h" + #include "memdebug.h" + +@@ -74,6 +75,12 @@ CURLcode test(char *URL) + easy_setopt(curls, CURLOPT_XFERINFOFUNCTION, xferinfo); + easy_setopt(curls, CURLOPT_NOPROGRESS, 1L); + ++ libtest_debug_config.nohex = 1; ++ libtest_debug_config.tracetime = 1; ++ test_setopt(curls, CURLOPT_DEBUGDATA, &libtest_debug_config); ++ easy_setopt(curls, CURLOPT_DEBUGFUNCTION, libtest_debug_cb); ++ easy_setopt(curls, CURLOPT_VERBOSE, 1L); ++ + multi_add_handle(multi, curls); + + multi_perform(multi, &still_running); -- cgit v1.2.3