Commit Graph

481 Commits

Author SHA1 Message Date
Viktor Szakats
210cf7cd9d
GHA/windows: revert enabling SSPI option
Because it reduces test coverage significantly:
```
TESTINFO: "curl has SSPI support" 109 times (64, 65, 67, 68, 69, 70, 72, 81, 88 and 100 more)
```

Follow-up to e53523fef0 #14859
Closes #14947
2024-09-17 18:37:45 +02:00
dependabot[bot]
89de543204
GHA/non-native: bump vmactions/omnios-vm from 1.0.2 to 1.0.6
Bumps [vmactions/omnios-vm](https://github.com/vmactions/omnios-vm) from 1.0.2 to 1.0.6.
- [Release notes](https://github.com/vmactions/omnios-vm/releases)
- [Commits](a61ca1ebaf...2f97978b47)
2024-09-17 02:58:28 +02:00
Viktor Szakats
41290d4371
GHA/windows: fix bad typo in MSVC GnuTLS stunnel condition
Regression from e53523fef0 #14859
2024-09-16 23:49:42 +02:00
Viktor Szakats
8a7efdb876
GHA: misc updates: impacket, timeouts, mingw-w64 32-bit
- NetBSD: enable impacket. Debatable if this hefty package is worth it
  for the single SMB test (1451) run curl uses it for.
  (on the upside, it seems to install instantly on NetBSD)
  It's also a versioned package name that requires active maintenance.
  The unversioned name doesn't work, though that's what the package
  search returns: https://pkgsrc.se/net/py-impacket

- FreeBSD: stop installing impacket deps explicitly.
  They are automatically installed via the impacket package.

- Linux: put time limit on test runs.
  Started hanging yesterday:
  linux: https://github.com/curl/curl/actions/runs/10875011573/job/30172946986#step:41:3731
  awslc: https://github.com/curl/curl/actions/runs/10879782864/job/30185188509
  wolfssl: https://github.com/curl/curl/actions/runs/10879782864/job/30185188509

- distcheck: reduce time limit to 15m (was 30m)
  Linux tests started to hang, so reduce the timeout from 30 minutes
  to 15. These jobs normally take 3 to 6 minutes to finish.
  https://github.com/curl/curl/actions/runs/10879479914

- Windows: add 32-bit MSYS2/mingw-w64 job.
  Follow-up to e53523fef0 #14859

Closes #14929
2024-09-16 15:43:21 +02:00
Viktor Szakats
e53523fef0
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 3ee7c676ec #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 bc72a78a11 #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
2024-09-16 10:00:17 +02:00
Viktor Szakats
0af017d66d
GHA/non-native: install Perl for FreeBSD cmake jobs
It was implicitly installed for autotools jobs. Install it explicitly
for cmake ones.

Closes #14928
2024-09-16 09:44:16 +02:00
Viktor Szakats
71a83b8789
GHA/non-native: enable SFTP/SCP tests on FreeBSD
It's working now. Possibly fixed in the runner env?

Closes #14920
2024-09-16 01:02:55 +02:00
Viktor Szakats
5f93cad086
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
2024-09-15 13:57:21 +02:00
Viktor Szakats
2e76e1f7fc
GHA/non-native: replace make with ninja in cmake jobs
Comparing job times for non-native runners is unreliable, but
a speed-up is expected nonetheless.

Full job times:
- NetBSD amd64: 14m1 -> 13m15
- OpenBSD amd64: 6m14 -> 5m33
- FreeBSD arm64: 6m10 -> 5m32

Example runs:
before: https://github.com/curl/curl/actions/runs/10866939368
after: https://github.com/curl/curl/actions/runs/10870425491?pr=14917

Closes #14917
2024-09-15 13:57:21 +02:00
Viktor Szakats
8f5d73af12
GHA: add valgrind to the job titles using it, and tidy-ups
There is a 4-5x difference in test run times. Make the reason more
obvious by adding valgrind to the job names.

Also:
- tidy up job names.

Closes #14853
2024-09-15 13:57:21 +02:00
Viktor Szakats
c3a7145a4f
GHA/macos: tidy-up
- drop redundant `brew autoconf`.
  It's automatically installed via `automake`.
- whitespace
2024-09-15 13:57:20 +02:00
Tal Regev
65168b8eb9
GHA/windows: use libuv for event-based tests on openssl job
Use libuv for event-based tests on openssl job.

Closes #14868
2024-09-15 13:57:20 +02:00
Tal Regev
09b21e4755
GHA/windows: re-add GnuTLS after upstream fix
Re-add GnuTLS. The fix was in this PR:
https://github.com/microsoft/vcpkg/pull/40739

Follow-up to a5682d9cb9 #14710
Closes #14864
2024-09-15 13:57:20 +02:00
Viktor Szakats
8709404fe9
GHA/macos: make impacket found by tests
Also move impacket installation right before the test run to avoid
spending 10s installing if the build fails.

Closes #14913
2024-09-15 03:12:48 +02:00
Viktor Szakats
c89cc09ab0
GHA/macos: replace make with ninja for cmake builds
Ninja performs better than GNU Make. Also the generation step is a bit
faster. The cost is installing ninja where missing from the image, and
there is no pre-existing package install step. Otherwise the
installation is fast because the tool is tiny.

(It would probably make sense to include ninja on the runner image; it's
a near zero-cost optimization opportunity for all CI jobs using cmake.)

Speed-ups:

Build step: 3s -> 1s.
Build tests step: 37s -> 22s.

before: https://github.com/curl/curl/actions/runs/10865247916/job/30151507582?pr=14911
after: https://github.com/curl/curl/actions/runs/10865301046/job/30151610055?pr=14910

Closes #14910
2024-09-15 03:09:04 +02:00
Viktor Szakats
51fc89965b
GHA/macos: tidy-ups, install impacket for cmake jobs
- install impacket for cmake jobs.

- stop installing autotools for cmake jobs.
  (also saving the extra seconds necessary for impacket install.)

- delete no longer necessary openssl pkg-config patch.

- `brew unlink openssl` unconditionally. This is safe, we no longer need
  it at the default path, and the condition were never met anyway for
  a while now.

- stop installing openssl, it's there on the base image.
  (it was also missed for cmake, but that's okay)

before: https://github.com/curl/curl/actions/runs/10864438947/job/30149718802
after: https://github.com/curl/curl/actions/runs/10865247916/job/30151507582

Closes #14911
2024-09-15 02:34:17 +02:00
Daniel McCarney
f09adc3ad1
vtls/rustls: rustls-ffi 0.14.0 update
* Documentation is updated to describe new required version, and to link
  to the upstream README about cryptography providers.
* GitHub workflow is updated to fetch 0.14.0.
* Breaking changes in`lib/vtls/rustls.c` are addressed:
  * The `rustls_client_config_builder_build()` function now uses an out
    parameter for the built config instead of returning it directly.
    This allows the building process to fail if the default crypto
    provider state isn't appropriate, or another error condition occurs.
  * Default ciphersuites are collected using renamed functions named to
    make it clear the ciphersuites are associated with the default
    crypto provider.
  * Customization of ciphersuites is now done via
    a `rustls_crypto_provider_builder` used to instantiate a
    `rustls_crypto_provider`. The customized provider can then can be
    used with `rustls_client_config_builder_new_custom` in place of
    providing ciphersuites directly.
  * `rustls_connection_get_negotiated_ciphersuite()` now returns the
    ciphersuite ID directly.

Closes #14889
2024-09-13 14:11:49 +02:00
Daniel Stenberg
b29caf0ba2
GHA/macOS: add an -e test
Adds -e to runtests for using the event-based API in the tool.

Closes #14876
2024-09-12 11:26:33 +02:00
Viktor Szakats
813995bb17
GHA/windows: raise test run timeouts
Give more time for recently enabled TLS tests to complete.

Follow-up to bc72a78a11 #14488
Ref: #14849
Closes #14851
2024-09-10 15:55:35 +02:00
Dan Fandrich
b61d6e088e GHA/linux-old: add an autoconf/automake build
This verifies that using older autotools still works. The results of the
autoconf build should end up being identical to the second of the two
cmake builds (the difference in the platform string notwithstanding).

Closes #14816
2024-09-09 10:19:11 -07:00
Daniel Stenberg
88c7182b20
GHA/distcheck: keep upload artifacts for one day only
The uploads are only used as a cache mechanism between jobs to save them
from having to re-run maketgz multiple times, so there is no need to
save the artifact longer than this.

Closes #14793
2024-09-05 23:50:48 +02:00
Daniel Stenberg
5c14d696fe
maketgz: move from / into scripts
Closes #14797
2024-09-05 17:07:41 +02:00
dependabot[bot]
4ea6ff55a0
GHA/distcheck:: bump actions/upload-artifact from 4.3.6 to 4.4.0
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.3.6 to 4.4.0.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](834a144ee9...50769540e7)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Closes #14759
2024-09-05 16:01:08 +02:00
Viktor Szakats
6aa5f25c64
GHA/linux-old: split test step into build and run
To see how much time each takes.

Closes #14791
2024-09-05 12:26:03 +02:00
Aki
a2bcec0ee0
openssl: fix the data race when sharing an SSL session between threads
The SSL_Session object is mutated during connection inside openssl,
and it might not be thread-safe. Besides, according to documentation
of openssl:

```
SSL_SESSION objects keep internal link information about the session
cache list, when being inserted into one SSL_CTX object's session
cache. One SSL_SESSION object, regardless of its reference count,
must therefore only be used with one SSL_CTX object (and the SSL
objects created from this SSL_CTX object).
```
If I understand correctly, it is not safe to share it even in a
single thread.

Instead, serialize the SSL_SESSION before adding it to the cache,
and deserialize it after retrieving it from the cache, so that no
concurrent write to the same object is infeasible.

Also
 - add a ci test for thread sanitizer
 - add a test for sharing ssl sessions concurrently
 - avoid redefining memory functions when not building libcurl, but
   including the soruce in libtest
 - increase the concurrent connections limit in sws

Notice that there are fix for a global data race for openssl which
is not yet release. The fix is cherry pick for the ci test with
thread sanitizer.
d8def79838

Closes #14751
2024-09-02 23:35:44 +02:00
Viktor Szakats
6004f96734
cmake: default CURL_DISABLE_LDAPS to the value of CURL_DISABLE_LDAP
After this patch LDAPS is disabled by default when LDAP is manually
disabled.

This makes it unnecessary to disable them in sync manually just to avoid
a `CMakeLists.txt` warning.

Syncs behavior with `./configure`.

Closes #14758
2024-09-02 21:03:01 +02:00
Viktor Szakats
ad32fb42fb
autotools: settle with option name: --enable-windows-unicode
Bring the option name style in sync with cmake and with other configure
options aiming to enable something unrelated to an optional package.

(I initially named this new option `--with-windows-unicode` within this
release cycle.)

Follow-up to 9e4a2187e7 #14478

Closes #14746
2024-09-01 18:43:28 +02:00
Viktor Szakats
04e3621dce
build: add poll() detection for cross-builds
For cross-builds rely on `_POSIX_C_SOURCE` to decide if `poll()` is
supported, rather than just assuming it isn't.

This may still miss to detect `poll()` support, as seen for example with
Linux MUSL cross-builds.

Also:

- GHA/curl-for-win: enable RISC-V 64 cross-target for Linux MUSL.
  (to test this case with cmake, with a false-negative.)
  The first RISC-V 64 build in curl's CI.

- GHA/curl-for-win: add arm64/intel64 job for Linux glibc.
  (to test this case with cmake, and succeed.)

- cmake: delete unnecessary `#include <sys/time.h>` from non-cross-build
  `poll()` detection snippet.
  Follow-up tp cc8b813765 #14718

Fixes #14714
Closes #14734
2024-08-30 17:14:33 +02:00
renovate[bot]
7c49279aaa
GHA: update github/codeql-action digest to 4dd1613
Closes #14725
2024-08-29 16:53:23 +02:00
Viktor Szakats
a5682d9cb9
GHA/windows: vcpkg GnuTLS started breaking CI, temp drop it
Starting today vcpkg wants to rebuild GnuTLS but fails:
```
error: building shiftmedia-libgnutls:x64-windows failed with: BUILD_FAILED
```
Ref: https://github.com/curl/curl/actions/runs/10594890318/job/29359499149#step:5:144

Temporary solution:
- drop it from the MultiSSL job.
- replace with mbedTLS job. This job still tests libssh and I could
  not find a better place for it right away.

GnuTLS to be restored once it builds again. Possibly when this hash
reaches the GHA `windows-latest` runner:
f5ec6f30ff

Also:
- switch to Debug for the mbedTLS job. Should also work now with
  GnuTLS, once it's back:
  Ref: https://github.com/microsoft/vcpkg/pull/40473

Closes #14710
2024-08-28 17:51:25 +02:00
Viktor Szakats
d620ec6791
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
2024-08-27 23:40:48 +02:00
Viktor Szakats
2625360b5e
configure: fix WinIDN builds targeting old Windows
1. GHA/windows: enable WinIDN in Linux cross-builds.
   (to reveal the issue in CI.)

2. fix compiler warning when building with mingw-w64 supporting
   WinIDN, while targeting pre-Vista Windows, with a `WINVER` set to
   target Vista or newer. (Such was Ubuntu's mingw-w64 with the
   classic-mingw-specific trick in point 3 of this PR.)
   ```
   ../../lib/idn.c:154:23: error: redundant redeclaration of ‘IdnToAscii’ [-Werror=redundant-decls]
     154 | WINBASEAPI int WINAPI IdnToAscii(DWORD dwFlags,
         |                       ^~~~~~~~~~
   In file included from /usr/share/mingw-w64/include/windows.h:73,
                    from /usr/share/mingw-w64/include/winsock2.h:23,
                    from ../../lib/setup-win32.h:91,
                    from ../../lib/curl_setup.h:308,
                    from ../../lib/idn.c:29:
   /usr/share/mingw-w64/include/winnls.h:1075:30: note: previous declaration of ‘IdnToAscii’ was here
    1075 |   WINNORMALIZEAPI int WINAPI IdnToAscii (DWORD dwFlags, LPCWSTR lpUnicodeCharStr, int cchUnicodeChar, LPWSTR lpASCIICharStr, int cchASCIIChar);
         |                              ^~~~~~~~~~
   [...same for IdnToUnicode...]
   ```
   Ref: https://github.com/curl/curl/actions/runs/10542832783/job/29210098553#step:7:89

3. drop `WINVER` override for classic-mingw. curl no longer supports
   building with classic-mingw.
   Reverts 37f1c21cb9 #7581

4. sync `if IdnToUnicode can be linked` detection snippet with the live
   code in `lib/idn.c`. It fixes detection for the scenario in point 2.

5. delete unused `WINIDN_DIR` variable.

Bug: https://github.com/curl/curl/pull/12606#issuecomment-1885381038
Previous abandoned attempt: #12684
Reviewed-by: Jay Satiro
Closes #14680
2024-08-27 23:40:48 +02:00
Dan Fandrich
59b419f1a5 CI: add a script and job to run cmakelint
A number of checks don't match our style or are buggy and so are disabled.

Co-authored-by: Viktor Szakats <vszakats@users.noreply.github.com>
Fixes #14580
Closes #14665
2024-08-27 08:33:44 -07:00
Viktor Szakats
2c9331be46
GHA/macos: drop options no longer necessary
Follow-up to 7673c12929 #14674

Closes #14693
2024-08-26 16:31:46 +02:00
Aki
bc72a78a11
GHA/windows: enable HTTPS tests with stunnel
- install stunnel

Closes #14488
2024-08-26 16:31:30 +02:00
Viktor Szakats
4a0061697e
GHA/configure-vs-cmake: drop disabling dependency tracking [ci skip]
Recently added, but it's not saving anything at the configure stage,
the only stage in this workflow.

Follow-up to aaacd02466 #14678
2024-08-26 16:29:20 +02:00
Viktor Szakats
10873ec5a9
GHA/configure-vs-cmake: delete stray backslash [ci skip] 2024-08-26 12:38:21 +02:00
Viktor Szakats
aaacd02466
GHA/configure-vs-cmake: add Windows build, fix issues
- configure: disable pthreads by default on Windows.
- configure: disable detecting `fseeko()` on Windows.
  (It exists in mingw-w64 2.0.0 and newer, but it's permanently ignored
  in CMake, as this function is never necessary on Windows.)
- extend existing exceptions with their Windows variants.
- `lib/formdata.c`: prioritize `_fseeki64()` over `fseeko()`.
  To reduce the difference between Windows builds, which now all use
  `_fseeki64()`.
- cmake: perm-enable `HAVE_DIRENT_H` and `HAVE_OPENDIR` for mingw-w64,
  to match configure.
  Follow-up to bfe54b0e88 #13137
  This in theory could make the dir listing feature work in mingw-w64
  build, but in my tests (on WINE) it failed at the preceding `open()`
  call.
- cmake: perm-enable `HAVE_STRINGS_H` and `HAVE_UTIME_H` for mingw-w64,
  to match configure. (They are wrappers and make no difference in the build.)

Also:
- configure: sync `USE_MANUAL` macro with cmake, by only setting it for
  `src`. Drop checker exception.
- CI: use `--disable-dependency-tracking` in existing jobs.
- CI: install packages before git checkout, in existing jobs.

Closes #14678
2024-08-26 11:07:58 +02:00
renovate[bot]
5d4d1c712f
GHA: update CI dependencies
- update github/codeql-action digest to 2c779ab
- update awslabs/aws-lc to v1.34.2
- update ngtcp2/nghttp3 to v1.5.0
- update ngtcp2/ngtcp2 to v1.7.0

Closes #14638
Closes #14639
Closes #14675
Closes #14676
2024-08-25 23:39:02 +02:00
Viktor Szakats
4b791dca37
GHA/macos: ignore flaky tests 2041 and 2037
- FAIL 2037: 'simple HTTPS GET with PEM public key pinning' HTTPS, HTTP GET, PEM certificate
  https://github.com/curl/curl/actions/runs/10529314166/job/29176801513?pr=14658

- FAIL 2041: 'simple HTTPS GET with base64-sha256 public key pinning' HTTPS, HTTP GET, PEM certificate
  https://github.com/curl/curl/actions/runs/10529181645/job/29176408976#step:16:4363
  https://github.com/curl/curl/actions/runs/10529019749/job/29175882809#step:13:5235
  https://github.com/curl/curl/actions/runs/10528920874/job/29175559070#step:16:4363
  https://github.com/curl/curl/actions/runs/10528759817/job/29175043048#step:16:4274
  https://github.com/curl/curl/actions/runs/10525250422/job/29163662307#step:16:4366
  https://github.com/curl/curl/actions/runs/10525250422/job/29163662602#step:13:3569

  Happened with cmake, autotools, gcc, clang and various TLS backends.

Follow-up to fa461b4eff #14486

Closes #14667
2024-08-23 21:04:05 +02:00
Viktor Szakats
8aadb8308a
GHA/windows: add Linux -> mingw-w64 cross-build (cmake, autotools)
Also:
- add a line to CMake log output showing the host and target OS and CPU
  when doing cross-builds.
- reduce excessive timeout for `curl -V` steps.

Closes #14661
2024-08-23 18:42:56 +02:00
Viktor Szakats
f73f6bf9f8
GHA: add yamlcheck
Uses `yamllint`.

Also:
- fix warning for existing YAML files:
  ```
  [truthy] truthy value should be one of [false, true]
  ```

Closes #14650
2024-08-23 18:42:55 +02:00
Dan Fandrich
5629bb7cf6 CI: consolidate workflows for source and docs check
A bunch of tiny jobs that run various source or documentation checks are
consolidated into two workflow files: checksrc.yml and checkdocs.yml.
This reduces the proliferation of new files containing one-line checks
and brings those that operate similarly together for better reasoning
about them. The man-examples check is also now running again for the
first time in 7 months.

Various calls to find, xargs and git ls-files are changed where possible
to use NUL line terminators in pipes to avoid issues with oddly-named
files that might find their way into the repo.

Closes #14654
2024-08-23 09:00:08 -07:00
Aki
fa461b4eff
GHA/macos: enable HTTPS tests with stunnel
- Install stunnel.

- Regenerate certificates (as SecureTransport requires a validity period
  less than 398 days).

- Restart server if it is unresponsive.

- Do not hardcode the SHA-256 base64 public pinned key.

- Ignore test 313 as SecureTransport does not support crl file.

- Ignore tests 1631 and 1632 as SecureTransport is not yet able to shut
  down FTP over HTTPS gracefully.

- Add a CMake target for generating certificates.

Closes #14486
2024-08-23 11:06:50 +02:00
Daniel Stenberg
c8c64c882c
GHA: trim markdown headers before proselinting
Allow interface.md to use more exclamation marks.

Closes #14645
2024-08-22 23:45:40 +02:00
Daniel Stenberg
23749bfd04
GHA: add a checksrc job
This job unconditionally runs checksrc on ALL .c and .h files present in
git.

checksrc.pl: fixed to look for ".checksrc" in the same directory from
where it loads the file to check so that it an be invoked like this

Closes #14625
2024-08-22 23:43:52 +02:00
Jan Venekamp
a4152864f8
tests: constrain http pytest to tests/http directory
Running the http pytest had to be done from tests directory or above,
because the repeat argument fixture was defined in tests/conftest.py.
However, the repeat argument is not needed because its functionality
can be provided by pytest-repeat as documented in the test's
README.md. So, removed the pytest_addoption function for the repeat
argument and the pytest_report_header function is moved to
tests/http/conftest.py.

TODO: Remove repeat argument from all tests. As a stopgap, a
one-element list is defined for it for now.

Closes #14611
2024-08-22 11:47:10 +02:00
Viktor Szakats
9fff0742b6
GHA/windows: fix indentation in the MSVC section 2024-08-21 16:13:11 +02:00
Viktor Szakats
576b39b6d0
cmake: drop libssh CONFIG-style detection
Drop `find_package(libssh CONFIG)` detection method in favour of
the Find module that supports both `pkg-config`, and CMake-native
(since #14555) detection.

This aligns `libssh` detection with other dependencies. It makes the
build honor custom configuration via `LIBSSH_INCLUDE_DIR`,
`LIBSSH_LIBRARY`.

Also enable libssh in a GHA/macos cmake job for build coverage.

Fixing:
- curl-for-win requiring a hack to configure libssh:
  4f9acbed92/curl.sh (L255-L263)
- after #14555, GHA/windows gnutls vcpkg job no longer auto-detected
  libssh, due to a regression missing to enable libssh when
  found via `find_package(libssh CONFIG)`.
  Ref: https://github.com/curl/curl/actions/runs/10470138955/job/28994650338

Follow-up to 422696f0a4 #14555

Closes #14614
2024-08-21 10:07:13 +02:00
Viktor Szakats
8e9056f8b1
GHA/macos: enable brotli and zstd in autotools and cmake jobs
They were missing from macOS builds:
https://testclutch.curl.se/static/reports/feature-matrix.html

Closes #14619
2024-08-21 07:11:34 +02:00