1
0
mirror of https://github.com/libssh2/libssh2.git synced 2026-01-27 00:18:12 +03:00
Commit Graph

158 Commits

Author SHA1 Message Date
Viktor Szakats
2da28146a0 openssl: make it compatible with wolfSSL built without OPENSSL_ALL
Cherry-picked from #1484
2025-01-31 01:50:15 +01:00
Viktor Szakats
008e82c0f8 ci/GHA: general maintenance, security, add LibreSSL and old OpenSSL jobs with tests
- add Linux jobs with old OpenSSL versions: 1.1.1, 1.1.0, 1.0.2, with
  tests.
  (Meaning we test these again after losing them in AppVeyor CI)
- add LibreSSL Linux job with tests.
- cache most dependency packages built from source.
  (exception: wolfSSL, which would have added too much complexity
  due to the multiple versions, and it's fast to build anyway.)
- change source tarball sources to GitHub for better stability and
  performance.
- move dependency versions to the env.
- set `persist-credentials: false` for checkout steps for security.
- pin actions to hash for security.
- checkout repo later, right before use.
- skip building BoringSSL tests to finish quicker.
- set `fail-fast: false` in the BSD build matrix.
- cmake: move UWP workaround from GHA to `CMakeLists.txt`, making it
  available for everyone.
- list installed packages in OpenBSD job.
- bump BoringSSL, mbedTLS, wolfSSL, OpenSSL.
- bump cross-platform-actions to v0.26.
- bump docker/build-push-action to v6.
- bump actions/upload-artifact to v4.
- bump NetBSD to 10.1.
- drop `--quiet 2` `apt-get` option to keep useful output.
- drop `--no-install-suggests --no-install-recommends` `apt-get`
  options. They are the defaults with the `ubuntu-24.04` image.
- tidy up quotes.

Cherry-picked from #1484

Closes #1528
2025-01-31 01:48:39 +01:00
Viktor Szakats
854cfa8292 build: prepare builds for clang-cl, add cmake ossfuzz support
- cmake: add support to build ossfuzz.
  Enable with `-DBUILD_OSSFUZZ=ON`.
  Also supports `-DLIB_FUZZING_ENGINE=` like autotools does.
- check for `__clang__` when suppressing warnings in source. Necessary
  for clang-cl, which set `__clang__`, but doesn't set `__GNU__`.
- cmake: optimize out 4 picky warning option detections with gcc.
- cmake: bring `-pedantic-error`, `-Wall` use closer to curl's.
- cmake: set `-Wno-language-extension-token` for clang-cl.
- cmake: escape only the necessary `-W` options for clang-cl.
- cmake: apply picky warnings to C++.
- cmake: replace `unset(VAR)` with `set(VAR "")` for init.
- cmake: prefer dash-style MSVC options.
- cmake: simplify `MATCHES` expression.
- cmake: formatting/whitespace.
- ci/GHA: bump `actions/upload-artifact` to v4

Closes #1524
2025-01-30 22:01:49 +01:00
Viktor Szakats
bc78138371 ci/GHA: bump to cygwin v5 (#1512) 2025-01-07 11:09:33 +01:00
Viktor Szakats
389d70bfeb cmake: tidy up -j make option in integration tests (#1509) 2025-01-04 23:24:51 +01:00
Viktor Szakats
91b0e09934 tidy-up: spelling [ci skip] 2024-10-31 21:19:43 +01:00
Viktor Szakats
d01680ca09 ci/GHA: make apg-get install faster, drop a workaround
- always pass `--no-install-suggests --no-install-recommends`
  to `apt-get` to avoid spending time to install packages we don't need.
  (notably in the i386 Linux job.)

- drop an `apt-get` hack that's no longer necessary.

Closes #1476
2024-10-23 01:15:07 +02:00
Viktor Szakats
9d6836e098 ci/GHA: adjust job for Ubuntu 24.04 image
Closes #1470
2024-10-21 11:55:29 +02:00
Viktor Szakats
45064137ac cmake: sync and improve Find modules, add pkg-config native detection
- sync code between Find modules.
- wolfssl: replace `pkg-config` hints with native detection.
- libgcrypt, mbedtls: add `pkg-config`-based native detection.
- libgcrypt: add version detection.
- limit `pkg-config` use for `UNIX`, vcpkg, and non-cross MinGW builds,
  and builds with no manual customization via `*_INCLUDE_DIR` or
  `*_LIBRARY`.
- replace and sync Find module header comments.
- ci: delete manual mbedTLS config that's now redundant.

Based on similar work done in curl.

Second attempt at #1420
Closes #1445
2024-10-05 20:59:27 +02:00
Viktor Szakats
20ad047df5 ci: use Ninja with cmake
Closes #1458
2024-09-27 20:52:09 +02:00
Viktor Szakats
b7ab0faa70 disable DSA by default
Also:
- add `LIBSSH2_DSA_ENABLE` to enable it explicitly.
- test the above option in CI.
- say 'deprecated' in docs and public header.
- disable DSA in the CI server config.
  (OpenSSH 9.8 no longer builds with it by default)
  https://www.openssh.com/txt/release-9.8
  Patch-by: Jose Quaresma
- disable more DSA code when not enabled.

Fixes #1433
Closes #1435
2024-07-30 22:59:02 +02:00
Viktor Szakats
c905bfd27c tidy-up: link updates (#1434) 2024-07-30 19:35:38 +02:00
Marc Hoersken
e4c042f6c2 ci/GHA: revert concurrency and improve permissions
Statuses are per AppVeyor event and commit, not pull-request.
Also align permissions approach with curl, least priviledge.

Partially reverts b08cfbc99f.
2024-07-27 20:50:42 +02:00
Seo Suchan
1628f6cab8 mbedtls: expose mbedtls_pk_load_file() for our use
While it's moved to pk_internal, it won't removed in mbedTLS 3.6 LTS
so it's safe to redeclare it on our side to find it.

This is implementing emergency fix suggested from
2e4c5ec462 (commitcomment-141379351)

Follow-up to e973493f99 #1393
Follow-up to 2e4c5ec462 #1349
Closes #1421
2024-07-13 17:47:53 +02:00
Viktor Szakats
42ef8f3f0b ci/GHA: simplify mbedTLS build hack for autotools (#1425)
Follow-up to e973493f99 #1393
2024-07-13 11:40:07 +02:00
Viktor Szakats
ae04b1b953 ci/GHA: FreeBSD 14.1, actions bump (#1424) 2024-07-12 01:54:26 +02:00
Viktor Szakats
c6d42df5d3 ci/GHA: tidy up casing [ci skip] 2024-07-10 00:29:00 +02:00
Viktor Szakats
70b8bf314c REUSE: upgrade to REUSE.toml
Closes #1419
2024-07-05 15:13:18 +02:00
Viktor Szakats
a5b0fac292 wolfssl: fix EVP_Cipher() use with v5.6.0 and older
Add workaround for the wolfSSL `EVP_Cipher(*p, NULL, NULL, 0)` bug to
make libssh2 work with wolfSSL v5.6.0 and older.

wolfSSL fixed this issue in v5.7.0:
https://github.com/wolfSSL/wolfssl/pull/7143
b0de0a1c95

Without our local workaround:

- v5.3.0 and older fail most tests:
  Ref: https://github.com/libssh2/libssh2/actions/runs/9646827522/job/26604211476#step:17:1263

- v5.4.0, v5.5.x, v5.6.0 fail these:
  ```
  29 - test_read-aes128-cbc (Failed)
  30 - test_read-aes128-ctr (Failed)
  32 - test_read-aes192-cbc (Failed)
  33 - test_read-aes192-ctr (Failed)
  34 - test_read-aes256-cbc (Failed)
  35 - test_read-aes256-ctr (Failed)
  ```
  Ref: https://github.com/libssh2/libssh2/actions/runs/9646827522/job/26604233819#step:17:978

Oddly enough the workaround breaks OpenSSL tests, so only enable it for
the affected wolfSSL versions.

Also add new build-from-source wolfSSL CI job to test the new codepath.

wolfSSL has a build bug where `wolfssl/options.h` and
`wolfssl/version.h` are not copied to the `install` destination with
autotools. With CMake it has a different bug where `wolfcrypt/sp_int.h`
is not copied (with v5.4.0). And another with CMake where `FIPS_mode()`
remains missing (with v5.6.0 and earlier.)

Therefore use CMake with v5.5.4 and a workaround for `FIPS_mode()`.
Another option is autotools with v5.4.0 and a workaround for `install`,
but CMake builds quicker.

Regression-from 3c953c05d6 #797
Fixes #1020
Fixes #1299
Assisted-by: Michael Buckley via #1394
Closes #1394 (another attempt to fix the mentioned wolfSSL bug)
Closes #1407
2024-06-24 17:01:39 +02:00
Viktor Szakats
1c0b07a726 ci/GHA: fix wolfSSL-from-source AES-GCM tests
Turns out these tests:
```
31 - test_read-aes128-gcm@openssh.com (Failed)
36 - test_read-aes256-gcm@openssh.com (Failed)
```
were failing because AES-GCM wasn't enabled in libssh2. This in turn
happened because the `WOLFSSL_AESGCM_STREAM` macro wasn't enabled while
building wolfSSL. Which happened because this macro isn't enabled by
any CMake-level wolfSSL option. Passing it as `CPPFLAGS` fixes it.

This allows enabling tests with wolfSSL 5.7.0.

Follow-up to d4cea53f53 #1408
Closes #1409
2024-06-22 01:56:17 +02:00
Viktor Szakats
d4cea53f53 ci/GHA: add Linux job with latest wolfSSL built from source
After this patch it's possible to run tests with wolfSSL 5.7.0.

wolfSSL 5.7.0 fixes this bug that affects open issues #1020 and #1299:
https://github.com/wolfSSL/wolfssl/pull/7143

`-DWOLFSSL_OPENSSLALL=ON` is necessary for `wolfSSL_FIPS_mode()`

Closes #1408
2024-06-22 00:52:47 +02:00
Viktor Szakats
2c63303384 ci/GHA: tidy up build-from-source steps [ci skip]
- make curl downloads less verbose.

- fix cmake warning:
  ```
  CMake Warning:
    No source or binary directory provided.  Both will be assumed to be the
    same as the current working directory, but note that this warning will
    become a fatal error in future CMake releases.
  ```
  Ref: https://github.com/libssh2/libssh2/actions/runs/9509866494/job/26213472410#step:5:32
2024-06-22 00:29:25 +02:00
Viktor Szakats
dab48398b9 ci/GHA: show configure logs on failure and other tidy-ups
- dump cmake error log on configure failure. (for cmake 3.26 and newer)
- dump `config.log` on autotools configure failure.
- convert specs filename to Windows format before passing to CMake.
- add missing quotes.

Closes #1403
2024-06-05 14:05:03 +02:00
Viktor Szakats
6f3d3bc8ff ci/GHA: bump parallel jobs to nproc+1
Ref: https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners#standard-github-hosted-runners-for-public-repositories

Closes #1402
2024-06-04 23:26:53 +02:00
Viktor Szakats
b8ffa7a56d ci/GHA: show test logs on failure
Closes #1401
2024-05-31 22:34:23 +02:00
Viktor Szakats
50143d5867 ci/GHA: use ubuntu-latest with OmniOS job
It's the same as ubuntu-22.04.

Also update OmniOS package search link.
2024-05-30 12:12:20 +02:00
Viktor Szakats
e44f041805 ci: disable dependency tracking in autotools builds
For better build performance. Dependency tracking causes a build
overhead while compiling to help a subsequent build, but in CI there is
never one and the extra work is discarded.

Closes #1396
2024-05-27 21:41:38 +02:00
Viktor Szakats
e973493f99 mbedtls: fail to compile with v3.6.0 outside CI
A compile-time failure is preferred over an unexpected one at
runtime.

The problem is silenced with a macro in CI and this macro will have
to be added to more platforms when mbedTLS v3.6.0 reaches them.

Follow-up to 2e4c5ec462 #1349
Closes #1393
2024-05-24 19:22:29 +02:00
Viktor Szakats
3b23e039f7 ci/GHA: shell syntax tidy-up
Closes #1390
2024-05-14 14:55:14 +02:00
Viktor Szakats
e980af729f ci/GHA: bump NetBSD/OpenBSD, add NetBSD arm64 job
OpenBSD arm64 jobs were very slow, so skipped that.

Closes #1388
2024-05-11 01:47:29 +02:00
Viktor Szakats
d19b619070 autotools: fix to update LDFLAGS for each detected dependency
autotools lib detection routine failed to extend LDFLAGS for each
detection. This could cause successful detection of a dependency, but
later failing to use it. This did not cause an issue as long as all
dependencies lived under the same prefix, but started breaking on macOS
ARM + Homebrew where this was no longer true for mbedTLS and zlib in
particular.

Follow-up to 844115393b #1381
Follow-up to ae2770de25 #1377
Closes #1384
2024-05-08 23:44:14 +02:00
Viktor Szakats
5953c1f153 ci/GHA: tidy-up wolfSSL autotools config on macOS
Closes #1383
2024-05-08 22:19:54 +02:00
Viktor Szakats
736e3d7d8b ci/GHA: shorter mbedTLS autotools workaround
Follow-up to 844115393b #1381
Closes #1382
2024-05-08 22:13:39 +02:00
Michael Buckley
844115393b ci: fix mbedtls runners on macOS (#1381)
Sets LDFLAGS while configuring the autoconf mbedTLS build for macOS.
2024-05-08 12:23:59 -07:00
Viktor Szakats
ae2770de25 ci/GHA: fix gcrypt with autotools/macOS/Homebrew/ARM64 (#1377)
mbedtls configure fails to detect anything due to this:
```
configure:23101: gcc -o conftest -g -O2 -I/opt/homebrew/include  conftest.c  -lmbedcrypto -lz >&5
ld: library 'mbedcrypto' not found
clang: error: linker command failed with exit code 1 (use -v to see invocation)
```
2024-04-25 21:12:59 +02:00
Viktor Szakats
499b27ae83 ci/GHA: fix verbose option for autotools jobs (#1376)
Also enable verbose for macOS `make` step.
2024-04-25 17:00:51 +02:00
Viktor Szakats
4fa6921413 ci/GHA: dump config.log on failure for macOS autotools jobs (#1375) 2024-04-25 16:29:49 +02:00
Viktor Szakats
0b64b30b81 ci/GHA: fix autoreconf failure on macOS/Homebrew (#1374)
By manually installing `libtool`.

```
autoreconf -fi
  shell: /bin/bash -e {0}
configure.ac:75: error: possibly undefined macro: AC_LIBTOOL_WIN32_DLL
      If this token and others are legitimate, please use m4_pattern_allow.
      See the Autoconf documentation.
configure.ac:76: error: possibly undefined macro: AC_PROG_LIBTOOL
autoreconf: error: /opt/homebrew/Cellar/autoconf/2.72/bin/autoconf failed with exit status: 1
```
Ref: https://github.com/libssh2/libssh2/actions/runs/8833608758/job/24253334557#step:4:1
2024-04-25 15:59:08 +02:00
Viktor Szakats
6128aee0d7 ci/GHA: fixup Homebrew location (for ARM runners) (#1373)
GHA macOS runners became ARM64 machines. Make the Homebrew prefix
dynamic to adapt to these installations.
2024-04-25 15:47:10 +02:00
Viktor Szakats
3f98bfb090 wincng: add to ci/GHA, add ./configure option --enable-ecdsa-wincng
- add `./configure` option `--enable-ecdsa-wincng`

- add WinCNG autotools jobs to GHA.

- enable WinCNG ECDSA in some GHA jobs (both CMake and autotools).

Follow-up to 3e72343737 #1315
Closes #1368
2024-04-14 02:44:38 +00:00
Viktor Szakats
1bfae57b55 ci: enable Unity mode for most CMake builds
Ref: 7129ea9ca8 #1034
Closes #1367
2024-04-14 01:54:56 +00:00
Viktor Szakats
d88b9bcdaf ci: add shellcheck job and script
Add FIXME for OS/400 scripts.

Cherry-picked from #1358
2024-04-10 00:49:55 +00:00
Viktor Szakats
0e458b3781 ci: use a better test timestamp [ci skip]
Mar 27 2024 08:00:00 GMT+0000

Follow-up to 2d765e454d #1360
2024-04-09 14:16:35 +00:00
Viktor Szakats
a86e27e8ae ci: verify build and install from tarball (#1362)
Install verification based on:
28c5ddf13a/scripts/installcheck.sh
2024-04-09 15:17:53 +02:00
Viktor Szakats
7aa6cba038 tidy-up: dir names, command-line [ci skip]
Follow-up to 2d765e454d #1360
2024-04-09 12:53:04 +00:00
Viktor Szakats
2d765e454d ci: add reproducibility test for maketgz (#1360) 2024-04-09 11:47:15 +02:00
Viktor Szakats
fb8ce480df ci/GHA: improve version number in maketgz test
Follow-up to cba7f97506 #1353
2024-04-09 09:14:44 +00:00
Viktor Szakats
cba7f97506 maketgz: set -eu, reproducibility, improve zip, add CI test
- set bash `-eu`.
- fix bash `-eu` issues.
- apply `TZ=UTC` and `LC_ALL=C` for reproducibility.
- sort `.zip` entries for reproducibility.
- zip with `--no-extra` for reproducibliity.
- use maximum zip compression.
- add the gpg sign command-line. Copied from curl.
- add CI test for `maketgz`.

Closes #1353
2024-04-04 16:56:17 +00:00
Viktor Szakats
6f86b196da ci: use Linux runner for BSDs, add arm64 FreeBSD 14 job
- bump cross-platform-actions to 0.23.0.
  Ref: https://github.com/cross-platform-actions/action/releases/tag/v0.23.0

- switch to Linux runners (from macOS) for cross-platform-actions.
  It's significantly faster.

- switch back FreeBSD 14 job to cross-platform-actions.
  Also switch back to default shell.

- add FreeBSD 14 arm64 job.

Closes #1343
2024-03-30 23:45:00 +00:00
Viktor Szakats
dd52300890 ci: use single quotes in yaml [ci skip] 2024-03-30 23:08:57 +00:00