e1ab01d1 | 20-Aug-2024 |
Viktor Szakats |
cmake: expand `CURL_USE_PKGCONFIG` to non-cross `MINGW` Enable `CURL_USE_PKGCONFIG` by default for more environments: - for `MINGW` targets when not using cross-compilation. - s
cmake: expand `CURL_USE_PKGCONFIG` to non-cross `MINGW` Enable `CURL_USE_PKGCONFIG` by default for more environments: - for `MINGW` targets when not using cross-compilation. - stop restricting vcpkg to MSVC. (this currently unlocks mingw, also unlocked by the update above.) Also: - cache `CURL_USE_PKGCONFIG` in `CURLConfig.cmake`. Suggested-by: Kai Pastor Follow-up to c555ab469d74756b0e3a21f797237d53f9334ce3 #14575 Closes #14658
show more ...
|
c5e3d8ba | 19-Sep-2024 |
Viktor Szakats |
GHA: speed up builds in torture jobs, tidy up - use cmake with ninja. - drop unnecessary packages. Also: - Linux: switch to Ubuntu 20.24 runner. Initially for newer packages
GHA: speed up builds in torture jobs, tidy up - use cmake with ninja. - drop unnecessary packages. Also: - Linux: switch to Ubuntu 20.24 runner. Initially for newer packages, then left it there for variation and as canary. - Linux: make it easier to enable valgrind by dropping `-n` tflags. - Linux: show `curl -V` after build. - Linux: sync job names with macOS. - Linux, macOS: review and adjust job timeouts. - Linux, macOS: sync job configs more: Linux: enable libssh2, macOS: enable brotli, zstd, libssh2. - macOS: prefer `source` (over manual `PATH` editing) for `venv` setup. - macOS: drop redundant `-DENABLE_CURLDEBUG=ON`. - macOS: drop redundant `-n` tflags. There is no valgrind on macOS. - macOS: allow overriding test parallelism per job. - macOS: unlock all disabled tests for torture jobs. Speed-ups (configure/build stage): - Linux !FTP: 83s -> 36s before: https://github.com/curl/curl/actions/runs/10948030198/job/30398134647 after: https://github.com/curl/curl/actions/runs/10961987675/job/30440179978?pr=14972 - Linux FTP: 79s -> 32s before: https://github.com/curl/curl/actions/runs/10948030198/job/30398137070 after: https://github.com/curl/curl/actions/runs/10961987675/job/30440182406?pr=14972 - macOS !FTP: 98s -> 29s before: https://github.com/curl/curl/actions/runs/10960141275/job/30434081412?pr=14972 after: https://github.com/curl/curl/actions/runs/10960141275/job/30434082357?pr=14972 - macOS FTP: 129s -> 29s before: https://github.com/curl/curl/actions/runs/10960141275/job/30434082041?pr=14972 after: https://github.com/curl/curl/actions/runs/10960141275/job/30434083050?pr=14972 Closes #14972
show more ...
|
60c3d044 | 06-Sep-2024 |
Viktor Szakats |
autotools: add support for 'unity' builds, enable in CI Implement the "unity" builds as known from CMake, but for autotools. It's limited to `lib` and `src` (CMake also supports it in `t
autotools: add support for 'unity' builds, enable in CI Implement the "unity" builds as known from CMake, but for autotools. It's limited to `lib` and `src` (CMake also supports it in `tests`). Enable with: `--enable-unity` (disabled by default) Unity builds speed up builds significantly. Cygwin and Windows builds in particular, but the effect is noticeable on most systems. It also allows discovering unity issues with autotools, benefitting also CMake when building the same combination. In CI it makes turnaround times quicker. This closes build performance with CMake. autotools still lags behind because it builds shared and static libcurl in two, separate passes. CMake does it in one. Manpage compilation isn't batched, it is in CMake. After unity and test bundle support the slowest parts of the build are the configuration phase (which is effectively a tedious, non-parallel, compilation and/or linking of 300+ tiny programs. The next bottleneck is compiling individual examples and finally test servers (only slow with autotools). The autotools implementation is slightly less efficient than CMake, because 3 sources are permanently excluded while in CMake this isn't necessary and solved more efficiently while building libtests. There is also no 'unity' support for tests, making them a less efficient also. Enable it in CI for most `configure` jobs. Except in GHA/dist (though it works fine there too), to use the default config there. Also skip for the Linux AWC-LC job where it made builds time a few seconds longer (reason undiscovered.) Autotools test suite builds compared between master -> `--enable-unity`: - GHA/Linux: 32s -> 12s https://github.com/curl/curl/actions/runs/10705668823/job/29681617374 https://github.com/curl/curl/actions/runs/10742978889/job/29796766297 - GHA/macOS: 37s -> 10s https://github.com/curl/curl/actions/runs/10705668813/job/29681632885 https://github.com/curl/curl/actions/runs/10742978699/job/29796768875 - GHA/FreeBSD: 15m25 -> 10m58 (full workflow time, ~qemu) https://github.com/curl/curl/actions/runs/10705668811/job/29681607915 https://github.com/curl/curl/actions/runs/10742978937/job/29796766115 - GHA/Cygwin: 3m32 -> 1m21 https://github.com/curl/curl/actions/runs/10705668809/job/29681609965 https://github.com/curl/curl/actions/runs/10742978645/job/29796756933 - GHA/MSYS2: 2m42 -> 50s https://github.com/curl/curl/actions/runs/10705668808/job/29681621166 https://github.com/curl/curl/actions/runs/10742978662/job/29799739289 - GHA/mingw-w64: 5m32 -> 1m23 https://github.com/curl/curl/actions/runs/10705668808/job/29681628787 https://github.com/curl/curl/actions/runs/10742978662/job/29799741568 Closes #14815
show more ...
|
45202cbb | 14-Sep-2024 |
Viktor Szakats |
cmake: separate target for examples, optimize CI, fix fallouts - Move `docs/examples` builds under a separate target. - Make `BUILD_EXAMPLES` default to `ON`. It means to generate t
cmake: separate target for examples, optimize CI, fix fallouts - Move `docs/examples` builds under a separate target. - Make `BUILD_EXAMPLES` default to `ON`. It means to generate the rules for `docs/examples` by default, but not build them. To build them, an explicit `make curl-examples` (or ninja, etc) command is necessary. This syncs behaviour with autotools, and also how both cmake and autotools are building tests. - GHA: update cmake jobs to use the new way of building examples. - GHA: move examples build step at the end of the job, after building and running tests. This allows to have build and test run results faster, and leave the seldom-changing examples build to the end. Building examples is the slowest build step with no practical way to make them fast. - appveyor: enable building examples in two old-MSVC jobs. - examples: fix examples to build cleanly with old MSVC versions. - GHA/non-native: move example build log under a GHA foldable section. - GHA/windows: move building examples into separate step for Linux cross jobs. Follow-up to dfdd978f7c60224dffe2aac25b436dc0a5cd0186 #13491 Closes #14906
show more ...
|
caefaeca | 20-Sep-2024 |
Viktor Szakats |
runtests: log output improvements - show invocation arguments (tflags) in the log. - show `curl -V` protocols in the log. Closes #14985 |
b2331f3e | 10-Sep-2024 |
Stefan Eissing |
request: on shutdown send, proceed normally on timeout When ending an FTP upload, we shut down the connection gracefully, since the server should be notified we had send all bytes. Mostl
request: on shutdown send, proceed normally on timeout When ending an FTP upload, we shut down the connection gracefully, since the server should be notified we had send all bytes. Mostly, this is a NOP without TLS involved. With TLS, close-notify messages should be exchanged. As reported in #14843, not all servers seem to do that. Since it is the server's responsiblity to check it has received everything, we just log the timeout and proceed as if everything is fine. In the receive direction, we still fail the transfer if the server does not shut down its direction properly. Fixes #14843 Reported-by: Rasmus Melchior Jacobsen Closes #14848
show more ...
|
47d6ec98 | 19-Sep-2024 |
Stefan Eissing |
alt-svc: honor data->state.httpwant When a transfer is set for a speficif HTTP version, only lookup that protocol in the alt-svc mappings. When no speicific version is requested, sca
alt-svc: honor data->state.httpwant When a transfer is set for a speficif HTTP version, only lookup that protocol in the alt-svc mappings. When no speicific version is requested, scan all entries as before. Closes #14966
show more ...
|
433d7303 | 19-Sep-2024 |
Stefan Eissing |
url: connection reuse on h3 connections - When searching for existing connections, interpret the default CURL_HTTP_VERSION_2TLS as "anything goes". This will allow us to reuse HT
url: connection reuse on h3 connections - When searching for existing connections, interpret the default CURL_HTTP_VERSION_2TLS as "anything goes". This will allow us to reuse HTTP/3 connections better - add 'http/1.1' as allowed protocol identifier in Alt-Svc files - add test_02_0[345] for testing protocol selection on provided alt-svc files Fixes #14890 Reported-by: MacKenzie Closes #14966
show more ...
|
c91c37b6 | 20-Sep-2024 |
Daniel Stenberg |
tests: remove all valgrind disble instructions Closes #14983 |
876047d1 | 20-Sep-2024 |
Daniel Stenberg |
libssh2: use the Curl_* memory functions to avoid memdebug This prevents our torture tests from detecting and getting trapped by memory leaks in libssh2. Closes #14984 |
5895b71b | 20-Sep-2024 |
Stefan Eissing |
libssh.c: handle EGAINS during proto-connect correctly The implementation did not check the poll flags when a ssh_connect() EAGAINed. Also the poll check did not allow for both direction
libssh.c: handle EGAINS during proto-connect correctly The implementation did not check the poll flags when a ssh_connect() EAGAINed. Also the poll check did not allow for both directions to be signalled by libssh, which it does. This appeared during CI testing with higher paralellism. Closes #14982
show more ...
|
b20ac93f | 20-Sep-2024 |
Stefan Eissing |
multi.c: make stronger check for paused transfer before asserting With higher parallelism in CI, the ASSERT triggered on pause tests. Strengthen the check. We might want to think about r
multi.c: make stronger check for paused transfer before asserting With higher parallelism in CI, the ASSERT triggered on pause tests. Strengthen the check. We might want to think about removing KEEP_RECV_PAUSE|KEEP_SEND_PAUSE altogether. Closes #14981
show more ...
|
fcbe930e | 20-Sep-2024 |
Daniel Stenberg |
tests/valgrind.pm: fix warnings with no valgrind report to show "readline() on closed filehandle $val at valgrind.pm line 45." Closes #14977 |
df5ad100 | 20-Sep-2024 |
Viktor Szakats |
GHA/linux: fix installing valgrind, libpsl for rustls job, other cleanups Move them from `install_steps` to `install_packages`. Also: - stop installing valgrind for the event-ba
GHA/linux: fix installing valgrind, libpsl for rustls job, other cleanups Move them from `install_steps` to `install_packages`. Also: - stop installing valgrind for the event-based job where valgrind is explicitly disabled with tflags `-n`. - stop installing valgrind for the hyper job. It wasn't enabled (by accident) before, and when actually enabled, it fails to pass tests: ``` TESTFAIL: These test cases failed: 11 25 28 30 36 37 43 45 69 78 88 90 94 129 153 154 155 158 160 170 176 178 187 193 207 217 233 234 243 257 262 276 287 302 309 317 318 330 376 379 388 394 395 398 415 427 440 441 493 497 498 547 548 551 552 555 590 599 644 650 1031 1067 1071 1079 1089 1090 1104 1127 1128 1141 1142 1168 1172 1174 1197 1239 1244 1261 1297 1314 1412 1416 1424 1430 1431 1432 1433 1434 1473 1479 1480 1511 1531 1909 2081 2306 3015 3102 ``` Ref: https://github.com/curl/curl/actions/runs/10957987291/job/30427294361?pr=14979#step:41:50381 Hyper is also scheduled for removal in February 2025. Closes #14979
show more ...
|
bc6f719d | 19-Sep-2024 |
Tal Regev |
GHA/windows: add MSVC vcpkg MSH3 job Refs: #14927 #14932 #14971 Closes #14922 |
dff66196 | 20-Sep-2024 |
Viktor Szakats |
CI: disable dependency tracking in Circle CI jobs Follow-up to 4521eac45aedf7a1d50f70eca5fbdbefdcb09942 #13794 Closes #14975 |
8439007f | 19-Sep-2024 |
Viktor Szakats |
GHA: keep default pkgconf, do not replace with pkg-config on Linux Ubuntu has the `pkgconf` package installed by default that implements the `pkg-config` command. Switch CI `apt` command
GHA: keep default pkgconf, do not replace with pkg-config on Linux Ubuntu has the `pkgconf` package installed by default that implements the `pkg-config` command. Switch CI `apt` commands over to `pkgconf` to avoid replacing it in every job run. Avoids: ``` The following packages will be REMOVED: pkgconf r-base-dev The following NEW packages will be installed: [...] pkg-config [...] ``` https://github.com/curl/curl/actions/runs/10949915766/job/30404126342?pr=14972#step:2:20 Closes #14974
show more ...
|
3434c6b4 | 04-Sep-2024 |
Viktor Szakats |
unit1660: fix unreachable code warning in no-SSL builds Or no-HTTP, no-HSTS builds, also MSH3 builds. CMake, VS2022, Debug, x64, no SSL, Static, Build-only: ``` C:\projects\
unit1660: fix unreachable code warning in no-SSL builds Or no-HTTP, no-HSTS builds, also MSH3 builds. CMake, VS2022, Debug, x64, no SSL, Static, Build-only: ``` C:\projects\curl\tests\unit\unit1660.c(46,1): error C2220: the following warning is treated as an error C:\projects\curl\tests\unit\unit1660.c(46,1): warning C4702: unreachable code ``` Ref: https://ci.appveyor.com/project/curlorg/curl/builds/50531210/job/cjewvo9agavthr3o#L216 Required-by: #14922 Cherry-picked from #14772 Closes #14971
show more ...
|
3efba94f | 02-Sep-2024 |
Viktor Szakats |
cmake: allow building tests in unity mode Makes building tests noticeably faster. Apply changes/fixes/workarounds to make Unity work: - rename test variables to avoid collisions
cmake: allow building tests in unity mode Makes building tests noticeably faster. Apply changes/fixes/workarounds to make Unity work: - rename test variables to avoid collisions or shadowing each other when combined into single units. - add workaround to avoid applying `lib/memdebug.h` overrides to system headers declaring/defining `getaddrinfo()`/`freeaddrinfo()` for `tests/server/resolve.c`. This replaces a previous workaround that worked for that specific source. - rename test macro `CTRL` clashing with Cygwin `sys/ioctl.h`. - add include guard to `test.h`. Also: - exclude `tests/http/clients` which are all single-source. (like `docs/examples`.) Build time improvements for tests: - AppVeyor CI: - MSVC 2008, 2010: 1 minute faster (4m8s -> 2m56s, 3m19s -> 2m24s) - MSVC 2022 arm64: 3.5 minutes faster (10m18s -> 6m48s) before: https://ci.appveyor.com/project/curlorg/curl/builds/50522785 after: https://ci.appveyor.com/project/curlorg/curl/builds/50522942 - GHA: - Cygwin: 1.5 minutes faster (3m13s -> 1m43s) before: https://github.com/curl/curl/actions/runs/10681535327/job/29605384398 after: https://github.com/curl/curl/actions/runs/10680818726/job/29603130637 - Windows: before: https://github.com/curl/curl/actions/runs/10680818713 after: https://github.com/curl/curl/actions/runs/10683850187 - MSYS2, mingw-w64: 1 minute faster - MSVC: 30 seconds faster (3m17s -> 2m48s) - macOS: double speed (39s -> 18s) before: https://github.com/curl/curl/actions/runs/10680818753/job/29603133447 after: https://github.com/curl/curl/actions/runs/10683850174/job/29612914515 - Linux: almost double speed (30/31s -> 18s) before: https://github.com/curl/curl/actions/runs/10681535311/job/29605387156 after: https://github.com/curl/curl/actions/runs/10680818721/job/29603133976 - non-native: no obvious effect. before: https://github.com/curl/curl/actions/runs/10680818722 after: https://github.com/curl/curl/actions/runs/10683850187 - Old Linux: Unity mode not supported by old CMake, no effect. Closes #14765
show more ...
|
aa1a1539 | 06-Sep-2024 |
Viktor Szakats |
lib: fix unity builds with BearSSL, MSH3, Quiche, OmniOS - fix MSH3 static symbol clash. - fix Quiche static symbol clash. - fix local macro clash with BearSSL header. - fix loca
lib: fix unity builds with BearSSL, MSH3, Quiche, OmniOS - fix MSH3 static symbol clash. - fix Quiche static symbol clash. - fix local macro clash with BearSSL header. - fix local macro clash with OmniOS system header. ``` In file included from ../../lib/urldata.h:197, from ../../lib/altsvc.c:32, from libcurlall.c:2: ../../lib/cf-socket.h:55:25: error: expected ':', ',', ';', '}' or '__attribute__' before '.' token 55 | #define sa_addr _sa_ex_u.addr | ^ In file included from ../../lib/urldata.h:197, from ../../lib/altsvc.c:32, from libcurlall.c:2: ../../lib/cf-socket.h:55:25: error: expected ':', ',', ';', '}' or '__attribute__' before '.' token 55 | #define sa_addr _sa_ex_u.addr | ^ ``` Ref: https://github.com/curl/curl/actions/runs/10738314933/job/29781644299?pr=14772#step:3:6115 Discovered while adding support for "unity" builds for autotools. Required-by: #14922 Cherry-picked from #14815 Closes #14932
show more ...
|
895008de | 17-Sep-2024 |
Dan Fandrich |
tests: Only log warnings or worse by default in smbserver There shouldn't be anything displayed during a normal run, but only if server debugging is enabled. Also, set log_file to a magi
tests: Only log warnings or worse by default in smbserver There shouldn't be anything displayed during a normal run, but only if server debugging is enabled. Also, set log_file to a magic value to disable it, otherwise impacket installs its own logger that messes with what we want. Closes #14950
show more ...
|
33472dbc | 19-Sep-2024 |
Dan Fandrich |
runtests.md: Suggest a value for -j for torture tests |
22ba044f | 17-Sep-2024 |
Dan Fandrich |
tests: Fix keyword for test1411 |
54fd903f | 19-Sep-2024 |
Viktor Szakats |
GHA/torture: bump test parallelism to `-j10` - Linux !FTP: 21m43 -> 5m15 - Linux FTP: 14m55 -> 3m34 before: https://github.com/curl/curl/actions/runs/10944468673 after: http
GHA/torture: bump test parallelism to `-j10` - Linux !FTP: 21m43 -> 5m15 - Linux FTP: 14m55 -> 3m34 before: https://github.com/curl/curl/actions/runs/10944468673 after: https://github.com/curl/curl/actions/runs/10945446163 Closes #14970
show more ...
|
cf2f4ca5 | 19-Sep-2024 |
Viktor Szakats |
cmake: sync torture test parallelism with autotools Follow-up to 8ad3597d2dca4209fb19563b0a611a9944fa579b #14960 Closes #14969 |