Commit graph

127 commits

Author SHA1 Message Date
Hennadii Stepanov
7967fe5bfd
ci: Switch to dynamic library linkage in native Windows job
This change significantly reduces the vcpkg binary cache size, improving
CI caching performance.
2025-04-02 17:47:10 +01:00
merge-script
639279e86a
Merge bitcoin/bitcoin#30997: build: Switch to Qt 6
Some checks are pending
CI / test each commit (push) Waiting to run
CI / macOS 14 native, arm64, no depends, sqlite only, gui (push) Waiting to run
CI / macOS 14 native, arm64, fuzz (push) Waiting to run
CI / Windows native, VS 2022 (push) Waiting to run
CI / Windows native, fuzz, VS 2022 (push) Waiting to run
CI / Linux->Windows cross, no tests (push) Waiting to run
CI / Windows, test cross-built (push) Blocked by required conditions
CI / ASan + LSan + UBSan + integer, no depends, USDT (push) Waiting to run
f00345727b doc: Update `dependencies.md` for Qt 6 (Hennadii Stepanov)
80b917991e build, msvc: Update `vcpkg.json` for Qt 6 (Hennadii Stepanov)
30dd1f1644 ci: Update for Qt 6 (Hennadii Stepanov)
629d292f4d test: Update sanitizer suppressions for Qt 6 (Hennadii Stepanov)
551e13abf8 guix: Adjust for Qt 6 (Hennadii Stepanov)
c3e9bd086c qt: Fix compiling for Windows (Hennadii Stepanov)
ab399c4db2 depends: Add `native_qt` package (Hennadii Stepanov)
248613eb3e depends: Factor out Qt modules' details (Hennadii Stepanov)
0268f52a4c depends: Introduce customizable `$(package)_patches_path` variables (Hennadii Stepanov)
5e794e6202 depends: Bump `qt` package up to 6.7.3 (Hennadii Stepanov)
6d4214925f cmake: Require Qt 6 to build GUI (Hennadii Stepanov)

Pull request description:

  The currently used Qt 5.15 is approaching [EOL](https://www.qt.io/blog/qt-5.15-extended-support-for-subscription-license-holders) and will reach it before the Bitcoin Core v30 release. The recent migration of the build system to CMake makes it possible to switch to Qt 6.

  This PR updates the OS runtime compatibility requirements for the Bitcoin Core GUI as follows:

  ### 1. Linux

  Starting with Qt 6.5.0, the `libxcb-cursor0` package is required to be installed at runtime.

  ### 2. Windows

  Cross-compiling does not support LTO. We have to re-add it in a follow-up.

  A new style plugin causes minor visual glitches, such as
  ![image](https://github.com/user-attachments/assets/e06f8685-aa79-49e7-9e61-4d54563f6d04)
  which will be fixed in follow-ups.

  ### 3. macOS

  `bitcoin-qt` now uses the [Metal](https://developer.apple.com/metal/) backend.

  ---

  **IMPORTANT.** Don't forget to install [Ninja](https://ninja-build.org/).

  ---

  For historical context, please refer to:
  - https://github.com/bitcoin/bitcoin/issues/20627
  - https://github.com/bitcoin/bitcoin/pull/24798

  ---

  UPD 2024-10-09. Qt 6.8 has been [released](https://www.qt.io/blog/qt-6.8-released), but it has some [drawbacks](https://github.com/bitcoin/bitcoin/pull/30997#issuecomment-2402990346) for us. As a result, this PR will stick to Qt 6.7.

  UPD 2025-03-18: [Standard support for Qt 5.15 will end after 26th of May 2025](https://www.qt.io/blog/extended-security-maintenance-for-qt-5.15-begins-may-2025)

ACKs for top commit:
  laanwj:
    re-ACK f00345727b
  hodlinator:
    re-ACK f00345727b

Tree-SHA512: 367f722e6c3ea4700b5395871c40b6df8c8062fdc822107090449ea4ae4ad2db75cc53a982a678f4c48ce8f9b2d43ed10e6d23b06165ab78713f161db712d895
2025-04-02 21:41:16 +08:00
Hennadii Stepanov
30dd1f1644
ci: Update for Qt 6 2025-04-02 09:15:25 +01:00
Hennadii Stepanov
6d4214925f
cmake: Require Qt 6 to build GUI 2025-04-02 09:11:48 +01:00
Hennadii Stepanov
4a679936bb
ci, windows: Do not exclude wallet_migration.py in command line
Since https://github.com/bitcoin/bitcoin/pull/31248, it is no longer
necessary to use `--exclude wallet_migration.py`, as the test is skipped
due to not using previous releases.
2025-04-01 22:37:49 +01:00
Hennadii Stepanov
30c59adda4
ci: Drop confusing comment
GHA updates images anyway.
2025-04-01 15:14:57 +01:00
Hennadii Stepanov
ef00a28414
ci: Add workaround for vcpkg's libevent package
This change is necessary for Windows GHA images, which provide
CMake >= 4.0.
2025-04-01 15:02:47 +01:00
Hennadii Stepanov
25b56fd9b4
ci: Test cross-built Windows executables on Windows natively 2025-03-19 15:21:06 +00:00
Hennadii Stepanov
3501bca8c7
ci: Move "Windows cross" job from Cirrus CI to GHA CI
This change is required for testing cross-built executables on Windows
natively.
2025-03-18 10:28:44 +00:00
Hennadii Stepanov
f8619196ce
ci: Use bash by default for all platforms
This change enforces fail-fast behavior for all platforms.
See: https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#exit-codes-and-error-action-preference
2025-03-18 10:28:01 +00:00
Sjors Provoost
36b6f36ac4
build: require sqlite when building the wallet
Require that sqlite is available in order to compile the wallet. Removes
instances of USE_SQLITE since it is no longer possible to not have
sqlite available.

The NO_SQLITE option is dropped from depends.

Co-authored-by: Ava Chow <github@achow101.com>
Co-authored-by: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com>
2025-03-12 15:42:38 +01:00
Hennadii Stepanov
026bb226e9
cmake: Set top-level target output locations
This change:
1. Collects build artifacts in dedicated locations.
2. Allows running bitcoin-chainstate.exe with bitcoinkernel.dll directly
from the build tree on Windows.
2025-02-20 22:18:51 +00:00
Ryan Ofsky
8fa10edcd1
Merge bitcoin/bitcoin#31428: ci: Allow build dir on CI host
Some checks are pending
CI / test each commit (push) Waiting to run
CI / macOS 14 native, arm64, no depends, sqlite only, gui (push) Waiting to run
CI / macOS 14 native, arm64, fuzz (push) Waiting to run
CI / Win64 native, VS 2022 (push) Waiting to run
CI / Win64 native fuzz, VS 2022 (push) Waiting to run
CI / ASan + LSan + UBSan + integer, no depends, USDT (push) Waiting to run
8888ee4403 ci: Allow build dir on CI host (MarcoFalke)

Pull request description:

  This is required to pass cross builds on to a different machine after the build.

  See for example https://github.com/bitcoin/bitcoin/pull/31176, but this pull will also allow someone to implement it outside this repo.

ACKs for top commit:
  davidgumberg:
    lgtm ACK 8888ee4403
  hebasto:
    re-ACK 8888ee4403.

Tree-SHA512: a1e2c32bc1b95efbd0b48287ac5b49e0e1bacbf5a5800845be5352bbdd3e17fa478e90348b2e94e95cf3ae863cdf75ab444089376588f6f8eec438f73a4b5b97
2025-01-30 19:34:00 -05:00
espi3
1681c08d42 doc: update links in ci.yml
Updated three GitHub links to avoid redirects.
2025-01-27 18:59:28 -08:00
MarcoFalke
1111b0ac19
ci: Add missing --combinedlogslen to test-each-commit task 2025-01-21 15:34:39 +01:00
Adlai Chandrasekhar
160c27ec07 doc: Update dependency installation for Debian/Ubuntu and CI
According to the description for pkg-config, "pkgconf is a
replacement for pkg-config, providing additional functionality
while also maintaining compatibility. This package only provides
a dependency link to the pkgconf package to help with package
upgrades. It can be safely removed."

Thus several scripts and markdown files are updated.
2025-01-16 17:31:13 +02:00
MarcoFalke
fa029a7878
doc: Clarify min macOS and Xcode version 2025-01-06 12:30:55 +01:00
MarcoFalke
8888ee4403
ci: Allow build dir on CI host 2025-01-06 09:45:03 +01:00
Hennadii Stepanov
e2f2698395
ci, macos: Install pkgconf Homebrew's package
The updated GHA image `20241125.556` is now fully deployed, enabling the
installation of `pkgconf` as documented in `doc/build-osx.md`.
2024-12-01 10:58:15 +00:00
Ava Chow
72ab35a6d0
Merge bitcoin/bitcoin#31221: ci: Split out native fuzz jobs for macOS and windows (take 2)
b031b7910d [ci] Split out native fuzz jobs for macOS and windows (dergoegge)

Pull request description:

  Split out two new CI jobs (for native macOS and windows) that run the fuzz tests on the qa-assets input corpora.

  In both jobs the fuzz binary is built with `-DBUILD_FOR_FUZZING` to enable `Assume` assertions as well as `FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION`.

ACKs for top commit:
  maflcko:
    re-lgtm ACK b031b7910d
  achow101:
    ACK b031b7910d
  hebasto:
    ACK b031b7910d.

Tree-SHA512: 7d0dc5a9cb299f6f4596dd9a5526b6aaf82efc6eba308bdc9d8b0a45f79dea87204fb6cd4b2ea2a1bd952466b2e958d64021999296d110d7a83c1667f4de51fe
2024-11-26 13:29:59 -05:00
dergoegge
b031b7910d [ci] Split out native fuzz jobs for macOS and windows 2024-11-25 10:41:17 +00:00
fanquake
fe3457ccff
ci: note that we should install pkgconf in future
As pkg-config is now just redirected to the later, but changing this likely
depends on the GHA image being updated first.
2024-11-21 11:08:02 +00:00
Sjors Provoost
8610bcef9d
ci: skip Github CI on branch pushes for forks
Consistent with Cirrus behavior introduced in e9bfbb5414.
2024-11-12 12:14:34 +01:00
furszy
36a22e5683
ci: make ctest stop on failure
Wastes less resources and notifies the developer faster when
a failure occurs.
2024-11-08 13:06:51 -05:00
Ryan Ofsky
03cff2c142
Merge bitcoin/bitcoin#31191: build: Make G_FUZZING constexpr, require -DBUILD_FOR_FUZZING=ON to fuzz
Some checks are pending
CI / test each commit (push) Waiting to run
CI / macOS 14 native, arm64, no depends, sqlite only, gui (push) Waiting to run
CI / Win64 native, VS 2022 (push) Waiting to run
CI / ASan + LSan + UBSan + integer, no depends, USDT (push) Waiting to run
fafbf8acf4 Make G_FUZZING constexpr, require -DBUILD_FOR_FUZZING=ON to execute a fuzz target (MarcoFalke)
fae3cf0ffa ci: Temporarily disable macOS/Windows fuzz step (MarcoFalke)

Pull request description:

  `g_fuzzing` is used inside `Assume` at runtime, causing significant overhead in hot paths. See https://github.com/bitcoin/bitcoin/issues/31178

  One could simply remove the `g_fuzzing` check from the `Assume`, but this would make fuzzing a bit less useful. Also, it would be unclear if `g_fuzzing` adds a runtime overhead in other code paths today or in the future.

  Fix all issues by making `G_FUZZING` equal to the build option `BUILD_FOR_FUZZING`, and for consistency in fuzzing, require it to be set when executing any fuzz target.

  Fixes https://github.com/bitcoin/bitcoin/issues/31178

  Temporarily this drops fuzzing from two CI tasks, but they can be re-added in a follow-up with something like https://github.com/bitcoin/bitcoin/pull/31073

ACKs for top commit:
  marcofleon:
    Tested ACK fafbf8acf4
  davidgumberg:
    I still ACK fafbf8acf4 for fixing the regression measured in #31178.
  ryanofsky:
    Code review ACK fafbf8acf4 but approach -0, because this approach means libraries built for fuzz testing do not function correctly if used in a release, and libraries built for releases are mostly useless for fuzz testing. So I would like to at least consider other solutions to this problem even if we go with this one.
  dergoegge:
    utACK fafbf8acf4

Tree-SHA512: 124fc2e8b35e0c4df414436556a7a0a36cd1bec4b3000b40dcf2ab8c85f32e0610bf7f70d2fd79223d62f3c3665b6c09da21241654c7b9859461b8ca340d5421
2024-11-05 06:05:27 -05:00
MarcoFalke
fae3cf0ffa
ci: Temporarily disable macOS/Windows fuzz step
The fuzz binary is still compiled. This is required for the next commit.
2024-10-31 13:51:13 +01:00
Sergi Delgado Segura
54d07dd37d ci: Do not error on unused-member-function in test each commit 2024-10-30 13:58:52 -04:00
Antoine Poinsot
94ad614482
ci: remove UPnP options 2024-10-25 09:27:12 -04:00
furszy
8523d8c0fc
ci: display logs of failed tests automatically 2024-10-24 10:36:02 -03:00
MarcoFalke
fa1cffacae
ci: Install missing nproc in macos task
This avoids special-casing macos
2024-10-07 12:28:23 +02:00
MarcoFalke
faf7a2bccc
ci: Add missing -DWERROR=ON to test-each-commit 2024-10-07 12:28:23 +02:00
laanwj
5c7cacf649 ci: Remove natpmp build option and libnatpmp dependency 2024-09-30 11:37:56 +02:00
Hennadii Stepanov
d01b85bfec
ci: Use ninja to build in macOS native CI job 2024-09-17 15:43:48 +01:00
merge-script
bdbc90f29a
Merge bitcoin/bitcoin#30902: Remove Autotools packages from CI (and depends doc)
7a8a6a0667 doc: Fix comment in `contrib/devtools/check-deps.sh` script (Hennadii Stepanov)
712d105e09 depends, doc: Do not install Autotools packages (Hennadii Stepanov)
b786449e66 ci: Do not install Autotools packages (Hennadii Stepanov)

Pull request description:

  This PR is a follow-up to https://github.com/bitcoin/bitcoin/pull/30752 and addresses https://github.com/bitcoin/bitcoin/pull/30752#discussion_r1758594864.

ACKs for top commit:
  kevkevinpal:
    ACK [7a8a6a0](7a8a6a0667)

Tree-SHA512: ac701b34ebf1621be355a5b576032d30a342a5667eff47d858587ac3c60011d77bd469e524d69dae90a932f14269227886e3d170a63a2e855b29ef4fa5b9e5a4
2024-09-17 15:19:18 +01:00
MarcoFalke
fa8f35d786
ci: Use macos-14 GHA image 2024-09-17 09:37:44 +02:00
Hennadii Stepanov
b786449e66
ci: Do not install Autotools packages 2024-09-14 13:09:11 +01:00
Hennadii Stepanov
e07a3ede52
ci: Add missed configuration options to "Win64 native" job 2024-09-06 12:19:26 +01:00
MarcoFalke
8888beea8d
scripted-diff: fuzz: Rename fuzz_seed_corpus to fuzz_corpora
-BEGIN VERIFY SCRIPT-
 ren() { sed -i "s:\<$1\>:$2:g" $( git grep -l "$1" ) ; }
 ren fuzz_seed_corpus     fuzz_corpora
 ren FUZZ_SEED_CORPUS_DIR FUZZ_CORPORA_DIR
-END VERIFY SCRIPT-
2024-09-03 20:40:35 +02:00
Hennadii Stepanov
74da8cb286
ci: Delete no longer needed workaround
It was necessary at some point during the development of the CMake
staging branch.
2024-08-30 23:13:25 +01:00
fanquake
78358ce09d
ci: add libzmq3-dev to test-each-commit job 2024-08-29 11:04:51 +01:00
fanquake
36ff336d2e
ci: remove bsdmainutils 2024-08-29 10:58:20 +01:00
MarcoFalke
fa80d39d82
ci: Re-add configs removed in cmake migration 2024-08-28 16:50:04 +02:00
Hennadii Stepanov
9730288a0c
ci: Migrate CI scripts to CMake 2024-08-16 21:19:13 +01:00
Hennadii Stepanov
032ebe5be4
ci: Silent Homebrew's reinstall warnings 2024-08-05 17:14:33 +01:00
Max Edwards
93ee17c1d6 ci: enable berkley db on test each commit job 2024-07-29 11:43:47 +01:00
Sjors Provoost
576828e732
ci: test-each-commit merge base optional
The ci "test-each-commit" job fetches the PR branch being tested with a depth of (# of commits in PR + 2), and then tries to run tests on commits after the most recent merge commit.

When a PR is opened against a bitcoin core branch, a merge commit is always guaranteed to exist within the fetch depth, because bitcoin core branches always point at merge commits.

However, in fork repositories, pull requests can be opened based on other branches that don't contain recent merge commits, and this will currently cause git rev-list to fail with fatal: bad revision '^^@'.

Work around this problem by not requiring a recent merge commit, and just testing on all fetched commits if a merge commit can't be found.

Co-authored-by: Ryan Ofsky <ryan@ofsky.org>
2024-06-25 20:03:44 +02:00
Max Edwards
4ecbbd9b7f ci: add option for running tests without volume
DANGER_CI_ON_HOST_CACHE_FOLDERS if set will mount caches in directories on the host rather than in docker volumes. Supports saving and restoring caches on Github Actions.
2024-06-20 17:42:28 +01:00
Max Edwards
518b06c4b8 ci: remove unused bcc variable from workflow 2024-06-18 10:16:30 +01:00
Ava Chow
d97ddbe797
Merge bitcoin/bitcoin#30193: ci: move ASan job to GitHub Actions from Cirrus CI
9eea51d905 ci: move Asan / LSan / USDT job to Github Actions (Max Edwards)
4b527fa93b ci: add IPV6 network to ci container (Max Edwards)

Pull request description:

  PR for moving the ASAN + LSAN + USDT + friends job to github actions from Cirrus.

  The motivation for this PR is that this task needs a full VM (or bare metal) to function, because of the tracepoints. It can not run in a container on an arbitrary Linux, because the outside machine must exactly match the specification of the distro used in the CI task config. This requires more maintenance for the persistent worker, and I think moving to GHA will reduce the maintenance burden, or at least make it possible for anyone to work on.

  Also, it makes it easier to run the task on forks (bitcoin-inquisition, bitcoin-knots, devel forks, ...) without having to set-up a real machine.

ACKs for top commit:
  maflcko:
    review ACK 9eea51d905
  achow101:
    ACK 9eea51d905
  hebasto:
    ACK 9eea51d905.

Tree-SHA512: 1111c1c9e3a11e725dff1344643fff3c91fb9b4d7c1cc9a7d507a8f146f5223316a00272030b41ae37ecb59d044f2e90e1cd907450049b25f094f0b60643d4c7
2024-06-17 15:49:43 -04:00
Max Edwards
9eea51d905 ci: move Asan / LSan / USDT job to Github Actions
Moving it from Cirrus CI so it can be easier to maintain and used by forks
2024-06-12 14:20:25 +01:00