Skip to content

[WIP] Sync with main repo: CMake + Qt 6 #470

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 6,773 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
6773 commits
Select commit Hold shift + click to select a range
1a689a2
test: fix block tests of invalid_txs
instagibbs May 22, 2025
8fcd684
test: ensure reason is checked for invalid blocks rejection
instagibbs May 22, 2025
0a8ab55
Merge bitcoin/bitcoin#32467: checkqueue: make the queue non-optional …
fanquake May 22, 2025
2df824f
Merge bitcoin/bitcoin#32586: ci: Downgrade DEBUG=1 to -D_GLIBCXX_ASSE…
fanquake May 22, 2025
36bcee0
log: Log start of compact block initialization.
davidgumberg May 22, 2025
db465a5
wallet, rpc: remove obsolete "keypoololdest" result field/code
theStack May 22, 2025
7a05f94
rpc: doc: drop descriptor wallet mentions in fast wallet rescan relat…
theStack May 22, 2025
e5cbea4
rpc: doc: remove redundant "descriptors" parameter in `createwallet` …
theStack May 22, 2025
56d878c
fuzz: avoid underflow in coins_view target
darosior Jan 2, 2024
46e1463
fuzz: move the coins_view target's body into a standalone function
darosior Aug 4, 2023
ad9a13f
walletdb: Log additional exception error messages for corrupted wallets
achow101 May 13, 2025
53e9b71
log: print reason for why should_write was triggered in `FlushStateTo…
l0rinc May 2, 2025
638a4c0
Merge bitcoin/bitcoin#32596: wallet, rpc, doc: various legacy wallet …
achow101 May 23, 2025
fab1e02
refactor: Pass verification_progress into block tip notifications
May 20, 2025
2bf1732
test: exercise `ReadBlock` hash‑mismatch path
l0rinc May 12, 2025
09ee8b7
node: avoid recomputing block hash in `ReadBlock`
l0rinc May 12, 2025
0995517
wallet, rpc: Give warning in listwalletdir for legacy wallets
achow101 May 26, 2025
f3a444c
gui: Disallow loading legacy wallets
achow101 May 26, 2025
c8d9baa
guix: accomodate migration to codeberg
fanquake May 7, 2025
8786014
Merge bitcoin/bitcoin#32270: test: fix pushdata scripts
fanquake May 27, 2025
f7cc7f6
Merge bitcoin/bitcoin#32591: test: fix and augment block tests of inv…
fanquake May 27, 2025
fa4b8b1
test: Add missing ipc subtree to lint
May 27, 2025
38ad802
Merge bitcoin/bitcoin#32439: guix: accomodate migration to codeberg
hebasto May 27, 2025
012f347
Merge bitcoin/bitcoin#31375: multiprocess: Add bitcoin wrapper execut…
achow101 May 27, 2025
4173805
Merge bitcoin/bitcoin#32623: test: Add missing ipc subtree to lint
achow101 May 27, 2025
9bd9aee
Merge bitcoin/bitcoin#32487: blocks: avoid recomputing block header h…
achow101 May 27, 2025
4789436
functional test: add MAX_DISCONNECTED_TX_POOL_BYTES coverage
instagibbs May 15, 2025
eaf44f3
test: check chainlimits respects on reorg
instagibbs May 15, 2025
84aa484
test: fix transaction_graph_test reorg test
instagibbs May 16, 2025
d21612f
Merge bitcoin/bitcoin#32404: log: print reason when writing chainstate
achow101 May 27, 2025
ce46000
Merge bitcoin/bitcoin#32509: qa: feature_framework_startup_failures.p…
achow101 May 27, 2025
aee7cec
Merge bitcoin/bitcoin#32364: refactor: validation: mark CheckBlockInd…
achow101 May 27, 2025
88b22ac
Merge bitcoin/bitcoin#32528: rpc: Round verificationprogress to 1 for…
achow101 May 27, 2025
4df4df4
test: fix sync function in rpc_psbt.py
mzumsande May 28, 2025
3733ed2
log: Size of missing tx'es when reconstructing compact block
davidgumberg May 22, 2025
df82c2d
windows: Add resource file for `bitcoin.exe`
hebasto May 28, 2025
dbb2d4c
windows: Add application manifest to `bitcoin.exe`
hebasto May 28, 2025
370c592
Merge bitcoin/bitcoin#32630: test: fix sync function in rpc_psbt.py
achow101 May 28, 2025
83df64d
log: Stats when fulfilling GETBLOCKTXN
davidgumberg May 22, 2025
1062df8
Merge bitcoin/bitcoin#32634: build: Add resource file and manifest to…
fanquake May 29, 2025
aad5938
Merge bitcoin/bitcoin#32516: test: add MAX_DISCONNECTED_TX_POOL_BYTES…
fanquake May 29, 2025
14c16e8
Merge bitcoin/bitcoin#32582: log: Additional compact block logging
fanquake May 29, 2025
55f1c2a
windows: Use predefined `RC_INVOKED` macro instead of custom one
hebasto May 28, 2025
cfc42ae
fuzz: add a target for the coins database
darosior Aug 4, 2023
c540ede
Merge bitcoin/bitcoin#32633: windows: Use predefined `RC_INVOKED` mac…
fanquake May 29, 2025
154af1e
Squashed 'src/ipc/libmultiprocess/' changes from 35944ffd23fa..27c7e8…
ryanofsky May 29, 2025
9f65654
Merge commit '154af1eea1170f5626aa1c5f19cc77d1434bcc9d' into HEAD
ryanofsky May 29, 2025
5471e29
Merge bitcoin/bitcoin#32304: test: test MAX_SCRIPT_SIZE for block val…
achow101 May 29, 2025
9393aee
Merge bitcoin/bitcoin#32641: Update libmultiprocess subtree to fix cl…
fanquake May 30, 2025
053bda5
Merge bitcoin/bitcoin#32460: fs: remove `_POSIX_C_SOURCE` defining
fanquake May 30, 2025
b933813
Merge bitcoin/bitcoin#32619: wallet, rpc, gui: List legacy wallets wi…
fanquake May 30, 2025
4b1d48a
Merge bitcoin/bitcoin#32598: walletdb: Log additional exception error…
fanquake May 30, 2025
240a4fb
Squashed 'src/leveldb/' changes from 113db4962b..aba469ad6a
fanquake May 30, 2025
e639ae0
Update leveldb subtree to latest upstream
fanquake May 30, 2025
83bfe14
build: add -Wthread-safety-pointer
fanquake May 30, 2025
18cf727
cmake: Replace deprecated `qt6_add_translation` with `qt6_add_lrelease`
hebasto May 31, 2025
72a5aa9
depends: don't install & then delete sqlite pkgconf
fanquake Jun 1, 2025
9e10510
Merge bitcoin/bitcoin#32656: depends: don't install & then delete sql…
hebasto Jun 2, 2025
4b1b36a
doc: Remove build instruction for running `clang-tidy`
hebasto Jun 2, 2025
1c66023
Merge bitcoin/bitcoin#32662: doc: Remove build instruction for runnin…
fanquake Jun 2, 2025
f98e1aa
rpc: Note in fundrawtransaction doc, fee rate is for package
benthecarman May 23, 2025
f999c37
Merge bitcoin/bitcoin#32449: wallet: init, don't error out when loadi…
achow101 Jun 2, 2025
2d819fa
Merge bitcoin/bitcoin#29032: signet: omit commitment for some trivial…
achow101 Jun 2, 2025
ee4406c
doc: update URLs
fanquake May 2, 2025
21ee656
doc: Remove obselete link in notificator.cpp
strmfos May 28, 2025
c797e50
ci: update codespell to 2.4.1
fanquake May 29, 2025
e50312e
doc: fix typos
fanquake May 29, 2025
e872a56
Merge bitcoin/bitcoin#32644: doc: miscellaneous changes
fanquake Jun 3, 2025
ed179e0
test: apply microsecond precision to test framework logging
mzumsande Jun 3, 2025
a980918
Merge bitcoin/bitcoin#32568: depends: use "mkdir -p" when installing …
fanquake Jun 3, 2025
4af72d8
Merge bitcoin/bitcoin#32647: build: add -Wthread-safety-pointer
fanquake Jun 4, 2025
7cfbb85
test: wallet: cover wallet passphrase with a null char
brunoerg Jun 2, 2025
9653ebc
depends: remove support for Windows Qt LTO builds
fanquake May 14, 2025
a5e98dc
Merge bitcoin/bitcoin#32651: cmake: Replace deprecated `qt6_add_trans…
fanquake Jun 4, 2025
4ce5349
doc: update tor docs to use bitcoind binary from path
ismaelsadeeq Jun 4, 2025
0dcb452
Merge bitcoin/bitcoin#32607: rpc: Note in fundrawtransaction doc, fee…
achow101 Jun 4, 2025
f941675
Merge bitcoin/bitcoin#32676: test: apply microsecond precision to tes…
achow101 Jun 4, 2025
fd4399c
Merge bitcoin/bitcoin#32602: fuzz: Add target for coins database
fanquake Jun 5, 2025
6a2ff67
Merge bitcoin/bitcoin#32679: doc: update tor docs to use bitcoind bin…
fanquake Jun 5, 2025
ae02413
Merge bitcoin/bitcoin#32496: depends: drop `ltcg` for Windows Qt
fanquake Jun 5, 2025
2053c43
Merge bitcoin/bitcoin#32675: test: wallet: cover wallet passphrase wi…
achow101 Jun 6, 2025
e217437
Merge bitcoin/bitcoin#32539: init: Configure reachable networks befor…
achow101 Jun 6, 2025
efdfe77
cmake: Require Qt Quick module when `BUILD_GUI=ON`
hebasto Jun 6, 2025
337fc48
cmake: Add `bitcoin-qml` executable
hebasto Jun 8, 2025
69d790c
cmake: Add `qml` subdirectory
hebasto Jun 6, 2025
115b5e0
qml: Add stub window
hebasto Jun 9, 2025
e4ff16c
doc: introduce qml/README.md
jarolrod Jul 9, 2021
eaab89a
qml: Add NodeModel module
hebasto Jul 13, 2021
2dc8130
qml: Add start/shutdown functionality
hebasto Jul 13, 2021
5b77d3c
qml: Add message box for InitError calls
hebasto Jun 8, 2025
731d849
qml: Handle initialization errors
hebasto Aug 7, 2021
8b99496
qml: Check whether initerrormessage.qml is loaded correctly
hebasto Aug 27, 2021
29b6a05
doc: document runtime dependencies
jarolrod Aug 23, 2021
a3606dd
qml: Add copyright headers to QML files
hebasto Aug 30, 2021
45dce03
qml: Add QmlUtil::GraphicsApi utility function
hebasto Aug 30, 2021
c00458f
qml: Use QmlUtil::GraphicsApi utility function for logging
hebasto Aug 30, 2021
ba7c50a
qml: Add blockTipHeight property to NodeModel, and expose it to QML
hebasto Aug 29, 2021
50b7b22
qml: Add BlockCounter QML component prototype
hebasto Jun 8, 2025
069f2f4
qml: Pass Node instance to the NodeModel constructor
hebasto Aug 29, 2021
039d75c
qml: Connect NodeModel to the NotifyBlockTip core signal
hebasto Aug 29, 2021
2ada435
qml: Add qInstallMessageHandler
hebasto Oct 2, 2021
2e7513a
qml: Import QtQuick.Layouts
hebasto Oct 3, 2021
45c8f2c
qml: Add imageprovider module
hebasto Oct 2, 2021
72c227b
qml: Integrate ImageProvider into qml/bitcoin.cpp
hebasto Jun 9, 2025
9a1ed5e
qml: Add a demo Image object
hebasto Oct 2, 2021
9c9cfcd
qml: Drop erroneous `#include <QStringLiteral>`
hebasto Oct 10, 2021
21d170d
qml: Include missed <cassert> headers
hebasto Oct 10, 2021
d03b422
qml: Add regular and semibold typefaces of Inter font
promag Oct 6, 2021
3887f6d
qml: Set tab focus behavior
promag Oct 21, 2021
a065445
doc: introduce icon policy documentation
Bosch-0 Jan 9, 2021
13b85d4
qml: Use window color instead of background
promag Oct 22, 2021
02eb58f
qml: Remove explicit height of BlockCounter
promag Oct 22, 2021
d50a52c
qml: Use ColumnLayout in application window
promag Oct 22, 2021
e3ccece
qml: Add OptionButton control
promag Oct 22, 2021
1e234dd
qml: Add ConnectionOptions component
promag Oct 22, 2021
f04ed94
qml: Show ConnectionOptions
promag Oct 22, 2021
d8c4440
qml: Replace QtQuick.Dialogs with QtQuick.Controls 2 Dialog
hebasto Oct 30, 2021
4ba609b
qml: Add ProgressIndicator control
promag Oct 22, 2021
1ca32bd
qml: Demo ProgressIndicator control
promag Oct 22, 2021
bf1be74
doc: introduce translator comment policy documentation
jarolrod Nov 4, 2021
119abda
Add run information to README
secondl1ght Dec 17, 2021
45f3aaf
qml: introduce Header qml control
jarolrod Jan 3, 2022
f305edd
qml: demo Header control
jarolrod Jan 3, 2022
c9a0bfd
doc: standardize headings in qml README
jarolrod Dec 23, 2021
91eee5e
doc: qml README wording clarifications
jarolrod Dec 23, 2021
d9ace34
doc: mention development policies in qml README
jarolrod Dec 23, 2021
1d5b6c1
qml, doc: add Fedora as supported platform
hebasto Dec 21, 2021
cd91206
qml: make header property required in header control
jarolrod Jan 5, 2022
dcc3c5d
qml: Support detail item inside OptionButton
promag Jan 5, 2022
0d4442d
qml: Demo OptionButton detail in wifi-only option
promag Jan 5, 2022
eb2f290
qml: Add m_verification_progress to display working progress bar
shaavan Jan 6, 2022
c291ce1
qml: Used verificationProgress in stub.qml
shaavan Jan 6, 2022
f107514
qml: Add shutdown polling facilities to the NodeModel class
hebasto Jan 6, 2022
5b84375
qml: Use NodeModel's shutdown polling facilities
hebasto Jan 6, 2022
a304873
qml: Drop no longer used NodeModel::startNodeShutdown()
hebasto Jan 6, 2022
fdbdc80
qml: introduce ContinueButton control
jarolrod Jan 3, 2022
9bedbb9
qml: introduce OptionSwitch control
jarolrod Jan 3, 2022
e243111
qml: introduce Setting control
jarolrod Jan 3, 2022
3adaca9
qml: introduce ConnectionSettings component
jarolrod Jan 3, 2022
ceeb835
qml: refactor OptionButton to utilize Header control
jarolrod Jan 5, 2022
00c40bb
qml: introduce StorageOptions component
jarolrod Jan 4, 2022
b9055ac
qml: introduce TextButton control
jarolrod Jan 4, 2022
531dba7
qml: Using qsTr() with strings in ConnectionSettings.qml
shaavan Jan 13, 2022
60a5897
qml: Use Math.round() in OptionSwitch.qml
shaavan Jan 13, 2022
2f4e9d1
qml: Replace GridLayout with nested Column Row Layout in Settings.qml
shaavan Jan 13, 2022
eed2dcc
qml: Make further suggested changes to Settings.qml
shaavan Jan 13, 2022
2ef2b69
qml: introduce PageIndicator control
jarolrod Jan 4, 2022
73e095e
qml: introduce Theme singleton
jarolrod Jan 6, 2022
ba4e3b6
qml: update UI elements to use Theme color definitions
jarolrod Jan 6, 2022
64d0dd5
doc: fix link to optimize-pngs.py script
jarolrod May 25, 2022
b281ad0
qml: introduce info icon
jarolrod May 25, 2022
1860069
qml: introduce caret-left icon
jarolrod May 25, 2022
9748f76
qml: introduce caret-right icon
jarolrod May 25, 2022
1924157
qml: introduce export icon
jarolrod May 25, 2022
68f1795
qml: introduce Wizard control
jarolrod Jan 4, 2022
331893e
qml: Changes to Wizard Control
jarolrod Jun 6, 2022
3a01005
qml: Changes to Header.qml TextButton.qml, OptionButton.qml and Setti…
shaavan May 31, 2022
ab5d3f2
qml: Add Information.qml in src/qml/controls
shaavan May 31, 2022
6450bbe
qml: Add onboarding01 and its subpages
shaavan May 31, 2022
858e7dd
qml: Add onboarding02.qml file
shaavan May 31, 2022
a53e898
qml: Added onboarding03.qml
shaavan May 31, 2022
587b363
qml: Add onboarding04.qml page
shaavan May 31, 2022
89a1906
qml: Add onboarding05.qml page and its subpages
shaavan May 31, 2022
65b7742
qml: Add onboarding06.qml pages and its subpages
shaavan May 31, 2022
b48d23f
qml: Update stub.qml to display onboarding views
shaavan May 31, 2022
d56653c
qml: handle undefined active state in header control
jarolrod Jun 1, 2022
9520387
qml: introduce ExternalLink control
jarolrod Aug 3, 2022
7f78760
qml: introduce arrow-up icon
jarolrod Aug 11, 2022
c394c5b
qml: introduce basic ValueInput control
jarolrod Aug 3, 2022
592b473
qml: introduce arrow-down icon
jarolrod Aug 11, 2022
7d6e44f
qml: allow the settings component to load a dynamic action item.
jarolrod Aug 3, 2022
ae6d3a5
qml: remove information qml
jarolrod Aug 3, 2022
1917840
qml: temporary dark mode button
jarolrod Aug 11, 2022
2acb064
qml: use caret-right icon instead of greater than symbol
jarolrod Aug 3, 2022
0da5fb4
qml: introduce OnboardingInfo control
jarolrod Aug 8, 2022
bb1ce55
qml: use OnboardingInfo control
jarolrod Aug 8, 2022
d209c26
qml: introduce gear icon
jarolrod Aug 13, 2022
1e8114d
qml: introduce NavButton control
jarolrod Aug 9, 2022
05bf072
qml: introduce OnboardingNav control
jarolrod Aug 9, 2022
7a80726
qml: onboarding views navbar cleanup
jarolrod Aug 9, 2022
c1130e8
qml: temporarily set dark mode as default
jarolrod Aug 14, 2022
b5561ca
qml: introduce static backup for lottie blocktime element
jarolrod Aug 14, 2022
6e8b8af
qml: use static backup for lottie blocktime element
jarolrod Aug 14, 2022
25f55c2
qml: introduce cross icon
jarolrod Aug 16, 2022
3c49f6e
qml: introduce static backup for lottie network element
jarolrod Aug 14, 2022
5547fe8
qml: use static backup for lottie network element
jarolrod Aug 14, 2022
d71cbd9
qml: out with the stub in with the main
jarolrod Aug 15, 2022
e19e9ed
qml: introduce OutlineButton control
jarolrod Aug 16, 2022
c9961a3
qml: reduce usage of ternaries in Theme file
jarolrod Aug 21, 2022
3564a2f
qml: split background and indicator on option switch
promag Sep 8, 2022
8268975
qml: fix Bitcoin icon size to match spec
Sep 17, 2022
b265e76
qml: introduce static backup for lottie storage element
jarolrod Aug 17, 2022
88f9d8d
qml: connection settings IBD onboarding view page
jarolrod Aug 14, 2022
6421faf
qml: cleanup connection settings
jarolrod Aug 14, 2022
f5bc14a
qml: cleanup storage settings
jarolrod Aug 14, 2022
fcff35a
qml: cleanup storage location settings
jarolrod Aug 14, 2022
76c18f1
qml: cleanup developer options
jarolrod Aug 14, 2022
4d96307
qml: add AppMode QObject to store app device mode
Sep 13, 2022
dc5a69b
qml: adjust OnboardingInfo ContinueButton anchors for DESKTOP/MOBILE
Sep 16, 2022
c1d9c66
qml: introduce bitcoin-circle icon
jarolrod Sep 26, 2022
e8a2d29
qml: Header is not a Control
Oct 6, 2022
f13fae9
qml: fix onboarding width and padding to work for mobile
Sep 23, 2022
fa3b7cb
qml: Remove extra line breaks in StorageOptions header
Oct 11, 2022
56c9a5f
qml: fix anchor warning in ContinueButton
Oct 21, 2022
edffbed
qml: Allow OnboardingNav to display a middle element
jarolrod Oct 19, 2022
92b5932
qml: Rename OnboardingNav to NavigationBar
jarolrod Oct 19, 2022
1f75091
qml: Update block tip in the gui thread
promag Sep 28, 2021
b187cc4
qml: constrain Options views to 450 pixels plus padding
Oct 28, 2022
6b63b23
qml: conditionally load the banner in the OnboardingInfo control
jarolrod Oct 26, 2022
a0fa6e0
qml: allow OnboardingInfo to load a detail into its ColumnLayout
jarolrod Oct 26, 2022
c11c233
qml: The Setting control should just be of type ColumnLayout
jarolrod Dec 6, 2022
3ebb600
qml: make continueButton text optional in the OnboardingInfo control
jarolrod Nov 23, 2022
f03d726
qml: use the OnboardingInfo control for onboarding settings views
jarolrod Nov 23, 2022
e7d1f45
qml: deduplicate onboarding code with encapsulation of page definition
jarolrod Nov 23, 2022
84ce648
qml: ensure translation function for strings in use in onboarding views
jarolrod Nov 23, 2022
f70bb66
qml: ensure use of index decrement function instead of arithmetic
jarolrod Dec 6, 2022
add17b5
qml: make settings pages independent from onboarding pages
jarolrod Dec 7, 2022
6a5be76
qml: do not load settings pages from url inside of onboarding pages
jarolrod Dec 7, 2022
beb53e4
qml: define the settings pages nav elements at page instantiation
jarolrod Dec 7, 2022
219bdf7
qml: better ExternalLink control defaults
jarolrod Dec 7, 2022
25d33d6
qml: constrain ContinueButton width to 300 pixels
Nov 19, 2022
3fbd657
qml: remove extra Layout properties
Dec 8, 2022
d473b77
qml: give onboarding views descriptive names
jarolrod Dec 7, 2022
9a9940e
qml: remove unused inSubPage bool
jarolrod Dec 7, 2022
e85d29f
qml: do not load onboarding pages from url
jarolrod Dec 7, 2022
44f95d9
qml: remove wizard control
jarolrod Dec 13, 2022
89f940f
qml: introduce check icon
jarolrod Dec 14, 2022
313c57e
qml: entangle the About and Developer options pages
jarolrod Dec 9, 2022
10cb12f
qml: use node specific pages, introduce node settings
jarolrod Dec 9, 2022
ee06e0f
qml: remove extra ColumnLayouts
Dec 14, 2022
6709cc8
qml: add check mark to OptionButton control
jarolrod Dec 14, 2022
2cc2b63
qml: storage options description fixups
jarolrod Dec 14, 2022
78294c5
qml: make the TextButton control default values more usable
jarolrod Dec 7, 2022
3693fbd
qml: Make links, data location and numerical description value un-tra…
shaavan Aug 15, 2022
5746c22
qml: contain oboarding information in a scroll view
Nov 23, 2022
357e81e
qml: allow ContinueButton to stay at the bottom
Dec 21, 2022
d703688
qml, build: Add `OptionsQmlModel` class with basic implementation
hebasto Oct 26, 2022
bb3dfd5
qml: Add "-prune" settings to `OptionsQmlModel` class
hebasto Dec 14, 2022
54096da
qml: Wire Storage amount options to OptionsModel backend
jarolrod Dec 14, 2022
cd49e3a
qml: refactor initerror window
jarolrod Aug 16, 2022
5eb106c
qml: add and wire listen setting to OptionsModel backend
jarolrod Jan 24, 2023
275b50c
qml: add and wire upnp setting to OptionsModel backend
jarolrod Jan 24, 2023
e3226a5
qml: add and wire natpmp setting to OptionsModel backend
jarolrod Jan 24, 2023
8a9803b
qml: add and wire server setting to OptionsModel backend
jarolrod Jan 24, 2023
b2bb50e
Add getBlockTime interface method in src/interfaces/chain.h
shaavan Nov 28, 2022
3060217
qml: add ability to pause NodeModel
johnny9 Jan 29, 2023
2cf0004
qml: add additional properties in Header
johnny9 Jan 29, 2023
600bef6
qml: add sync time related properties to NodeModel
johnny9 Jan 29, 2023
0da49e0
qml: introduce ChainModel
johnny9 Jan 29, 2023
48f3fb7
qml: introduce the BlockClock
johnny9 Jan 29, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
111 changes: 52 additions & 59 deletions .cirrus.yml
Original file line number Diff line number Diff line change
@@ -1,61 +1,78 @@
env: # Global defaults
CIRRUS_CLONE_DEPTH: 1
PACKAGE_MANAGER_INSTALL: "apt-get update && apt-get install -y"
CIRRUS_LOG_TIMESTAMP: true
MAKEJOBS: "-j10"
TEST_RUNNER_PORT_MIN: "14000" # Must be larger than 12321, which is used for the http cache. See https://cirrus-ci.org/guide/writing-tasks/#http-cache
CI_FAILFAST_TEST_LEAVE_DANGLING: "1" # Cirrus CI does not care about dangling processes and setting this variable avoids killing the CI script itself on error
CCACHE_MAXSIZE: "200M"
CCACHE_DIR: "/tmp/ccache_dir"
CCACHE_NOHASHDIR: "1" # Debug info might contain a stale path if the build dir changes, but this is fine

# A self-hosted machine(s) can be used via Cirrus CI. It can be configured with
# multiple users to run tasks in parallel. No sudo permission is required.
#
# https://cirrus-ci.org/guide/persistent-workers/
#
# It is possible to select a specific persistent worker by label. Refer to the
# Generally, a persistent worker must run Ubuntu 23.04+ or Debian 12+.
#
# The following specific types should exist, with the following requirements:
# - small: For an x86_64 machine, with at least 2 vCPUs and 8 GB of memory.
# - medium: For an x86_64 machine, with at least 4 vCPUs and 16 GB of memory.
# - arm64: For an aarch64 machine, with at least 2 vCPUs and 8 GB of memory.
#
# CI jobs for the latter configuration can be run on x86_64 hardware
# by installing qemu-user-static, which works out of the box with
# podman or docker. Background: https://stackoverflow.com/a/72890225/313633
#
# The above machine types are matched to each task by their label. Refer to the
# Cirrus CI docs for more details.
#
# Generally, a persistent worker must run Ubuntu 23.04+ or Debian 12+.
# Specifically,
# - apt-get is required due to PACKAGE_MANAGER_INSTALL
# - podman-docker-4.1+ is required due to the use of `podman` when
# RESTART_CI_DOCKER_BEFORE_RUN is set and 4.1+ due to the bugfix in 4.1
# When a contributor maintains a fork of the repo, any pull request they make
# to their own fork, or to the main repository, will trigger two CI runs:
# one for the branch push and one for the pull request.
# This can be avoided by setting SKIP_BRANCH_PUSH=true as a custom env variable
# in Cirrus repository settings, accessible from
# https://cirrus-ci.com/github/my-organization/my-repository
#
# On machines that are persisted between CI jobs, RESTART_CI_DOCKER_BEFORE_RUN=1
# ensures that previous containers and artifacts are cleared before each run.
# This requires installing Podman instead of Docker.
#
# Futhermore:
# - podman-docker-4.1+ is required due to the bugfix in 4.1
# (https://github.com/bitcoin/bitcoin/pull/21652#issuecomment-1657098200)
# - The ./ci/ depedencies (with cirrus-cli) should be installed:
# - The ./ci/ dependencies (with cirrus-cli) should be installed. One-liner example
# for a single user setup with sudo permission:
#
# ```
# apt update && apt install screen python3 bash podman-docker curl -y && curl -L -o cirrus "https://github.com/cirruslabs/cirrus-cli/releases/latest/download/cirrus-linux-$(dpkg --print-architecture)" && mv cirrus /usr/local/bin/cirrus && chmod +x /usr/local/bin/cirrus
# apt update && apt install git screen python3 bash podman-docker uidmap slirp4netns curl -y && curl -L -o cirrus "https://github.com/cirruslabs/cirrus-cli/releases/latest/download/cirrus-linux-$(dpkg --print-architecture)" && mv cirrus /usr/local/bin/cirrus && chmod +x /usr/local/bin/cirrus
# ```
#
# - There are no strict requirements on the hardware, because having less CPUs
# runs the same CI script (maybe slower). To avoid rare and intermittent OOM
# due to short memory usage spikes, it is recommended to add (and persist)
# swap:
# - There are no strict requirements on the hardware. Having fewer CPU threads
# than recommended merely causes the CI script to run slower.
# To avoid rare and intermittent OOM due to short memory usage spikes,
# it is recommended to add (and persist) swap:
#
# ```
# fallocate -l 16G /swapfile_ci && chmod 600 /swapfile_ci && mkswap /swapfile_ci && swapon /swapfile_ci && ( echo '/swapfile_ci none swap sw 0 0' | sudo tee -a /etc/fstab )
# fallocate -l 16G /swapfile_ci && chmod 600 /swapfile_ci && mkswap /swapfile_ci && swapon /swapfile_ci && ( echo '/swapfile_ci none swap sw 0 0' | tee -a /etc/fstab )
# ```
#
# - To register the persistent worker, open a `screen` session and run:
#
# ```
# RESTART_CI_DOCKER_BEFORE_RUN=1 screen cirrus worker run --labels type=todo_fill_in_type --token todo_fill_in_token
# ```
#
# The following specific types should exist, with the following requirements:
# - small: For an x86_64 machine, recommended to have 2 CPUs and 8 GB of memory.
# - medium: For an x86_64 machine, recommended to have 4 CPUs and 16 GB of memory.
# - lunar: For a machine running the Linux kernel shipped with Ubuntu Lunar 23.04. The machine is recommended to have 4 CPUs and 16 GB of memory.
# - arm64: For an aarch64 machine, recommended to have 2 CPUs and 8 GB of memory.

# https://cirrus-ci.org/guide/tips-and-tricks/#sharing-configuration-between-tasks
filter_template: &FILTER_TEMPLATE
skip: $CIRRUS_REPO_FULL_NAME == "bitcoin-core/gui" && $CIRRUS_PR == "" # No need to run on the read-only mirror, unless it is a PR. https://cirrus-ci.org/guide/writing-tasks/#conditional-task-execution
# Allow forks to specify SKIP_BRANCH_PUSH=true and skip CI runs when a branch is pushed,
# but still run CI when a PR is created.
# https://cirrus-ci.org/guide/writing-tasks/#conditional-task-execution
skip: $SKIP_BRANCH_PUSH == "true" && $CIRRUS_PR == ""
stateful: false # https://cirrus-ci.org/guide/writing-tasks/#stateful-tasks

base_template: &BASE_TEMPLATE
<< : *FILTER_TEMPLATE
merge_base_script:
# Unconditionally install git (used in fingerprint_script).
- bash -c "$PACKAGE_MANAGER_INSTALL git"
# Require git (used in fingerprint_script).
- git --version || ( apt-get update && apt-get install -y git )
- if [ "$CIRRUS_PR" = "" ]; then exit 0; fi
- git fetch --depth=1 $CIRRUS_REPO_CLONE_URL "pull/${CIRRUS_PR}/merge"
- git checkout FETCH_HEAD # Use merged changes to detect silent merge conflicts
Expand All @@ -79,18 +96,15 @@ task:
name: 'lint'
<< : *BASE_TEMPLATE
container:
image: debian:bookworm
dockerfile: ci/lint_imagefile
cpu: 1
memory: 1G
# For faster CI feedback, immediately schedule the linters
<< : *CREDITS_TEMPLATE
python_cache:
folder: "/python_build"
fingerprint_script: cat .python-version /etc/os-release
unshallow_script:
- git fetch --unshallow --no-tags
lint_script:
- ./ci/lint_run_all.sh
- ./ci/lint_run.sh

task:
name: 'tidy'
Expand All @@ -111,31 +125,22 @@ task:
FILE_ENV: "./ci/test/00_setup_env_arm.sh"

task:
name: 'Win64, unit tests, no gui tests, no boost::process, no functional tests'
<< : *GLOBAL_TASK_TEMPLATE
persistent_worker:
labels:
type: small
env:
FILE_ENV: "./ci/test/00_setup_env_win64.sh"

task:
name: '32-bit CentOS, dash, gui'
name: 'CentOS, depends, gui'
<< : *GLOBAL_TASK_TEMPLATE
persistent_worker:
labels:
type: small
env:
FILE_ENV: "./ci/test/00_setup_env_i686_centos.sh"
FILE_ENV: "./ci/test/00_setup_env_native_centos.sh"

task:
name: 'previous releases, qt5 dev package and depends packages, DEBUG'
name: 'previous releases, depends DEBUG'
<< : *GLOBAL_TASK_TEMPLATE
persistent_worker:
labels:
type: small
env:
FILE_ENV: "./ci/test/00_setup_env_native_qt5.sh"
FILE_ENV: "./ci/test/00_setup_env_native_previous_releases.sh"

task:
name: 'TSan, depends, gui'
Expand All @@ -156,25 +161,13 @@ task:
env:
FILE_ENV: "./ci/test/00_setup_env_native_msan.sh"

task:
name: 'ASan + LSan + UBSan + integer, no depends, USDT'
enable_bpfcc_script:
# In the image build step, no external environment variables are available,
# so any settings will need to be written to the settings env file:
- sed -i "s|\${CIRRUS_CI}|true|g" ./ci/test/00_setup_env_native_asan.sh
<< : *GLOBAL_TASK_TEMPLATE
persistent_worker:
labels:
type: lunar # Must use the lunar-specific worker (needed for USDT functional tests)
env:
FILE_ENV: "./ci/test/00_setup_env_native_asan.sh"

task:
name: 'fuzzer,address,undefined,integer, no depends'
<< : *GLOBAL_TASK_TEMPLATE
persistent_worker:
labels:
type: medium
timeout_in: 240m # larger timeout, due to the high CPU demand
env:
FILE_ENV: "./ci/test/00_setup_env_native_fuzz.sh"

Expand All @@ -197,10 +190,10 @@ task:
FILE_ENV: "./ci/test/00_setup_env_native_nowallet_libbitcoinkernel.sh"

task:
name: 'macOS-cross 11.0, gui, no tests'
name: 'macOS-cross, gui, no tests'
<< : *GLOBAL_TASK_TEMPLATE
persistent_worker:
labels:
type: small
env:
FILE_ENV: "./ci/test/00_setup_env_mac.sh"
FILE_ENV: "./ci/test/00_setup_env_mac_cross.sh"
12 changes: 6 additions & 6 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,17 @@ insert_final_newline = true
trim_trailing_whitespace = true

# Source code files
[*.{h,cpp,py,sh}]
[*.{h,cpp,rs,py,sh}]
indent_size = 4

# .cirrus.yml, .fuzzbuzz.yml, etc.
# .cirrus.yml, etc.
[*.yml]
indent_size = 2

# Makefiles
[{*.am,Makefile.*.include}]
# Makefiles (only relevant for depends build)
[Makefile]
indent_style = tab

# Autoconf scripts
[configure.ac]
# CMake files
[{CMakeLists.txt,*.cmake,*.cmake.in}]
indent_size = 2
8 changes: 5 additions & 3 deletions .github/ISSUE_TEMPLATE/good_first_issue.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,11 @@ body:
id: useful-skills
attributes:
label: Useful Skills
description: For example, “`std::thread`”, “Qt5 GUI and async GUI design” or “basic understanding of Bitcoin mining and the Bitcoin Core RPC interface”.
validations:
required: false
description: For example, “`std::thread`”, “Qt6 GUI and async GUI design” or “basic understanding of Bitcoin mining and the Bitcoin Core RPC interface”.
value: |
* Compiling Bitcoin Core from source
* Running the C++ unit tests and the Python functional tests
* ...
- type: textarea
attributes:
label: Guidance for new contributors
Expand Down
21 changes: 21 additions & 0 deletions .github/ci-test-each-commit-exec.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#!/usr/bin/env bash
#
# Copyright (c) The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.

export LC_ALL=C.UTF-8

set -o errexit -o pipefail -o xtrace


echo "Running test-one-commit on $( git log -1 )"

# Use clang++, because it is a bit faster and uses less memory than g++
CC=clang CXX=clang++ cmake -B build -DWERROR=ON -DWITH_ZMQ=ON -DBUILD_GUI=ON -DBUILD_BENCH=ON -DBUILD_FUZZ_BINARY=ON -DWITH_USDT=ON -DCMAKE_CXX_FLAGS='-Wno-error=unused-member-function'

cmake --build build -j "$( nproc )"

ctest --output-on-failure --stop-on-failure --test-dir build -j "$( nproc )"

./build/test/functional/test_runner.py -j $(( $(nproc) * 2 )) --combinedlogslen=99999999
Loading