curlMinimal: 8.20.0 -> 8.21.0 (#534906)

This commit is contained in:
Martin Weinelt 2026-06-26 19:19:15 +00:00 committed by GitHub
commit 0c2e75f5f9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 26 additions and 52 deletions

View file

@ -1,32 +0,0 @@
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

@ -84,7 +84,7 @@ assert
stdenv.mkDerivation (finalAttrs: {
pname = "curl";
version = "8.20.0";
version = "8.21.0";
src = fetchurl {
urls = [
@ -93,16 +93,9 @@ stdenv.mkDerivation (finalAttrs: {
builtins.replaceStrings [ "." ] [ "_" ] finalAttrs.version
}/curl-${finalAttrs.version}.tar.xz"
];
hash = "sha256-Y/4twUi6DOromSLvg49+XJRicsLni3xZ+rS3nTziuJY=";
hash = "sha256-qhtmpw6s6D3GJFCHRWRsCK5WHeUSq0A63/uTrIf8cuY=";
};
patches = [
# https://github.com/curl/curl/commit/2a2104f3cff44bb28bb570a093be52bbeeed8f23
# According to <https://curl.se/mail/distros-2026-05/0000.html>, this fixes
# a performance regression, causing high CPU usage
./fix-wakeup-consumption.patch
];
# this could be accomplished by updateAutotoolsGnuConfigScriptsHook, but that causes infinite recursion
# necessary for FreeBSD code path in configure
postPatch = ''

View file

@ -3,7 +3,6 @@
buildPythonPackage,
replaceVars,
fetchFromGitHub,
fetchpatch,
setuptools,
wheel,
capnproto,
@ -36,12 +35,6 @@ buildPythonPackage rec {
# other than the builtin schemas (based on quick GitHub code search), so I don't
# think it's worthwhile.
(replaceVars ./include-paths.patch { inherit capnproto; })
(fetchpatch {
url = "https://github.com/capnproto/pycapnp/commit/aa90ab6844df4718f02e2ca4974858d5ab0b079c.patch";
name = "python314-compat.patch";
hash = "sha256-pscOdgPotLZsW0XWyRTJigIDl3uWOizA1W0gQGZHSyg=";
})
];
build-system = [

View file

@ -4,6 +4,7 @@
buildPythonPackage,
isPyPy,
fetchFromGitHub,
fetchpatch2,
curl,
openssl,
bottle,
@ -11,6 +12,7 @@
flaky,
flask,
numpy,
websockets,
setuptools,
}:
@ -28,6 +30,14 @@ buildPythonPackage rec {
hash = "sha256-F40bJ7TYFK2dVkDJGGxl7XV46fKmjwvUYYulcwGL6hk=";
};
patches = [
(fetchpatch2 {
name = "pycurl-curl-8.21.0-ws-support.patch";
url = "https://github.com/pycurl/pycurl/commit/c78fd8aba82e2f8037275063138eaa7706c111af.diff?full_index=1";
hash = "sha256-EBXgGiaMtXTsgJOOrzzZFJ7Q/ofAlc4zuipoEpfdFqU=";
})
];
preConfigure = ''
substituteInPlace setup.py \
--replace-fail '--static-libs' '--libs'
@ -50,6 +60,7 @@ buildPythonPackage rec {
flaky
flask
numpy
websockets
pytestCheckHook
];

View file

@ -39,6 +39,7 @@ assert lib.assertMsg (
darwin,
doxygen,
editline,
fetchpatch2,
flex,
git,
gtest,
@ -127,16 +128,24 @@ let
substitute $inputPath $out --replace-fail @deps@ "$(cat ${deps})"
'';
# https://github.com/NixOS/nixpkgs/pull/525953 backported a performance patch
# that /somehow/ breaks Lix unit tests.
# FIXME revert when the patch is gone in curl drv
# curl 8.21.0 /somehow/ breaks Lix unit tests.
# See https://github.com/NixOS/nixpkgs/issues/534713
# FIXME remove once fixed
curl-fixed = curl.overrideAttrs (
{
patches ? [ ],
...
}:
{
patches = lib.filter (patch: !lib.strings.hasSuffix "fix-wakeup-consumption.patch" patch) patches;
patches = patches ++ [
# See https://github.com/curl/curl/commit/2a2104f3cff44bb28bb570a093be52bbeeed8f23
(fetchpatch2 {
name = "fix-wakeup-consumption-revert.patch";
url = "https://github.com/curl/curl/commit/2a2104f3cff44bb28bb570a093be52bbeeed8f23.patch";
hash = "sha256-dkwr1ZaR7XB408JxeIKhuHxJrlwf3J01jL6lnOLXo1I=";
revert = true;
})
];
}
);
in