This adds a Linux cross job for NetBSD; similar to #34491 (FreeBSD).
This uses the upcoming NetBSD 11.0 release (rc5).
<!--e57a25ab6845829454e8d69fc972939a-->
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.
<!--006a51241073e994b41acfe9ec718e94-->
For details see: https://corecheck.dev/bitcoin/bitcoin/pulls/35412.
<!--021abf342d371248e50ceaed478a90ca-->
See the guideline and AI policy for information on the review process.
| Type | Reviewers |
|---|---|
| Concept ACK | hebasto |
| Stale ACK | willcl-ark |
If your review is incorrectly listed, please copy-paste <code><!--meta-tag:bot-skip--></code> into the comment that the bot should ignore.
<!--174a7506f384e20aa4161008e828411d-->
Reviewers, this pull request conflicts with the following ones:
If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first.
<!--5faf32d7da4f0f540f40219e4f7537a3-->
<!--85328a0da195eb286784d51f73fa0af9-->
🚧 At least one of the CI tasks failed.
<sub>Task lint: https://github.com/bitcoin/bitcoin/actions/runs/26640734145/job/78512803098</sub>
<sub>LLM reason (✨ experimental): CI failed linting because ci/test/00_setup_env_netbsd_cross.sh has a shebang but incorrect permissions (644 instead of executable 755).</sub>
<details><summary>Hints</summary>
Try to run the tests locally, according to the documentation. However, a CI failure may still happen due to a number of reasons, for example:
Possibly due to a silent merge conflict (the changes in this pull request being incompatible with the current code in the target branch). If so, make sure to rebase on the latest commit of the target branch.
A sanitizer issue, which can only be found by compiling with the sanitizer and running the affected test.
An intermittent issue.
Leave a comment here, if you need help tracking down a confusing failure.
</details>
Simplified this to just pretty much drop all the /depends changes, and updated to use 11.0rc5.
Looks nice to me. Run is already pleasantly fast (12m) with no caching.
~Can we use ccache in here~ already being used
Deduplicated sysroot in the CI config.
Concept ACK.
All looks OK to me.
Just one NetBSD question; I notice there are a few branches of 11 here:
NetBSD-11.0_RC4 NetBSD-11.0_RC5 NetBSD-release-11
...should we not use -release-11 to avoid having to bump regularly? I'm not familar enough with the NetBSD release process to know.
Also, I think using an 8x instance is OK here (and matches the other BSD jobs), but I think after this PR is resolved I'll test these on 4x runners too (matching the macOS cross jobs).
...should we not use -release-11 to avoid having to bump regularly?
NetBSD releases are not so frequent; looks like point releases every 6 months or so? I haven't looked at -release-11 , but if it's rolling, I'm not sure we want that, because it would make the CI inherently unstable/non-reproducible.
if it's rolling, I'm not sure we want that, because it would make the CI inherently unstable/non-reproducible.
I'm not going to die on this hill, or block this PR on it, but how is this be different from other jobs where we use un-hash-pinned tags like mirror.gcr.io/debian:trixie or mirror.gcr.io/ubuntu:26.04 or mirror.gcr.io/alpine:3.24, which are all rolling versions (just whatever the docker tag resolves to on that particular day)?
Like I said, I actually don';t know how NetBSD does its releases, so -release-11 might not even be suitable at all...
but how is this be different from other jobs where we use un-hash-pinned tags like
I guess that will depend on what actually changes in -release-11. If there aren't major changes, like updating (major) compiler versions, then it may be more equivalent to what we are doing with the Ubuntu/Debian images. However looking in https://cdn.netbsd.org/pub/NetBSD/NetBSD-release-11/, I don't see any of the binary sets we actually want to use.
Updated the PR to use 11.0_RC6.
ACK e32403ed7b1095f1d1ac65f8144197c71d50387e
Using the RC (and bumping to final later) seems fine to me.
Use 11.0rc6, as the 10.x sysroot ships with a GCC that is too old to
have bitset, source_location etc.