#
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 ...
|
#
e53523fe |
| 11-Sep-2024 |
Viktor Szakats |
CI: move Azure jobs to GHA, fix fallouts, sshserver, runtests tweaks CI: - GHA/windows: enable OpenSSH server, SysInternals `handle`, `impacket`. Skip `impacket` on MSYS2 due
CI: move Azure jobs to GHA, fix fallouts, sshserver, runtests tweaks CI: - GHA/windows: enable OpenSSH server, SysInternals `handle`, `impacket`. Skip `impacket` on MSYS2 due to install failure. Skip OpenSSH server for old/standalone mingw-w64 (building curl without SSH there.) - GHA/windows: make test tool installs a separate step. - GHA/cygwin: enable OpenSSH server. Skip `impacket`: it's compiling for 7 minutes then breaks. Skip `stunnel` due to sluggish test run performance. (This update is unrelated to Azure jobs.) - GHA/linux: migrate Linux jobs from Azure CI. - GHA/linux: migrate scanbuild job from Azure CI. - GHA/linux: enable libssh2 in a job. Also enable valgrind. - CI/windows: enable SSPI in two jobs. - CI/windows: disable zlib in one more job. - CI/windows: improve `if` condition checking GnuTLS. - CI/windows: ignore SFTP/SCP tests as necessary. - universally ignore SCP tests, they fail everywhere. - ignore test 612. - ignore test 613 616 618 with MSYS2 mingw-w64. - ignore test 614 with libssh. - ignore all SFTP with MSYS2 native. - ignore all SFTP with vcpkg with `libssh2[core,zlib]`. - ignore a couple of SFTP tests with MSYS2 mingw-w64. (This matches settings on Azure CI.) - GHA/windows: ignore failing 1451 'Basic SMB request' test for old mingw-w64 7.3.0 (but not for 9.5.0!): ``` 2024-09-11 21:45:59,738 ERROR smbComNegotiate: b'NT LM 0.12\x00' is not in list [...] curl: (7) Could not connect to server [...] FAIL 1451: 'Basic SMB request' SMB ``` Ref: https://github.com/curl/curl/actions/runs/10816280746/job/30007130770#step:13:3546 - CI/Azure: delete, now moved to GHA. sshserver: - sshserver: fix permissions for SSH host key on Windows, allowing sshd to launch. - sshserver: fix initializing config paths with Cygwin/MSYS2 sshd. - sshserver: fix initializing config paths in parallel builds. - sshserver: delete redundant `DenyUsers`. This also opens the way to allow multiple usernames. - sshserver: fix `AllowUsers` for GHA/windows, by allowing the domainless username again. Follow-up to 3ee7c676ec8ef32e3a9cb4d0fb2929a8335d58db #5721 - sshserver: fix `Deprecated option` warnings in `sshd_config`: ``` D:/a/curl/curl/bld/tests/log/2/server/curl_sshd_config line 7: Deprecated option AuthorizedKeysFile2 D:/a/curl/curl/bld/tests/log/2/server/curl_sshd_config line 25: Deprecated option KeyRegenerationInterval D:/a/curl/curl/bld/tests/log/2/server/curl_sshd_config line 35: Deprecated option RhostsRSAAuthentication D:/a/curl/curl/bld/tests/log/2/server/curl_sshd_config line 36: Deprecated option RSAAuthentication D:/a/curl/curl/bld/tests/log/2/server/curl_sshd_config line 37: Deprecated option ServerKeyBits D:/a/curl/curl/bld/tests/log/2/server/curl_sshd_config line 41: Deprecated option UseLogin ``` - sshserver: fix `Deprecated option` warnings in `ssh_config` with Cygwin/MSYS2. - sshserver: fix dumping config files due to the filenames missing their full paths. - sshserver: add workaround to make `logmsg` messages visible. Before this patch they only went to a file and never shown. runtests: - runtests: log details when these Windows commands are called: `handle`, `taskkill`, `tasklist`. - runtests: add documentation links to Windows tools: `handle`, `taskkill`, `tasklist`, `icacls`. - runtests: add `-t` (kill whole tree) option to `taskkill` in `servers.pm`, syncing it with the other `taskkill` call. Follow-up to bc72a78a11764558639131d51fa8e7c81ee1e113 #14488 - runtests: show warning if Sysinternals `handle` tool is missing. - runtests: drop Windows XP Home compatibility `tskill` call. The call was made on all Windows versions. It's possibly overkill to do this, because XP Home is probably rarely used for running curl tests these days. In case it's needed, it'd be better to put it under an explicit option. - runtests: show Perl version and path. Fix/silence fallouts: - unit2603: fix building with disabled HTTP support. - unit2604: silence `-Woverlength-strings` warnings in C89 mode. - test437, test1614: fix to pass with no-IPv6 builds. Closes #14859
show more ...
|
#
5f93cad0 |
| 15-Sep-2024 |
Viktor Szakats |
GHA: replace make with ninja in Cygwin, MSYS2 and mingw-w64 cmake jobs Speed-ups: - cygwin build: 47s -> 29s - cygwin build tests: 3m12 -> 2m32 - MSYS2 native build: 29s -> 16s
GHA: replace make with ninja in Cygwin, MSYS2 and mingw-w64 cmake jobs Speed-ups: - cygwin build: 47s -> 29s - cygwin build tests: 3m12 -> 2m32 - MSYS2 native build: 29s -> 16s - MSYS2 native build tests: 2m24 -> 1m52 - MSYS2/mingw-w64: already had ninja installed and used implicitly. - linux-mingw-w64-cross: 31s -> 25s before: cygwin: https://github.com/curl/curl/actions/runs/10866939355/job/30155134299 windows: https://github.com/curl/curl/actions/runs/10866939361 after: cygwin: https://github.com/curl/curl/actions/runs/10867861215/job/30157121784 windows: https://github.com/curl/curl/actions/runs/10867861208?pr=14914 Closes #14914
show more ...
|
#
d620ec67 |
| 27-Aug-2024 |
Viktor Szakats |
CI: add test timeouts, more cmake build tests, fix VS2010 C warning - GHA/macos: set timeout for test runs. Double the value for autotools to fit torture tests. - GHA/cygwin: reduc
CI: add test timeouts, more cmake build tests, fix VS2010 C warning - GHA/macos: set timeout for test runs. Double the value for autotools to fit torture tests. - GHA/cygwin: reduce test run timeout for autotools. - GHA/cygwin: enable building tests with cmake. - GHA/windows: enable building tests with MSYS cmake. - GHA/windows: enable building tests with MSVC UWP. - appveyor: enable building tests with VS2008 x86 and VS2010 x64. - tests: add workaround compiler warnings when building with VS2010: ``` tests\server\util.c(482): warning C4306: 'type cast' : conversion from 'int' to 'void (__cdecl *)(int)' of greater size tests\server\util.c(486): warning C4306: 'type cast' : conversion from 'int' to 'void (__cdecl *)(int)' of greater size tests\server\util.c(490): warning C4306: 'type cast' : conversion from 'int' to 'void (__cdecl *)(int)' of greater size tests\server\util.c(720): warning C4306: 'type cast' : conversion from 'int' to 'void (__cdecl *)(int)' of greater size tests\server\util.c(726): warning C4306: 'type cast' : conversion from 'int' to 'void (__cdecl *)(int)' of greater size tests\server\util.c(732): warning C4306: 'type cast' : conversion from 'int' to 'void (__cdecl *)(int)' of greater size tests\server\util.c(781): warning C4306: 'type cast' : conversion from 'int' to 'void (__cdecl *)(int)' of greater size tests\server\util.c(785): warning C4306: 'type cast' : conversion from 'int' to 'void (__cdecl *)(int)' of greater size tests\server\util.c(789): warning C4306: 'type cast' : conversion from 'int' to 'void (__cdecl *)(int)' of greater size ``` Ref: https://ci.appveyor.com/project/curlorg/curl/builds/50485633/job/4ujlwxod3cexmn2q#L1535 With this, tests are built in all GHA cygwin/windows jobs. Timeouts avoid long runs with runaway issues, example: https://github.com/curl/curl/actions/runs/10575522173 Closes #14700
show more ...
|
#
f73f6bf9 |
| 22-Aug-2024 |
Viktor Szakats |
GHA: add yamlcheck Uses `yamllint`. Also: - fix warning for existing YAML files: ``` [truthy] truthy value should be one of [false, true] ``` Closes #
GHA: add yamlcheck Uses `yamllint`. Also: - fix warning for existing YAML files: ``` [truthy] truthy value should be one of [false, true] ``` Closes #14650
show more ...
|
#
2d8464c4 |
| 03-Aug-2024 |
Viktor Szakats |
GHA/windows: move Cygwin into its own workflow Cygwin runs stable but slow, while native Windows in the same workflow runs fast but unreliable (hangs). GHA requires all jobs to finish be
GHA/windows: move Cygwin into its own workflow Cygwin runs stable but slow, while native Windows in the same workflow runs fast but unreliable (hangs). GHA requires all jobs to finish before allowing to re-run failed ones. Before this patch this meant waiting for the slow Cygwin jobs to re-run hung native jobs. After this patch Cygwin jobs run in their own workflow, allowing to re-run broken Windows jobs earlier. Follow-up to 0d125287296857fc4a931a0c20d0ffcb1f731807 #14236 Closes #14366
show more ...
|