Repository navigation
Conversation
This comment was marked as resolved.
This comment was marked as resolved.
…ernative Fixing: ``` [...] "https://ftpmirror.gnu.org/nettle/nettle-${NETTLE_VERSION}.tar.gz" [...] curl: (1) Protocol "http" disabled (in redirect) ``` Ref: https://github.com/curl/curl/actions/runs/36856289932/job/110349436255?pr=23214#step:20:33 Follow-up to 5008206 #21757 Cherry-picked from #23214 Closes #23217
f9f26e6 to
7b3bae2
Compare
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Resolve the outstanding HTTP/3 workflow issues before approval.
Review effort: Lite
Findings: 1
Open (2)
What changed in this PR
Moves local dependency builds under ~/pkg/ and revisions cache identifiers across Linux and HTTP/3 workflows.
Changes:
- Synchronizes dependency, cache, and configuration paths.
- Adds cache revision
1. - Updates HTTP/3 build references.
| File | Summary |
|---|---|
.github/workflows/linux.yml |
Updates Linux dependency paths and cache identifiers. |
.github/workflows/http3-linux.yml |
Updates HTTP/3 paths and caches; duplicate quiche verbosity flags and stale quiche path comments remain to be corrected. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Possibly hinted by Copilot Bug: curl#23214 (review)
Also sync option order in CMake sibling. Possibly hinted by Copilot Bug: #23214 (review) Closes #23226
a05abfa to
15fff50
Compare
Yep, that's an outlier because it's a binary download. It wouldn't need to be cached, but still useful as a pinning substitute. |
…vements
To make it easy to switch runner machine and have the locally built
dependencies and their caches adapt automatically. Also to drop
maintaining local build logic for CPUs separately.
Also:
- add support for Fil-C on ARM64.
- add a revision number ('1') to the cache keys and IDs.
To make it easy to bump when doing modifications like this, or want
to make tests that need rebuilding them.
Cherry-picked from #23214
- move local builds from `~/` to `~/pkg/`. To have them under a single
root, and to eventually sync them with GHA/http3-linux.
Except for Rustls and Fil-C, which are binary downloads.
Cherry-picked from #23214
Closes #23233
15fff50 to
5225a31
Compare
5225a31 to
95326e6
Compare
95326e6 to
37139e5
Compare
|
OpenSSL 3 on arm64 H3 valgrind fails: https://github.com/curl/curl/actions/runs/37025210843/job/110898198578?pr=23214#step:30:19556 Maybe a issue within OpenSSL? edit: no, it's also in quiche + BoringSSL: edit 2: and OpenSSL 4, but not LibreSSL/AWS-LC, or bare BoringSSL: OpenSSL 4 https://github.com/curl/curl/actions/runs/37026860992/job/110903869051#step:30:152 Maybe a random generartor seed/init/bootstrap issue? The quiche issue seems to be quiche-specific, not BoringSSL, and a different one than the above: |
…gs with openssl and quiche Allow building quiche and OpenSSL H3 jobs on arm64 runner machines, by avoiding compiler optimization bugs that make runtests 2500, 2501, 2502, 2503 fail with valgrind. - build quiche with `CARGO_PROFILE_RELEASE_OPT_LEVEL=0` on arm64. The next optimization level (1) reproduces the failure. Dropping the `--release` option from `cargo build` also works. Seen with quiche 0.30.0, rustc 1.98.1 (48a229cea 2026-09-01). FTR with optimizations disabled runtests runs at the same speed as optimized Intel, and pytests is still noticeably faster than Intel. - build OpenSSL 3/4 with clang. With gcc-15/16 it also works to pass `--debug` to `./Configure`, or to set `CFLAGS=-O2`, when building on/for arm64. Seen with OpenSSL 4.0.3, 3.5.9, 3.6.5, ubuntu-26.04-arm runner, gcc 15.1.0, gcc 16-20260322-1ubuntu1. - switch openssl-prev jobs to arm64. (Identical performance) Refs: https://doc.rust-lang.org/cargo/reference/config.html#command-line-overrides https://doc.rust-lang.org/cargo/reference/config.html#profile https://doc.rust-lang.org/cargo/reference/profiles.html#opt-level https://doc.rust-lang.org/cargo/reference/profiles.html#release Bug: #23214 (comment) Follow-up to 6c72371 #23214 Fixes #23237 Closes #23275


Also move all local build installs under the
~/pkg/root, replacing~/<dep>/build/and syncing with GHA/linux. Except quiche, which is aRust project and lacks (or I could not find) a way to do a classic
'install' to a custom prefix.
blobs adapt automatically to the runner machine arch. It allows to
transparently use the arm runner machines for any jobs.
To make it easy to bump when doing modifications like this, or just
want to make test that need rebuilding them.
-vv.(Useful to see BoringSSL build progress)
targetsubdir into the~/pkg/root. It failed because quiche headers remain inside the source tree,
~/quiche/quiche/include, and missing from the cache.Note:
when built on arm64. Not tackled in this PR.
Datapoint: Rebuilding all cached dependencies takes:
Ref: https://github.com/curl/curl/actions/runs/37016536935
In the actual jobs, arm64 is slightly faster in places, similar in most
others:
x64: https://github.com/curl/curl/actions/runs/37019925832
arm64: https://github.com/curl/curl/actions/runs/37026860992
Possible minor downside:
to complete if any of the dependencies change. This happens rarely. It
may also take a little bit longer to verify if the caches need to be
rebuilt.
Follow-up to 9fd900c #23233
perf x64 vs arm64: