net-misc/curl: drop 8.19.0, 8.20.0, 8.20.0-r1, 8.21.0

Bug: https://bugs.gentoo.org/971090
Bug: https://bugs.gentoo.org/978006
Signed-off-by: Sam James <sam@gentoo.org>
This commit is contained in:
Sam James
2026-09-07 20:53:47 +01:00
parent a0873cd4ef
commit c241d8c9d1
8 changed files with 0 additions and 1959 deletions

View File

@@ -1,7 +1,3 @@
DIST curl-8.19.0.tar.xz 2787584 BLAKE2B d4a943af9a109893112876784dbe106276317e6cd5a2663f4de143c93abb4e266945fa65b4a5fa842f99240c961b027a1b2492e3e32f5247a91c394895e2b8b0 SHA512 ee97faaf588b255428000599293c47a2f648af11d1a0b7b823db6aec151e2090f5c7b921745ddb2c3818d92b16e0a4c15d7a9b3d1ff45df1f35438504bd16574
DIST curl-8.19.0.tar.xz.asc 488 BLAKE2B 0031029301586546bf2a50e00fdf16042da14ac26c2294d033274ed9cd9303c81c3997935b17b3b4202356c972eeed2b354cb623c790fa3983481587ed2ecf35 SHA512 ea3d4f2f42ec6571340e982868c5a35836eed2b76109b08b90b98023474293ad33a7218da511f153d01de607b735fc039a0733fa09fddd984fd7e2c61ee0446a
DIST curl-8.20.0.tar.xz 2834456 BLAKE2B 5b61a1099212af9b3c18629fd0b6c93881014e7b02ed5171021a2a074a87786ff8f8e94a47c53c3ca83354cfbe74f7d917cae819c97011c0ff9e4ace014e01c2 SHA512 edfa5882aaeefcf2226fe03b19246151c0377c3656f9c8cc385bdaf34565e1354e762005b58780917a6d98039ae34085e4a4bcb44255c77e3b0e1d94090c010b
DIST curl-8.20.0.tar.xz.asc 488 BLAKE2B 918959b650c41f7f938e18a71fe24682d94984b74b0726de822ea84b7202734096350eccc69ce1cf624c97c8ec86a5ba753866c572db4ca4d5f9472b591f860b SHA512 188b7f664ed0cd4b1b0a8eb743a9b05e54fca38dbfe56c38a1591942c64c1c79dc29466745d8ec824513809708b13d9c7ced52b15eb71522da32e8a633a66488
DIST curl-8.21.0-hang.patch.xz 7996 BLAKE2B d14f862bce661b8ff8218ea5504abef9cebaff20be05026c226e50d19e176d8a2633949e39fec2abe006a7a63e94a31318cf37a6e15995a72e12fb352367947b SHA512 6c3c451685d159b79cc42602298a5a0b851019585a8c0ee7f53722b339a3b93abb2ef2aa1693b322a95ea4066d4cb907d80fbeda1ca0fa62a9d9e91d5eb4f39c
DIST curl-8.21.0.tar.xz 2882336 BLAKE2B 230989e586a592b2aee768a1a6d48f1c8247e4d26afd0787a94f45faa9fbebcda5c9a8e2b739fb5a2ada151c13b09a8e2319825e9314fcc894377f24e92d338f SHA512 5f7c646e5a3d4d3d8b8a3675adfa29c266a3148599d510d24f91c82d6ff064bfafce420af01522f8be973019619f3eee5e970398fa79be168b77f697c52bf8e5
DIST curl-8.21.0.tar.xz.asc 488 BLAKE2B 6b61b1e55ff198f2c614dd7c099ffde84e0b22f469c6bd688797333af3b7c83f38da1a819d3acdd5b6a8c24c2d6c4175daabbe20c826d5d112d0258aa30b86bc SHA512 bb860d59a7117b0a484c06be80f305897af2b2f6d6c64b763b20e71073d8c36f74c3de85c1e449e65ead832903369b76ee0afc382932e3d9a1cc7253f00afb69

View File

@@ -1,427 +0,0 @@
# Copyright 1999-2026 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 dot-a 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
if [[ ${P} == *rc* ]]; then
CURL_URI="https://curl.se/rc/"
S="${WORKDIR}/${P//_/-}"
else
CURL_URI="https://curl.se/download/"
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos ~x64-solaris"
fi
SRC_URI="
${CURL_URI}${P//_/-}.tar.xz
verify-sig? ( ${CURL_URI}${P//_/-}.tar.xz.asc )
"
fi
LICENSE="BSD curl ISC test? ( BSD-4 )"
SLOT="0"
IUSE="+adns +alt-svc brotli debug ech +ftp gnutls gopher +hsts +http2 +http3 +httpsrr idn +imap kerberos ldap"
IUSE+=" mbedtls +openssl +pop3 +psl +quic rtmp rustls samba sasl-scram +smtp ssh ssl static-libs test"
IUSE+=" telnet +tftp +websockets zstd"
# These select the default tls implementation / which quic impl to use
IUSE+=" curl_ssl_gnutls curl_ssl_mbedtls +curl_ssl_openssl curl_ssl_rustls"
RESTRICT="!test? ( test )"
# HTTPS RR is technically usable with the threaded resolver, but it still uses c-ares to
# ask for the HTTPS RR record type; if DoH is in use the HTTPS record will be requested
# in addition to A and AAAA records.
# To simplify dependency management in the ebuild we'll require c-ares for HTTPS RR (for now?).
# HTTPS RR in cURL is a dependency for:
# - ECH (requires patched openssl or gnutls currently, enabled with rustls)
# - Fetching the ALPN list which should provide a better HTTP/3 experience.
# 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="
ech? ( rustls )
httpsrr? ( adns )
quic? (
^^ (
openssl
gnutls
)
!mbedtls
!rustls
http3
ssl
)
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 )
http3? ( alt-svc httpsrr quic )
"
# 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/http3-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="
>=virtual/zlib-1.2.5:=[${MULTILIB_USEDEP}]
adns? ( >=net-dns/c-ares-1.16.0:=[${MULTILIB_USEDEP}] )
brotli? ( app-arch/brotli:=[${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}] )
psl? ( net-libs/libpsl[${MULTILIB_USEDEP}] )
quic? (
gnutls? ( >=net-libs/ngtcp2-1.20.0-r1[gnutls,ssl,${MULTILIB_USEDEP}] )
openssl? ( >=net-libs/ngtcp2-1.20.0-r1[openssl,ssl,${MULTILIB_USEDEP}] )
)
rtmp? ( media-video/rtmpdump[${MULTILIB_USEDEP}] )
ssh? ( >=net-libs/libssh2-1.2.8[${MULTILIB_USEDEP}] )
sasl-scram? ( >=net-misc/gsasl-2.2.0[static-libs?,${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:3=[${MULTILIB_USEDEP}]
)
openssl? (
>=dev-libs/openssl-1.0.2:=[static-libs?,${MULTILIB_USEDEP}]
)
rustls? (
>=net-libs/rustls-ffi-0.15.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}] )
http3? ( net-libs/nghttp2:=[utils,${MULTILIB_USEDEP}] )
)
verify-sig? ( sec-keys/openpgp-keys-danielstenberg )
"
DOCS=( README docs/{FEATURES.md,INTERNALS.md,FAQ.md,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-6.patch"
"${FILESDIR}/${PN}-respect-cflags-3.patch"
"${FILESDIR}/${PN}-8.18.0-restore-heimdal.patch"
)
src_prepare() {
default
eprefixify curl-config.in
eautoreconf
}
# Generates TLS-related configure options based on USE flags.
# Outputs options suitable for appending to a configure options array.
_get_curl_tls_configure_opts() {
local tls_opts=()
local backend flag_name
for backend in gnutls mbedtls openssl rustls; do
if [[ "$backend" == "openssl" ]]; then
flag_name="ssl"
tls_opts+=( "--with-ca-path=${EPREFIX}/etc/ssl/certs")
else
flag_name="$backend"
fi
if use "$backend"; then
tls_opts+=( "--with-${flag_name}" )
else
# If a single backend is enabled, 'ssl' is required, openssl is the default / fallback
if ! [[ "$backend" == "openssl" ]]; then
tls_opts+=( "--without-${flag_name}" )
fi
fi
done
if use curl_ssl_gnutls; then
multilib_is_native_abi && einfo "Default TLS backend: gnutls"
tls_opts+=( "--with-default-ssl-backend=gnutls" )
elif use curl_ssl_mbedtls; then
multilib_is_native_abi && einfo "Default TLS backend: mbedtls"
tls_opts+=( "--with-default-ssl-backend=mbedtls" )
elif use curl_ssl_openssl; then
multilib_is_native_abi && einfo "Default TLS backend: openssl"
tls_opts+=( "--with-default-ssl-backend=openssl" )
elif use curl_ssl_rustls; then
multilib_is_native_abi && einfo "Default TLS backend: rustls"
tls_opts+=( "--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
# Explicitly Disable unimplemented backends
tls_opts+=(
--without-amissl
--without-wolfssl
)
printf "%s\n" "${tls_opts[@]}"
}
multilib_src_configure() {
use static-libs && lto-guarantee-fat
# 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
local -a tls_backend_opts
readarray -t tls_backend_opts < <(_get_curl_tls_configure_opts)
myconf+=(
"${tls_backend_opts[@]}"
$(use_with quic ngtcp2)
)
else
myconf+=( --without-ssl )
einfo "SSL disabled"
fi
# These configuration options are organised alphabetically by category/type
# Protocols
# `grep SUPPORT_PROTOCOLS=\" configure.ac | awk '{ print substr($2, 1, length($2)-1)}' | sort`
# Assume that anything omitted (that is not new!) is enabled by default with no deps
myconf+=(
--enable-file
$(use_enable ftp)
$(use_enable gopher)
--enable-http
$(use_enable imap) # Automatic IMAPS if TLS is enabled
$(use_enable ldap ldaps)
$(use_enable ldap)
$(use_enable pop3)
$(use_enable samba smb)
$(use_with ssh libssh2) # enables scp/sftp
$(use_with rtmp librtmp)
--enable-rtsp
$(use_enable smtp)
$(use_enable telnet)
$(use_enable tftp)
$(use_enable websockets)
)
# Keep various 'HTTP-flavoured' options together
myconf+=(
$(use_enable alt-svc)
$(use_enable hsts)
$(use_enable httpsrr)
$(use_with http2 nghttp2)
$(use_with http3 nghttp3)
)
# --enable/disable options
# `grep -- --enable configure | grep Check | awk '{ print $4 }' | sort`
myconf+=(
$(use_enable adns ares)
--enable-aws
--enable-basic-auth
--enable-bearer-auth
--enable-cookies
--enable-dateparse
--enable-dict
--enable-digest-auth
--enable-dnsshuffle
--enable-doh
$(use_enable ech)
--enable-http-auth
--enable-ipv6
--enable-kerberos-auth
--enable-largefile
--enable-manual
--enable-mime
--enable-negotiate-auth
--enable-netrc
--enable-ntlm
--enable-progress-meter
--enable-proxy
--enable-rt
--enable-socketpair
--disable-sspi
$(use_enable static-libs static)
--enable-symbol-hiding
--enable-tls-srp
--disable-versioned-symbols
)
# --with/without options
# `grep -- --with configure | grep Check | awk '{ print $4 }' | sort`
myconf+=(
$(use_with brotli)
--with-fish-functions-dir="${EPREFIX}"/usr/share/fish/vendor_completions.d
$(use_with idn libidn2)
$(use_with kerberos gssapi "${EPREFIX}"/usr)
$(use_with sasl-scram libgsasl)
$(use_with psl libpsl)
--without-quiche
--without-schannel
--without-winidn
--with-zlib
--with-zsh-functions-dir="${EPREFIX}"/usr/share/zsh/site-functions
$(use_with zstd)
)
# Test deps (disabled)
myconf+=(
--without-test-caddy
--without-test-httpd
--without-test-nghttpx
)
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"
)
fi
# Since 8.12.0 adns/c-ares and the threaded resolver are mutually exclusive
# This is in support of some work to enable `httpsrr` to use adns and the rest
# of curl to use the threaded resolver; for us `httpsrr` is conditional on adns.
if use adns; then
myconf+=(
--disable-threaded-resolver
)
else
myconf+=(
--enable-threaded-resolver
)
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
}
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 that 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*$(get_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
use static-libs && strip-lto-bytecode
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
}

View File

@@ -1,433 +0,0 @@
# Copyright 1999-2026 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 dot-a 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
if [[ ${P} == *rc* ]]; then
CURL_URI="https://curl.se/rc/"
S="${WORKDIR}/${P//_/-}"
else
CURL_URI="https://curl.se/download/"
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos ~x64-solaris"
fi
SRC_URI="
${CURL_URI}${P//_/-}.tar.xz
verify-sig? ( ${CURL_URI}${P//_/-}.tar.xz.asc )
"
fi
LICENSE="BSD curl ISC test? ( BSD-4 )"
SLOT="0"
IUSE="+adns +alt-svc brotli debug ech +ftp gnutls gopher +hsts +http2 +http3 +httpsrr idn +imap kerberos ldap"
IUSE+=" mbedtls +openssl +pop3 +psl +quic rustls sasl-scram +smtp ssh ssl static-libs test"
IUSE+=" telnet +tftp +websockets zstd"
# These select the default tls implementation / which quic impl to use
IUSE+=" curl_ssl_gnutls curl_ssl_mbedtls +curl_ssl_openssl curl_ssl_rustls"
RESTRICT="!test? ( test )"
# HTTPS RR is technically usable with the threaded resolver, but it still uses c-ares to
# ask for the HTTPS RR record type; if DoH is in use the HTTPS record will be requested
# in addition to A and AAAA records.
# To simplify dependency management in the ebuild we'll require c-ares for HTTPS RR (for now?).
# HTTPS RR in cURL is a dependency for:
# - ECH (enabled with rustls, ossl 4.0+)
# - Fetching the ALPN list which should provide a better HTTP/3 experience.
# 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="
ech? (
|| (
openssl
rustls
)
)
httpsrr? ( adns )
quic? (
^^ (
openssl
gnutls
)
!mbedtls
!rustls
http3
ssl
)
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 )
http3? ( alt-svc httpsrr quic )
"
# 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/http3-linux.yml (CI/CD for TCP/2)
# - https://curl.se/dev/deprecate.html - good source of deprecation timelines, e.g. for OpenSSL 1.1.1
# 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="
>=virtual/zlib-1.2.5:=[${MULTILIB_USEDEP}]
adns? ( >=net-dns/c-ares-1.16.0:=[${MULTILIB_USEDEP}] )
brotli? ( app-arch/brotli:=[${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}] )
psl? ( net-libs/libpsl[${MULTILIB_USEDEP}] )
quic? (
gnutls? ( >=net-libs/ngtcp2-1.20.0-r1[gnutls,ssl,${MULTILIB_USEDEP}] )
openssl? ( >=net-libs/ngtcp2-1.20.0-r1[openssl,ssl,${MULTILIB_USEDEP}] )
)
ssh? ( >=net-libs/libssh2-1.2.8[${MULTILIB_USEDEP}] )
sasl-scram? ( >=net-misc/gsasl-2.2.0[static-libs?,${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:3=[${MULTILIB_USEDEP}]
)
openssl? (
ech? ( >=dev-libs/openssl-4.0.0_beta1:=[static-libs?,${MULTILIB_USEDEP}] )
>=dev-libs/openssl-3.0.0:=[static-libs?,${MULTILIB_USEDEP}]
)
rustls? (
>=net-libs/rustls-ffi-0.15.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}] )
http3? ( net-libs/nghttp2:=[utils,${MULTILIB_USEDEP}] )
)
verify-sig? ( sec-keys/openpgp-keys-danielstenberg )
"
DOCS=( README docs/{FEATURES.md,INTERNALS.md,FAQ.md,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-6.patch"
"${FILESDIR}/${PN}-respect-cflags-3.patch"
"${FILESDIR}/${P}-cpu-use.patch"
)
src_prepare() {
default
eprefixify curl-config.in
eautoreconf
}
# Generates TLS-related configure options based on USE flags.
# Outputs options suitable for appending to a configure options array.
_get_curl_tls_configure_opts() {
local tls_opts=()
local backend flag_name
for backend in gnutls mbedtls openssl rustls; do
if [[ "$backend" == "openssl" ]]; then
flag_name="ssl"
tls_opts+=( "--with-ca-path=${EPREFIX}/etc/ssl/certs")
else
flag_name="$backend"
fi
if use "$backend"; then
tls_opts+=( "--with-${flag_name}" )
else
# If a single backend is enabled, 'ssl' is required, openssl is the default / fallback
if ! [[ "$backend" == "openssl" ]]; then
tls_opts+=( "--without-${flag_name}" )
fi
fi
done
if use curl_ssl_gnutls; then
multilib_is_native_abi && einfo "Default TLS backend: gnutls"
tls_opts+=( "--with-default-ssl-backend=gnutls" )
elif use curl_ssl_mbedtls; then
multilib_is_native_abi && einfo "Default TLS backend: mbedtls"
tls_opts+=( "--with-default-ssl-backend=mbedtls" )
elif use curl_ssl_openssl; then
multilib_is_native_abi && einfo "Default TLS backend: openssl"
tls_opts+=( "--with-default-ssl-backend=openssl" )
elif use curl_ssl_rustls; then
multilib_is_native_abi && einfo "Default TLS backend: rustls"
tls_opts+=( "--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
# Explicitly Disable unimplemented backends
tls_opts+=(
--without-amissl
--without-wolfssl
)
printf "%s\n" "${tls_opts[@]}"
}
multilib_src_configure() {
use static-libs && lto-guarantee-fat
# 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
local -a tls_backend_opts
readarray -t tls_backend_opts < <(_get_curl_tls_configure_opts)
myconf+=(
"${tls_backend_opts[@]}"
$(use_with quic ngtcp2)
)
else
myconf+=( --without-ssl )
einfo "SSL disabled"
fi
# These configuration options are organised alphabetically by category/type
# Protocols
# `grep SUPPORT_PROTOCOLS=\" configure.ac | awk '{ print substr($2, 1, length($2)-1)}' | sort`
# Assume that anything omitted (that is not new!) is enabled by default with no deps
myconf+=(
--enable-file
$(use_enable ftp)
$(use_enable gopher)
--enable-http
$(use_enable imap) # Automatic IMAPS if TLS is enabled
$(use_enable ldap ldaps)
$(use_enable ldap)
$(use_enable pop3)
--disable-smb # Removed upstream in late 2026
$(use_with ssh libssh2) # enables scp/sftp
--enable-rtsp
$(use_enable smtp)
$(use_enable telnet)
$(use_enable tftp)
$(use_enable websockets)
)
# Keep various 'HTTP-flavoured' options together
myconf+=(
$(use_enable alt-svc)
$(use_enable hsts)
$(use_enable httpsrr)
$(use_with http2 nghttp2)
$(use_with http3 nghttp3)
)
# --enable/disable options
# `grep -- --enable configure | grep Check | awk '{ print $4 }' | sort`
myconf+=(
$(use_enable adns ares)
--enable-aws
--enable-basic-auth
--enable-bearer-auth
--enable-cookies
--enable-dateparse
--enable-dict
--enable-digest-auth
--enable-dnsshuffle
--enable-doh
$(use_enable ech)
--enable-http-auth
--enable-ipv6
--enable-kerberos-auth
--enable-largefile
--enable-manual
--enable-mime
--enable-negotiate-auth
--enable-netrc
--disable-ntlm # To be removed late 2026
--enable-progress-meter
--enable-proxy
--enable-rt
--enable-socketpair
--disable-sspi
$(use_enable static-libs static)
--enable-symbol-hiding
--enable-tls-srp
--disable-versioned-symbols
)
# --with/without options
# `grep -- --with configure | grep Check | awk '{ print $4 }' | sort`
myconf+=(
$(use_with brotli)
--with-fish-functions-dir="${EPREFIX}"/usr/share/fish/vendor_completions.d
$(use_with idn libidn2)
$(use_with kerberos gssapi "${EPREFIX}"/usr)
$(use_with sasl-scram libgsasl)
$(use_with psl libpsl)
--without-quiche
--without-schannel
--without-winidn
--with-zlib
--with-zsh-functions-dir="${EPREFIX}"/usr/share/zsh/site-functions
$(use_with zstd)
)
# Test deps (disabled)
myconf+=(
--without-test-caddy
--without-test-httpd
--without-test-nghttpx
)
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"
)
fi
# Since 8.12.0 adns/c-ares and the threaded resolver are mutually exclusive
# This is in support of some work to enable `httpsrr` to use adns and the rest
# of curl to use the threaded resolver; for us `httpsrr` is conditional on adns.
if use adns; then
myconf+=(
--disable-threaded-resolver
)
else
myconf+=(
--enable-threaded-resolver
)
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
}
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 that breaks, not just 1st test)
# -k: keep test files after completion
# -am: automake style TAP output
# -p: print logs if test fails
# --retry: retry any failing tests up to 3 times; this is a band-aid for timing-dependent flakiness.
# 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*$(get_makeopts_jobs))) --retry=3 !241 !1083"
# TODO: enable python tests (make pytest).
}
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
use static-libs && strip-lto-bytecode
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
}

View File

@@ -1,432 +0,0 @@
# Copyright 1999-2026 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 dot-a 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
if [[ ${P} == *rc* ]]; then
CURL_URI="https://curl.se/rc/"
S="${WORKDIR}/${P//_/-}"
else
CURL_URI="https://curl.se/download/"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos ~x64-solaris"
fi
SRC_URI="
${CURL_URI}${P//_/-}.tar.xz
verify-sig? ( ${CURL_URI}${P//_/-}.tar.xz.asc )
"
fi
LICENSE="BSD curl ISC test? ( BSD-4 )"
SLOT="0"
IUSE="+adns +alt-svc brotli debug ech +ftp gnutls gopher +hsts +http2 +http3 +httpsrr idn +imap kerberos ldap"
IUSE+=" mbedtls +openssl +pop3 +psl +quic rustls sasl-scram +smtp ssh ssl static-libs test"
IUSE+=" telnet +tftp +websockets zstd"
# These select the default tls implementation / which quic impl to use
IUSE+=" curl_ssl_gnutls curl_ssl_mbedtls +curl_ssl_openssl curl_ssl_rustls"
RESTRICT="!test? ( test )"
# HTTPS RR is technically usable with the threaded resolver, but it still uses c-ares to
# ask for the HTTPS RR record type; if DoH is in use the HTTPS record will be requested
# in addition to A and AAAA records.
# To simplify dependency management in the ebuild we'll require c-ares for HTTPS RR (for now?).
# HTTPS RR in cURL is a dependency for:
# - ECH (enabled with rustls, ossl 4.0+)
# - Fetching the ALPN list which should provide a better HTTP/3 experience.
# 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="
ech? (
|| (
openssl
rustls
)
)
httpsrr? ( adns )
quic? (
^^ (
openssl
gnutls
)
!mbedtls
!rustls
http3
ssl
)
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 )
http3? ( alt-svc httpsrr quic )
"
# 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/http3-linux.yml (CI/CD for TCP/2)
# - https://curl.se/dev/deprecate.html - good source of deprecation timelines, e.g. for OpenSSL 1.1.1
# 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="
>=virtual/zlib-1.2.5:=[${MULTILIB_USEDEP}]
adns? ( >=net-dns/c-ares-1.16.0:=[${MULTILIB_USEDEP}] )
brotli? ( app-arch/brotli:=[${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}] )
psl? ( net-libs/libpsl[${MULTILIB_USEDEP}] )
quic? (
gnutls? ( >=net-libs/ngtcp2-1.20.0-r1[gnutls,ssl,${MULTILIB_USEDEP}] )
openssl? ( >=net-libs/ngtcp2-1.20.0-r1[openssl,ssl,${MULTILIB_USEDEP}] )
)
ssh? ( >=net-libs/libssh2-1.2.8[${MULTILIB_USEDEP}] )
sasl-scram? ( >=net-misc/gsasl-2.2.0[static-libs?,${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:3=[${MULTILIB_USEDEP}]
)
openssl? (
ech? ( >=dev-libs/openssl-4.0.0_beta1:=[static-libs?,${MULTILIB_USEDEP}] )
>=dev-libs/openssl-3.0.0:=[static-libs?,${MULTILIB_USEDEP}]
)
rustls? (
>=net-libs/rustls-ffi-0.15.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}] )
http3? ( net-libs/nghttp2:=[utils,${MULTILIB_USEDEP}] )
)
verify-sig? ( sec-keys/openpgp-keys-danielstenberg )
"
DOCS=( README docs/{FEATURES.md,INTERNALS.md,FAQ.md,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-6.patch"
"${FILESDIR}/${PN}-respect-cflags-3.patch"
)
src_prepare() {
default
eprefixify curl-config.in
eautoreconf
}
# Generates TLS-related configure options based on USE flags.
# Outputs options suitable for appending to a configure options array.
_get_curl_tls_configure_opts() {
local tls_opts=()
local backend flag_name
for backend in gnutls mbedtls openssl rustls; do
if [[ "$backend" == "openssl" ]]; then
flag_name="ssl"
tls_opts+=( "--with-ca-path=${EPREFIX}/etc/ssl/certs")
else
flag_name="$backend"
fi
if use "$backend"; then
tls_opts+=( "--with-${flag_name}" )
else
# If a single backend is enabled, 'ssl' is required, openssl is the default / fallback
if ! [[ "$backend" == "openssl" ]]; then
tls_opts+=( "--without-${flag_name}" )
fi
fi
done
if use curl_ssl_gnutls; then
multilib_is_native_abi && einfo "Default TLS backend: gnutls"
tls_opts+=( "--with-default-ssl-backend=gnutls" )
elif use curl_ssl_mbedtls; then
multilib_is_native_abi && einfo "Default TLS backend: mbedtls"
tls_opts+=( "--with-default-ssl-backend=mbedtls" )
elif use curl_ssl_openssl; then
multilib_is_native_abi && einfo "Default TLS backend: openssl"
tls_opts+=( "--with-default-ssl-backend=openssl" )
elif use curl_ssl_rustls; then
multilib_is_native_abi && einfo "Default TLS backend: rustls"
tls_opts+=( "--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
# Explicitly Disable unimplemented backends
tls_opts+=(
--without-amissl
--without-wolfssl
)
printf "%s\n" "${tls_opts[@]}"
}
multilib_src_configure() {
use static-libs && lto-guarantee-fat
# 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
local -a tls_backend_opts
readarray -t tls_backend_opts < <(_get_curl_tls_configure_opts)
myconf+=(
"${tls_backend_opts[@]}"
$(use_with quic ngtcp2)
)
else
myconf+=( --without-ssl )
einfo "SSL disabled"
fi
# These configuration options are organised alphabetically by category/type
# Protocols
# `grep SUPPORT_PROTOCOLS=\" configure.ac | awk '{ print substr($2, 1, length($2)-1)}' | sort`
# Assume that anything omitted (that is not new!) is enabled by default with no deps
myconf+=(
--enable-file
$(use_enable ftp)
$(use_enable gopher)
--enable-http
$(use_enable imap) # Automatic IMAPS if TLS is enabled
$(use_enable ldap ldaps)
$(use_enable ldap)
$(use_enable pop3)
--disable-smb # Removed upstream in late 2026
$(use_with ssh libssh2) # enables scp/sftp
--enable-rtsp
$(use_enable smtp)
$(use_enable telnet)
$(use_enable tftp)
$(use_enable websockets)
)
# Keep various 'HTTP-flavoured' options together
myconf+=(
$(use_enable alt-svc)
$(use_enable hsts)
$(use_enable httpsrr)
$(use_with http2 nghttp2)
$(use_with http3 nghttp3)
)
# --enable/disable options
# `grep -- --enable configure | grep Check | awk '{ print $4 }' | sort`
myconf+=(
$(use_enable adns ares)
--enable-aws
--enable-basic-auth
--enable-bearer-auth
--enable-cookies
--enable-dateparse
--enable-dict
--enable-digest-auth
--enable-dnsshuffle
--enable-doh
$(use_enable ech)
--enable-http-auth
--enable-ipv6
--enable-kerberos-auth
--enable-largefile
--enable-manual
--enable-mime
--enable-negotiate-auth
--enable-netrc
--disable-ntlm # To be removed late 2026
--enable-progress-meter
--enable-proxy
--enable-rt
--enable-socketpair
--disable-sspi
$(use_enable static-libs static)
--enable-symbol-hiding
--enable-tls-srp
--disable-versioned-symbols
)
# --with/without options
# `grep -- --with configure | grep Check | awk '{ print $4 }' | sort`
myconf+=(
$(use_with brotli)
--with-fish-functions-dir="${EPREFIX}"/usr/share/fish/vendor_completions.d
$(use_with idn libidn2)
$(use_with kerberos gssapi "${EPREFIX}"/usr)
$(use_with sasl-scram libgsasl)
$(use_with psl libpsl)
--without-quiche
--without-schannel
--without-winidn
--with-zlib
--with-zsh-functions-dir="${EPREFIX}"/usr/share/zsh/site-functions
$(use_with zstd)
)
# Test deps (disabled)
myconf+=(
--without-test-caddy
--without-test-httpd
--without-test-nghttpx
)
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"
)
fi
# Since 8.12.0 adns/c-ares and the threaded resolver are mutually exclusive
# This is in support of some work to enable `httpsrr` to use adns and the rest
# of curl to use the threaded resolver; for us `httpsrr` is conditional on adns.
if use adns; then
myconf+=(
--disable-threaded-resolver
)
else
myconf+=(
--enable-threaded-resolver
)
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
}
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 that breaks, not just 1st test)
# -k: keep test files after completion
# -am: automake style TAP output
# -p: print logs if test fails
# --retry: retry any failing tests up to 3 times; this is a band-aid for timing-dependent flakiness.
# 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*$(get_makeopts_jobs))) --retry=3 !241 !1083"
# TODO: enable python tests (make pytest).
}
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
use static-libs && strip-lto-bytecode
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
}

View File

@@ -1,434 +0,0 @@
# Copyright 1999-2026 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 dot-a 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
if [[ ${P} == *rc* ]]; then
CURL_URI="https://curl.se/rc/"
S="${WORKDIR}/${P//_/-}"
else
CURL_URI="https://curl.se/download/"
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos ~x64-solaris"
fi
SRC_URI="
${CURL_URI}${P//_/-}.tar.xz
verify-sig? ( ${CURL_URI}${P//_/-}.tar.xz.asc )
"
fi
LICENSE="BSD curl ISC test? ( BSD-4 )"
SLOT="0"
IUSE="+adns +alt-svc brotli debug ech +ftp gnutls gopher +hsts +http2 +http3 +httpsrr idn +imap kerberos ldap"
IUSE+=" mbedtls +openssl +pop3 +psl +quic rustls sasl-scram +smtp ssh ssl static-libs test"
IUSE+=" telnet +tftp +websockets zstd"
# These select the default tls implementation / which quic impl to use
IUSE+=" curl_ssl_gnutls curl_ssl_mbedtls +curl_ssl_openssl curl_ssl_rustls"
RESTRICT="!test? ( test )"
# HTTPS RR is technically usable with the threaded resolver, but it still uses c-ares to
# ask for the HTTPS RR record type; if DoH is in use the HTTPS record will be requested
# in addition to A and AAAA records.
# To simplify dependency management in the ebuild we'll require c-ares for HTTPS RR (for now?).
# HTTPS RR in cURL is a dependency for:
# - ECH (enabled with rustls, ossl 4.0+)
# - Fetching the ALPN list which should provide a better HTTP/3 experience.
# 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="
ech? (
|| (
openssl
rustls
)
)
httpsrr? ( adns )
quic? (
^^ (
openssl
gnutls
)
!mbedtls
!rustls
http3
ssl
)
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 )
http3? ( alt-svc httpsrr quic )
"
# 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/http3-linux.yml (CI/CD for TCP/2)
# - https://curl.se/dev/deprecate.html - good source of deprecation timelines, e.g. for OpenSSL 1.1.1
# 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="
>=virtual/zlib-1.2.5:=[${MULTILIB_USEDEP}]
adns? ( >=net-dns/c-ares-1.16.0:=[${MULTILIB_USEDEP}] )
brotli? ( app-arch/brotli:=[${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}] )
psl? ( net-libs/libpsl[${MULTILIB_USEDEP}] )
quic? (
gnutls? ( >=net-libs/ngtcp2-1.20.0-r1[gnutls,ssl,${MULTILIB_USEDEP}] )
openssl? ( >=net-libs/ngtcp2-1.20.0-r1[openssl,ssl,${MULTILIB_USEDEP}] )
)
ssh? ( >=net-libs/libssh2-1.2.8[${MULTILIB_USEDEP}] )
sasl-scram? ( >=net-misc/gsasl-2.2.0[static-libs?,${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:3=[${MULTILIB_USEDEP}]
)
openssl? (
ech? ( >=dev-libs/openssl-4.0.0_beta1:=[static-libs?,${MULTILIB_USEDEP}] )
>=dev-libs/openssl-3.0.0:=[static-libs?,${MULTILIB_USEDEP}]
)
rustls? (
>=net-libs/rustls-ffi-0.15.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}] )
http3? ( net-libs/nghttp2:=[utils,${MULTILIB_USEDEP}] )
)
verify-sig? ( sec-keys/openpgp-keys-danielstenberg )
"
DOCS=( README docs/{FEATURES.md,INTERNALS.md,FAQ.md,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-6.patch"
"${FILESDIR}/${PN}-respect-cflags-3.patch"
)
src_prepare() {
default
eprefixify curl-config.in
eautoreconf
}
# Generates TLS-related configure options based on USE flags.
# Outputs options suitable for appending to a configure options array.
_get_curl_tls_configure_opts() {
local tls_opts=()
local backend flag_name
for backend in gnutls mbedtls openssl rustls; do
if [[ "$backend" == "openssl" ]]; then
flag_name="ssl"
tls_opts+=( "--with-ca-path=${EPREFIX}/etc/ssl/certs")
else
flag_name="$backend"
fi
if use "$backend"; then
tls_opts+=( "--with-${flag_name}" )
else
# If a single backend is enabled, 'ssl' is required, openssl is the default / fallback
if ! [[ "$backend" == "openssl" ]]; then
tls_opts+=( "--without-${flag_name}" )
fi
fi
done
if use curl_ssl_gnutls; then
multilib_is_native_abi && einfo "Default TLS backend: gnutls"
tls_opts+=( "--with-default-ssl-backend=gnutls" )
elif use curl_ssl_mbedtls; then
multilib_is_native_abi && einfo "Default TLS backend: mbedtls"
tls_opts+=( "--with-default-ssl-backend=mbedtls" )
elif use curl_ssl_openssl; then
multilib_is_native_abi && einfo "Default TLS backend: openssl"
tls_opts+=( "--with-default-ssl-backend=openssl" )
elif use curl_ssl_rustls; then
multilib_is_native_abi && einfo "Default TLS backend: rustls"
tls_opts+=( "--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
# Explicitly Disable unimplemented backends
tls_opts+=(
--without-amissl
--without-wolfssl
)
printf "%s\n" "${tls_opts[@]}"
}
multilib_src_configure() {
use static-libs && lto-guarantee-fat
# 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
local -a tls_backend_opts
readarray -t tls_backend_opts < <(_get_curl_tls_configure_opts)
myconf+=(
"${tls_backend_opts[@]}"
$(use_with quic ngtcp2)
)
else
myconf+=( --without-ssl )
einfo "SSL disabled"
fi
# These configuration options are organised alphabetically by category/type
# Protocols
# `grep SUPPORT_PROTOCOLS=\" configure.ac | awk '{ print substr($2, 1, length($2)-1)}' | sort`
# Assume that anything omitted (that is not new!) is enabled by default with no deps
myconf+=(
--enable-file
$(use_enable ftp)
$(use_enable gopher)
--enable-http
$(use_enable imap) # Automatic IMAPS if TLS is enabled
$(use_enable ldap ldaps)
$(use_enable ldap)
$(use_enable pop3)
--disable-smb # Removed upstream in late 2026
$(use_with ssh libssh2) # enables scp/sftp
--enable-rtsp
$(use_enable smtp)
$(use_enable telnet)
$(use_enable tftp)
$(use_enable websockets)
)
# Keep various 'HTTP-flavoured' options together
myconf+=(
$(use_enable alt-svc)
$(use_enable hsts)
$(use_enable httpsrr)
$(use_with http2 nghttp2)
$(use_with http3 nghttp3)
# TODO: --enable-proxy-http3?
--disable-proxy-http3
)
# --enable/disable options
# `grep -- --enable configure | grep Check | awk '{ print $4 }' | sort`
myconf+=(
$(use_enable adns ares)
--enable-aws
--enable-basic-auth
--enable-bearer-auth
--enable-cookies
--enable-dateparse
--enable-dict
--enable-digest-auth
--enable-dnsshuffle
--enable-doh
$(use_enable ech)
--enable-http-auth
--enable-ipv6
--enable-kerberos-auth
--enable-largefile
--enable-manual
--enable-mime
--enable-negotiate-auth
--enable-netrc
--disable-ntlm # To be removed late 2026
--enable-progress-meter
--enable-proxy
--enable-rt
--enable-socketpair
--disable-sspi
$(use_enable static-libs static)
--enable-symbol-hiding
--enable-tls-srp
--disable-versioned-symbols
)
# --with/without options
# `grep -- --with configure | grep Check | awk '{ print $4 }' | sort`
myconf+=(
$(use_with brotli)
--with-fish-functions-dir="${EPREFIX}"/usr/share/fish/vendor_completions.d
$(use_with idn libidn2)
$(use_with kerberos gssapi "${EPREFIX}"/usr)
$(use_with sasl-scram libgsasl)
$(use_with psl libpsl)
--without-quiche
--without-schannel
--without-winidn
--with-zlib
--with-zsh-functions-dir="${EPREFIX}"/usr/share/zsh/site-functions
$(use_with zstd)
)
# Test deps (disabled)
myconf+=(
--without-test-caddy
--without-test-httpd
--without-test-nghttpx
--without-test-h2o
)
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"
)
fi
# Since 8.12.0 adns/c-ares and the threaded resolver are mutually exclusive
# This is in support of some work to enable `httpsrr` to use adns and the rest
# of curl to use the threaded resolver; for us `httpsrr` is conditional on adns.
if use adns; then
myconf+=(
--disable-threaded-resolver
)
else
myconf+=(
--enable-threaded-resolver
)
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
}
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 that breaks, not just 1st test)
# -am: automake style TAP output
# -p: print logs if test fails
# --retry: retry any failing tests up to 3 times; this is a band-aid for timing-dependent flakiness.
# 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 -am -p -j$((2*$(get_makeopts_jobs))) --retry=3 !241 !1083"
# TODO: enable python tests (make pytest).
}
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
use static-libs && strip-lto-bytecode
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
}

View File

@@ -1,191 +0,0 @@
diff -Naurp curl-8.16.0/CMake/FindGSS.cmake curl-8.16.0_orig/CMake/FindGSS.cmake
--- curl-8.16.0/CMake/FindGSS.cmake 2025-11-11 10:04:08.786293188 +0000
+++ curl-8.16.0/CMake/FindGSS.cmake 2025-11-11 09:54:12.223957480 +0000
@@ -37,6 +37,7 @@
set(_gnu_modname "gss")
set(_mit_modname "mit-krb5-gssapi")
+set(_heimdal_modname "heimdal-gssapi")
include(CheckIncludeFile)
include(CheckIncludeFiles)
@@ -51,7 +52,7 @@ set(_gss_LIBRARY_DIRS "")
if(NOT GSS_ROOT_DIR AND NOT "$ENV{GSS_ROOT_DIR}")
if(CURL_USE_PKGCONFIG)
find_package(PkgConfig QUIET)
- pkg_search_module(_gss ${_gnu_modname} ${_mit_modname})
+ pkg_search_module(_gss ${_gnu_modname} ${_mit_modname} ${_heimdal_modname})
list(APPEND _gss_root_hints "${_gss_PREFIX}")
set(_gss_version "${_gss_VERSION}")
endif()
@@ -139,8 +140,14 @@ if(NOT _gss_FOUND) # Not found by pkg-c
OUTPUT_STRIP_TRAILING_WHITESPACE)
# Older versions may not have the "--vendor" parameter. In this case we just do not care.
- if(NOT _gss_configure_failed AND NOT _gss_vendor MATCHES "Heimdal|heimdal")
- set(_gss_flavour "MIT") # assume a default, should not really matter
+ if(_gss_configure_failed)
+ set(_gss_flavour "Heimdal") # most probably, should not really matter
+ else()
+ if(_gss_vendor MATCHES "Heimdal|heimdal")
+ set(_gss_flavour "Heimdal")
+ else()
+ set(_gss_flavour "MIT")
+ endif()
endif()
else() # Either there is no config script or we are on a platform that does not provide one (Windows?)
@@ -149,30 +156,46 @@ if(NOT _gss_FOUND) # Not found by pkg-c
cmake_push_check_state()
list(APPEND CMAKE_REQUIRED_INCLUDES "${_gss_INCLUDE_DIRS}")
check_include_files("gssapi/gssapi_generic.h;gssapi/gssapi_krb5.h" _gss_have_mit_headers)
- cmake_pop_check_state()
if(_gss_have_mit_headers)
set(_gss_flavour "MIT")
if(WIN32)
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
list(APPEND _gss_libdir_suffixes "lib/AMD64")
set(_gss_libname "gssapi64")
else()
list(APPEND _gss_libdir_suffixes "lib/i386")
set(_gss_libname "gssapi32")
endif()
else()
list(APPEND _gss_libdir_suffixes "lib" "lib64") # those suffixes are not checked for HINTS
set(_gss_libname "gssapi_krb5")
endif()
+ else()
+ # Prevent compiling the header - just check if we can include it
+ list(APPEND CMAKE_REQUIRED_DEFINITIONS "-D__ROKEN_H__")
+ check_include_file("roken.h" _gss_have_roken_h)
+
+ check_include_file("heimdal/roken.h" _gss_have_heimdal_roken_h)
+ if(_gss_have_roken_h OR _gss_have_heimdal_roken_h)
+ set(_gss_flavour "Heimdal")
+ endif()
endif()
+ cmake_pop_check_state()
else()
- find_path(_gss_INCLUDE_DIRS NAMES "gss.h" HINTS ${_gss_root_hints} PATH_SUFFIXES "include")
if(_gss_INCLUDE_DIRS)
- set(_gss_flavour "GNU")
- set(_gss_pc_requires ${_gnu_modname})
- set(_gss_libname "gss")
+ set(_gss_flavour "Heimdal")
+ set(_gss_pc_requires ${_heimdal_modname})
+ set(_gss_libname "libgssapi")
+ else()
+ find_path(_gss_INCLUDE_DIRS NAMES "gss.h" HINTS ${_gss_root_hints} PATH_SUFFIXES "include")
+
+ if(_gss_INCLUDE_DIRS)
+ set(_gss_flavour "GNU")
+ set(_gss_pc_requires ${_gnu_modname})
+ set(_gss_libname "gss")
+ endif()
endif()
endif()
@@ -189,9 +210,6 @@ if(NOT _gss_FOUND) # Not found by pkg-c
find_library(_gss_LIBRARIES NAMES ${_gss_libname} HINTS ${_gss_libdir_hints} PATH_SUFFIXES ${_gss_libdir_suffixes})
endif()
endif()
- if(NOT _gss_flavour)
- message(FATAL_ERROR "GNU or MIT GSS is required")
- endif()
else()
# _gss_MODULE_NAME set since CMake 3.16.
# _pkg_check_modules_pkg_name is undocumented and used as a fallback for CMake <3.16 versions.
@@ -202,15 +226,33 @@ else()
set(_gss_flavour "MIT")
set(_gss_pc_requires ${_mit_modname})
else()
- message(FATAL_ERROR "GNU or MIT GSS is required")
+ set(_gss_flavour "Heimdal")
+ set(_gss_pc_requires ${_heimdal_modname})
endif()
message(STATUS "Found GSS/${_gss_flavour} (via pkg-config): ${_gss_INCLUDE_DIRS} (found version \"${_gss_version}\")")
endif()
set(GSS_VERSION ${_gss_version})
-if(NOT GSS_VERSION)
- if(_gss_flavour STREQUAL "MIT")
+if(_gss_flavour)
+ if(NOT GSS_VERSION AND _gss_flavour STREQUAL "Heimdal")
+ if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+ set(_heimdal_manifest_file "Heimdal.Application.amd64.manifest")
+ else()
+ set(_heimdal_manifest_file "Heimdal.Application.x86.manifest")
+ endif()
+
+ if(EXISTS "${_gss_INCLUDE_DIRS}/${_heimdal_manifest_file}")
+ file(STRINGS "${_gss_INCLUDE_DIRS}/${_heimdal_manifest_file}" _heimdal_version_str
+ REGEX "^.*version=\"[0-9]\\.[^\"]+\".*$")
+
+ string(REGEX MATCH "[0-9]\\.[^\"]+" GSS_VERSION "${_heimdal_version_str}")
+ endif()
+
+ if(NOT GSS_VERSION)
+ set(GSS_VERSION "Heimdal Unknown")
+ endif()
+ elseif(NOT GSS_VERSION AND _gss_flavour STREQUAL "MIT")
if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.24)
cmake_host_system_information(RESULT _mit_version QUERY WINDOWS_REGISTRY
"HKLM/SOFTWARE/MIT/Kerberos/SDK/CurrentVersion" VALUE "VersionString")
@@ -223,7 +339,7 @@ if(NOT GSS_VERSION)
else()
set(GSS_VERSION "MIT Unknown")
endif()
- else() # GNU
+ elseif(NOT GSS_VERSION AND _gss_flavour STREQUAL "GNU")
if(_gss_INCLUDE_DIRS AND EXISTS "${_gss_INCLUDE_DIRS}/gss.h")
set(_version_regex "#[\t ]*define[\t ]+GSS_VERSION[\t ]+\"([^\"]*)\"")
file(STRINGS "${_gss_INCLUDE_DIRS}/gss.h" _version_str REGEX "${_version_regex}")
diff -Naurp curl-8.16.0/configure.ac curl-8.16.0_orig/configure.ac
--- curl-8.16.0/configure.ac 2025-11-11 08:59:46.795915379 +0000
+++ curl-8.16.0/configure.ac 2025-11-11 08:57:58.852575571 +0000
@@ -1860,14 +1860,21 @@ if test x"$want_gss" = xyes; then
gnu_gss=yes
],
[
- dnl not found, check for MIT
+ dnl not found, check Heimdal or MIT
AC_CHECK_HEADERS(
[gssapi/gssapi.h gssapi/gssapi_generic.h gssapi/gssapi_krb5.h],
[],
[not_mit=1])
if test "$not_mit" = "1"; then
- dnl MIT not found
- AC_MSG_ERROR([MIT or GNU GSS library required, but not found])
+ dnl MIT not found, check for Heimdal
+ AC_CHECK_HEADER(gssapi.h,
+ [],
+ [
+ dnl no header found, disabling GSS
+ want_gss=no
+ AC_MSG_WARN(disabling GSS-API support since no header files were found)
+ ]
+ )
fi
]
)
@@ -1877,7 +1884,7 @@ fi
if test "$want_gss" = "yes"; then
AC_DEFINE(HAVE_GSSAPI, 1, [if you have GSS-API libraries])
HAVE_GSSAPI=1
- curl_gss_msg="enabled (MIT Kerberos)"
+ curl_gss_msg="enabled (MIT Kerberos/Heimdal)"
link_pkgconfig=''
if test -n "$gnu_gss"; then
@@ -1956,6 +1963,8 @@ if test x"$want_gss" = xyes; then
if test -n "$link_pkgconfig"; then
if test -n "$gnu_gss"; then
LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE gss"
+ elif test "x$not_mit" = "x1"; then
+ LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE heimdal-gssapi"
else
LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE mit-krb5-gssapi"
fi

View File

@@ -1,37 +0,0 @@
https://bugs.debian.org/1136264
https://curl.se/mail/distros-2026-05/0000.html
https://github.com/curl/curl/commit/2a2104f3cff44bb28bb570a093be52bbeeed8f23
From 2a2104f3cff44bb28bb570a093be52bbeeed8f23 Mon Sep 17 00:00:00 2001
From: Stefan Eissing <stefan@eissing.org>
Date: Mon, 11 May 2026 14:56:04 +0200
Subject: [PATCH] event: fix wakeup consumption
The events on a multi wakeup socketpair were only consumed via
curl_multi_poll()/curl_multi_wait() but not in event based processing on
a curl_multi_socket() call. That led to busy loops as reported in
Fixes #21547
Reported-by: Earnestly on github
Closes #21549
---
lib/multi.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/lib/multi.c b/lib/multi.c
index be32740a7097..5e84133f13fd 100644
--- a/lib/multi.c
+++ b/lib/multi.c
@@ -2703,6 +2703,11 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
Curl_uint32_bset_remove(&multi->dirty, data->mid);
if(data == multi->admin) {
+#ifdef ENABLE_WAKEUP
+ /* Consume any pending wakeup signals before processing.
+ * This is necessary for event based processing. See #21547 */
+ (void)Curl_wakeup_consume(multi->wakeup_pair, TRUE);
+#endif
#ifdef USE_RESOLV_THREADED
Curl_async_thrdd_multi_process(multi);
#endif

View File

@@ -24,7 +24,6 @@
<flag name="pop3">Enable Post Office Protocol 3 support</flag>
<flag name="psl">Enable Public Suffix List (PSL) support. See https://daniel.haxx.se/blog/2024/01/10/psl-in-curl/.</flag>
<flag name="quic">Enable support for QUIC (RFC 9000); a UDP-based protocol intended to replace TCP</flag>
<flag name="rtmp">Enable RTMP Streaming Media support</flag>
<flag name="rustls">Enable Rustls ssl backend</flag>
<flag name="sasl-scram">Enable snupport for additional SASL SCRAM-SHA authentication methods via <pkg>net-misc/gsasl</pkg></flag>
<flag name="smtp">Enable Simple Mail Transfer Protocol support</flag>