Skip to content

ci: Update dependency ngtcp2/ngtcp2 to v1.14.0#18022

Closed
renovate[bot] wants to merge 1 commit intomasterfrom
renovate/ngtcp2-ngtcp2-1.x
Closed

ci: Update dependency ngtcp2/ngtcp2 to v1.14.0#18022
renovate[bot] wants to merge 1 commit intomasterfrom
renovate/ngtcp2-ngtcp2-1.x

Conversation

@renovate
Copy link
Copy Markdown
Contributor

@renovate renovate bot commented Jul 25, 2025

This PR contains the following updates:

Package Update Change
ngtcp2/ngtcp2 minor 1.13.0 -> 1.14.0

Release Notes

ngtcp2/ngtcp2 (ngtcp2/ngtcp2)

v1.14.0: ngtcp2 v1.14.0

Compare Source

What's Changed

New Contributors

Full Changelog: ngtcp2/ngtcp2@v1.13.0...v1.14.0


Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate bot added the CI Continuous Integration label Jul 25, 2025
@vszakats
Copy link
Copy Markdown
Member

vszakats commented Jul 25, 2025

Failure is triggered by this ngtcp2 commit:
ngtcp2/ngtcp2#1689
ngtcp2/ngtcp2@062f70e

All pkg-config dependencies, including gnutls, seem to be present.
Also listed by pkg-config --list-all. But, pkg-config --exists gnutls fails.
libngtcp2_crypto_gnutls.pc is there, in PKG_CONFIG_PATH.

checking for ngtcp2_conn_client_new_versioned in -lngtcp2... yes
checking for ngtcp2/ngtcp2.h... yes
configure: Added /home/runner/ngtcp2/build/lib to CURL_LIBRARY_PATH
checking for pkg-config... (cached) /usr/bin/pkg-config
checking for libngtcp2_crypto_gnutls options with pkg-config... no
configure: error: --with-ngtcp2 was specified but could not find ngtcp2_crypto_gnutls pkg-config file.

https://github.com/curl/curl/actions/runs/16532686608/job/46761392076?pr=18028#step:14:605

So far the only solution was to delete the Require: gnutls line from
libngtcp2_crypto_gnutls.pc. Changing it to Require.private: gnutls
also did not help.

Doing tests over at #18028.

@vszakats vszakats closed this in 9950066 Jul 26, 2025
@renovate renovate bot deleted the renovate/ngtcp2-ngtcp2-1.x branch July 26, 2025 11:45
vszakats added a commit to vszakats/curl that referenced this pull request Mar 16, 2026
To aid debugging cases when dependency detection acts unexpectedly.
Sprung from spending days trying to figure out behavior of ngtcp2 crypto
modules and their dependencies.

You can enable via by setting env `CURL_TRACE_PKG_CONFIG` to a non-empty
value. When enabled detection details are logged for both successful and
unsuccessful detections. Logging of unsuccessful ones is automatically
enabled when `CURL_CI` env is set, which is the case for all CI jobs.

It works by asking for `--debug` output and grepping for lines that seem
useful for this specific purpose. Output is different for classic
pkg-config and pkgconf, and may depending on tool version.

If there is a built-in feature like this in classic pkg-config or
pkgconf, I could not find it.

Also:
- GHA/http3-linux: set `CURL_TRACE_PKG_CONFIG` to log detection details.
  H3 builds are a recurring hot-spot for hard-to-debug issues.

Ref: curl#20920
Follow-up to 3c64ffa curl#18415 curl#18188
Follow-up to 9950066 curl#18028 curl#18022

Cherry-picked from curl#20926

Closes curl#20926
vszakats added a commit that referenced this pull request Mar 16, 2026
To aid debugging cases when dependency detection acts unexpectedly.
Sprung from spending days trying to figure out behavior of ngtcp2 crypto
modules and their dependencies.

You can enable by setting env `CURL_TRACE_PKG_CONFIG` to a non-empty
value. When enabled, details are logged for both successful and
unsuccessful detections. Logging of unsuccessful ones is automatically
enabled when `CURL_CI` env is set, which is the case for all CI jobs.

It works by asking for `--debug` output and grepping for lines that seem
useful for this purpose. Output is different for classic pkg-config and
pkgconf, and may depending on tool version. Also append `--print-errors`
output if any.

Examples (with pkgconf):

Fail, before:
```
checking for libngtcp2_crypto_boringssl options with pkg-config... no
configure: error: --with-ngtcp2 was specified but could not find ngtcp2_crypto_boringssl pkg-config file.
```

Fail, after:
```
checking for libngtcp2_crypto_boringssl options with pkg-config... no
configure: pkg-config --exists libngtcp2_crypto_boringssl trace:
---- begin
trying path: /home/runner/nghttp3/build/lib/pkgconfig for libngtcp2_crypto_boringssl
trying path: /home/runner/ngtcp2-boringssl/build/lib/pkgconfig for libngtcp2_crypto_boringssl
trying path: /home/runner/nghttp3/build/lib/pkgconfig for libngtcp2
trying path: /home/runner/ngtcp2-boringssl/build/lib/pkgconfig for libngtcp2
trying path: /home/runner/nghttp3/build/lib/pkgconfig for openssl
trying path: /home/runner/ngtcp2-boringssl/build/lib/pkgconfig for openssl
trying path: /home/runner/nghttp2/build/lib/pkgconfig for openssl
==== error:
Package openssl was not found in the pkg-config search path.
Perhaps you should add the directory containing `openssl.pc'
to the PKG_CONFIG_PATH environment variable
Package 'openssl', required by 'libngtcp2_crypto_boringssl', not found
---- end
configure: error: --with-ngtcp2 was specified but could not find ngtcp2_crypto_boringssl pkg-config file.
```

Success, after:
```
checking for libngtcp2_crypto_boringssl options with pkg-config... found
configure: pkg-config --exists libngtcp2_crypto_boringssl trace:
---- begin
trying path: /home/runner/awslc/build/lib/pkgconfig for libngtcp2_crypto_boringssl
trying path: /home/runner/nghttp3/build/lib/pkgconfig for libngtcp2_crypto_boringssl
trying path: /home/runner/nghttp2/build/lib/pkgconfig for libngtcp2_crypto_boringssl
trying path: /home/runner/ngtcp2/build/lib/pkgconfig for libngtcp2_crypto_boringssl
trying path: /home/runner/awslc/build/lib/pkgconfig for libngtcp2
trying path: /home/runner/nghttp3/build/lib/pkgconfig for libngtcp2
trying path: /home/runner/nghttp2/build/lib/pkgconfig for libngtcp2
trying path: /home/runner/ngtcp2/build/lib/pkgconfig for libngtcp2
trying path: /home/runner/awslc/build/lib/pkgconfig for openssl
trying path: /home/runner/awslc/build/lib/pkgconfig for libssl
trying path: /home/runner/awslc/build/lib/pkgconfig for libcrypto
---- end
```

More examples:
#20926 (comment)

If there is an externally enablable, built-in feature like this in
classic pkg-config or pkgconf, I could not find it.

Also:
- GHA/http3-linux: set `CURL_TRACE_PKG_CONFIG` to log detection details.
  H3 builds are prone to hard-to-debug dependency issues.

Ref: #20920
Follow-up to 3c64ffa #18415 #18188
Follow-up to 9950066 #18028 #18022

Cherry-picked from #20926

Closes #20931
vszakats added a commit to vszakats/curl that referenced this pull request Mar 16, 2026
3c64ffa curl#18415 curl#18188
9950066 curl#18028 curl#18022

test both ngtcp2 config methods

boringssl fixup

leave libressl as-is in this PR (unrelated and tackled in another one)

http3-linux.yml test all combinations
vszakats added a commit that referenced this pull request Mar 17, 2026
Configure LibreSSL autotools job with `--with-ngtcp=<path>` instead of
adding ngtcp2 to `PKG_CONFIG_PATH`. To test this way of configuration in
CI and test for the regression reported in #20889.

Turns out this way of configuration isn't affected by the detection
issue in this particular case.

It also works for other backends except for these two, subject to
separate fixes:
- BoringSSL fix: ngtcp2/ngtcp2#2070
- GnuTLS fix and BoringSSL workaround: #20920

Follow-up to 666db80 #20891
Follow-up to 8db0e28 #18189
Follow-up to 9950066 #18028 #18022

Closes #20926
vszakats added a commit to vszakats/curl that referenced this pull request Mar 17, 2026
3c64ffa curl#18415 curl#18188
9950066 curl#18028 curl#18022

test both ngtcp2 config methods

boringssl fixup

leave libressl as-is in this PR (unrelated and tackled in another one)

http3-linux.yml test all combinations
vszakats added a commit to vszakats/curl that referenced this pull request Mar 17, 2026
3c64ffa curl#18415 curl#18188
9950066 curl#18028 curl#18022

test both ngtcp2 config methods

boringssl fixup

leave libressl as-is in this PR (unrelated and tackled in another one)

http3-linux.yml test all combinations
vszakats added a commit that referenced this pull request Mar 17, 2026
ngtcp2 1.14.0 added module dependencies to `ngtcp2_crypto_*.pc` files.
This broke certain build cases in curl, because configure was is
querying pkg-config modules by setting `PKG_CONFIG_LIBDIR` to the
directory specified via `--with-*=` options, including `--with-ngtcp2=`.
Setting `PKG_CONFIG_LIBDIR` tells pkg-config (and pkgconf) to ignore
system locations. This caused that `ngtcp2_crypto_gnutls.pc` could no
longer find its indirect dependencies, if those were present at system
locations (where they typically are). Another fallout was BoringSSL,
because it does not provide `openssl.pc` on its own, and successful
detection relied on finding a non-BoringSSL copy, typically at a system
location (also fixed in ngtcp2 main branch).

Fix `ngtcp2_crypto_*` detections to not touch `PKG_CONFIG_LIBDIR` and
instead prepend `<path>` set via `--with-ngtcp2=` to `PKG_CONFIG_PATH`.
This ensures to pick up any dependent modules from system locations.

Note the side-effect is that potentially undesired modules may be
detected this way from system locations, i.e. it makes this particular
detection less "hermetic" than the rest used in curl configure.

(Configurations using a bare `--with-ngtcp2` with no path were not
affected, and served as a workaround before this patch. It remains a
valid way of configuration after.)

Both `pkgconf` and `pkg-config` use this logic to calculate their search
directory list:
```pseudo
search = {}
if PKG_CONFIG_PATH is set
  search += PKG_CONFIG_PATH
endif
if PKG_CONFIG_LIBDIR is set (even if empty)
  search += PKG_CONFIG_LIBDIR
else
  search += built-in-pkg-config-dirs
endif
```

Refs:
https://github.com/curl/curl/pull/18028/commits (earlier attempt. Failed due to using `PKG_CONFIG_DIR` instead of the correct `PKG_CONFIG_PATH`)
c0874ce
https://man.archlinux.org/man/pkgconf.1.en
https://manpages.debian.org/unstable/pkgconf/pkgconf.1.en.html
https://manpages.debian.org/unstable/pkg-config/pkg-config.1.en.html
ngtcp2/ngtcp2@10e27fd

Bug: #18022 (comment)
Bug: ngtcp2/ngtcp2#1689 (comment)
Follow-up to 04d90b5 #20931
Follow-up to 3c64ffa #18415 #18188
Follow-up to 9950066 #18028 #18022

Closes #20920
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CI Continuous Integration

Development

Successfully merging this pull request may close these issues.

1 participant