Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
546 commits
Select commit Hold shift + click to select a range
fa894b0
log: Properly log warnings with warn loglevel in addrdb
Jul 10, 2025
c4f9090
Merge bitcoin/bitcoin#32932: test: Add missing convert_to_json_for_cli
fanquake Jul 10, 2025
b80ead8
Merge bitcoin/bitcoin#32890: bench: Avoid tmp files in pwd
fanquake Jul 10, 2025
fad191f
ci: Avoid cd into build dir
Jul 4, 2025
9493165
cmake: Use newer signature of `qt6_add_lrelease` when available
hebasto Jul 10, 2025
44f3bae
depends: Force `CMAKE_EXPORT_NO_PACKAGE_REGISTRY=TRUE`
hebasto Jul 10, 2025
f435710
Resolve guix non-determinism with emplace_back instead of push_back
achow101 Jul 10, 2025
5ef0d48
Merge bitcoin/bitcoin#30605: Cluster linearization: separate tests fr…
glozow Jul 10, 2025
7f28e80
Merge bitcoin/bitcoin#32758: wallet: remove dead code in legacy walle…
achow101 Jul 10, 2025
bad998b
Merge bitcoin/bitcoin#32921: test: less ambiguous error if bitcoind i…
achow101 Jul 10, 2025
3c14186
Merge bitcoin/bitcoin#32930: Resolve guix non-determinism with emplac…
fanquake Jul 11, 2025
f5647c6
depends: fix libevent _WIN32_WINNT usage
fanquake Jun 30, 2025
12fb00f
Merge bitcoin/bitcoin#32927: fuzz: Add missing calls to `SetMockTime`…
fanquake Jul 11, 2025
44097dd
cmake: enable -Werror=dev in dev-mode preset
fanquake Jul 4, 2025
7b420ca
guix: configure with -Werror=dev
fanquake Jul 3, 2025
8f766f3
ci: enable -Werror=dev
fanquake Jul 3, 2025
c18bf0b
refactor: cleanup index logging
Sjors Jul 11, 2025
80ce513
Merge bitcoin/bitcoin#32933: log: Properly log warnings with warn log…
fanquake Jul 11, 2025
8ffbd7b
Merge bitcoin/bitcoin#32940: cmake: Use newer signature of `qt6_add_l…
fanquake Jul 11, 2025
23e15d4
Merge bitcoin/bitcoin#32631: refactor: Convert GenTxid to `std::variant`
glozow Jul 11, 2025
bb91d23
[txorphanage] change type of usage to int64_t
glozow Feb 8, 2025
08e58fa
[prep/refactor] move txorphanage to node namespace and directory
glozow May 15, 2025
15a4ec9
[prep/rpc] remove entry and expiry time from getorphantxs
glozow May 15, 2025
44f5327
[fuzz] add SeedRandomStateForTest(SeedRand::ZEROS) to txorphan
glozow Jul 3, 2025
6a13a61
Merge bitcoin/bitcoin#32937: Enable `-Werror=dev` in CI & Guix
hebasto Jul 11, 2025
12a6959
cmake: Drop no longer necessary "cmakeMinimumRequired" object
hebasto Jul 12, 2025
84ef552
fix spelling in tor.md docs
stutxo Jul 13, 2025
fa21c34
ci: [doc] reword debug log message
Jul 7, 2025
faa3171
ci: Use optimized Debug build type in test-each-commit
Jul 7, 2025
7566b40
Merge bitcoin/bitcoin#32961: fix spelling in tor.md docs
fanquake Jul 14, 2025
69b9ad0
Merge bitcoin/bitcoin#32954: cmake: Drop no longer necessary "cmakeMi…
fanquake Jul 14, 2025
97fb46d
Merge bitcoin/bitcoin#32880: ci: Avoid cd into build dir
fanquake Jul 14, 2025
e72cb20
Merge bitcoin/bitcoin#32943: depends: Force `CMAKE_EXPORT_NO_PACKAGE_…
fanquake Jul 14, 2025
28416f3
test: fix intermittent failure in rpc_invalidateblock.py
stratospher Jul 14, 2025
61e800e
test: headers sync timeout
stringintech Jun 18, 2025
fad0eb0
txgraph: reset quality when merging clusters (bugfix)
sipa Apr 13, 2025
6ba316e
txgraph: 1-or-2-tx split-off clusters are optimal (optimization)
sipa Apr 14, 2025
cfe9958
txgraph: track amount of work done in linearization (preparation)
sipa Apr 13, 2025
e96b00d
txgraph: make number of acceptable iterations configurable (feature)
sipa Apr 13, 2025
fa1fd07
ci: Enable more shellcheck
Jul 14, 2025
f3c2fc8
txgraph: add work limit to DoWork(), try optimal (feature)
sipa Apr 13, 2025
62ed1f9
txgraph: check that DoWork finds optimal if given high budget (tests)
sipa Jul 13, 2025
b53fab1
Merge bitcoin/bitcoin#32948: refactor: cleanup index logging
fanquake Jul 14, 2025
ba02c30
[doc] always CleanupTemporaryCoins after a mempool trim
glozow Jul 14, 2025
98ba2b1
[doc] MemPoolAccept coins views
glozow Jul 14, 2025
d8140f5
don't make a copy of m_non_base_coins
glozow Jul 14, 2025
c3cd7fc
[doc] remove references to now-nonexistent Finalize() function
glozow Jul 14, 2025
8dd24c2
[prep/test] modify test to not access TxOrphanage internals
glozow May 15, 2025
5136522
[prep/config] remove -maxorphantx
glozow May 15, 2025
d0af423
[prep/refactor] move DEFAULT_MAX_ORPHAN_TRANSACTIONS to txorphanage.h
glozow May 16, 2025
77ebe8f
[prep/test] have TxOrphanage remember its own limits in LimitOrphans
glozow May 16, 2025
3da6d7f
[prep/refactor] make TxOrphanage a virtual class implemented by TxOrp…
glozow Jun 3, 2025
b50bd72
[prep] change return type of EraseTx to bool
glozow Jun 9, 2025
1a41e79
[refactor] create aliases for TxOrphanage Count and Usage
glozow Jun 27, 2025
067365d
[p2p] overhaul TxOrphanage with smarter limits
glozow Apr 2, 2025
4d23d1d
[cleanup] remove unused rng param from LimitOrphans
glozow May 16, 2025
7ce3b7e
[unit test] basic TxOrphanage eviction and protection
glozow May 13, 2025
a2878cf
[unit test] strengthen GetChildrenFromSamePeer tests: results are in …
glozow May 15, 2025
24afee8
[fuzz] TxOrphanage protects peers that don't go over limit
glozow May 19, 2025
ea29c43
[p2p] bump DEFAULT_MAX_ORPHANAGE_LATENCY_SCORE to 3,000
glozow May 16, 2025
03aaaed
[prep] Return the made-reconsiderable announcements in AddChildrenToW…
sipa Jun 26, 2025
b113877
[fuzz] Add simulation fuzz test for TxOrphanage
sipa Jun 26, 2025
835f5c7
[prep/test] restart instead of bumpmocktime between p2p_orphan_handli…
glozow Jan 28, 2025
45c7a4b
[functional test] orphan resolution works in the presence of DoSy peers
glozow Jan 29, 2025
5002462
[bench] worst case LimitOrphans and EraseForBlock
glozow Jun 27, 2025
0087ba4
Merge bitcoin/bitcoin#32968: test: fix intermittent failure in rpc_in…
fanquake Jul 15, 2025
5d17e64
Merge bitcoin/bitcoin#32677: test: headers sync timeout
fanquake Jul 15, 2025
184159e
Merge bitcoin/bitcoin#32922: test: use notarized v28.2 binaries and f…
fanquake Jul 15, 2025
d89c6fa
wallet: Remove `upgradewallet` RPC
w0xlt Jul 10, 2025
4f502ba
doc: add alpine depends build instructions
willcl-ark May 20, 2025
8a4cfdd
wallet: Set migrated wallet name only on success
achow101 Jul 15, 2025
faaadda
init: [gui] Avoid UB/crash in InitAndLoadChainstate
Jul 16, 2025
2dfeb66
wallet: remove outdated `pszSkip` arg of database `Rewrite` func
rkrux Jul 16, 2025
9f713b8
Merge bitcoin/bitcoin#32837: depends: fix libevent `_WIN32_WINNT` usage
fanquake Jul 16, 2025
f3a613a
[cleanup] delete brittle test_mid_package_eviction
glozow Jul 14, 2025
b6d4688
[doc] reword comments in test_mid_package_replacement
glozow Jul 16, 2025
7aa557a
random: add fixed-size `std::array` generation
l0rinc Jul 15, 2025
54ab0bd
refactor: commit to 8 byte obfuscation keys
l0rinc Jul 15, 2025
a5141cd
test: make sure dbwrapper obfuscation key is never obfuscated
l0rinc Jul 16, 2025
618a30e
test: compare util::Xor with randomized inputs against simple impl
l0rinc Jul 16, 2025
9726979
bench: make ObfuscationBench more representative
l0rinc Dec 6, 2024
0b8bec8
scripted-diff: unify xor-vs-obfuscation nomenclature
l0rinc Apr 25, 2025
6bbf2d9
refactor: prepare `DBWrapper` for obfuscation key change
l0rinc Apr 5, 2025
fa5d296
refactor: prepare mempool_persist for obfuscation key change
l0rinc Apr 5, 2025
377aab8
refactor: move `util::Xor` to `Obfuscation().Xor`
l0rinc Jul 5, 2025
478d40a
refactor: encapsulate `vector`/`array` keys into `Obfuscation`
l0rinc Jul 5, 2025
e7114fc
optimization: migrate fixed-size obfuscation from `std::vector<std::b…
l0rinc Jul 2, 2025
248b6a2
optimization: peel align-head and unroll body to 64 bytes
l0rinc May 22, 2025
060695c
test: Failed load after migrate should restore backup
Jul 16, 2025
e22c359
test: wallet: Check direct file backup name.
davidgumberg Jun 30, 2025
f6ee59b
wallet: migration: Make backup in walletdir
davidgumberg Jul 2, 2025
70f1c99
wallet: Fix migration of wallets with pathnames.
davidgumberg Apr 12, 2025
63c6d36
test: Migration of a wallet with `../` in path.
davidgumberg Apr 12, 2025
41faef5
test: Migration fail recovery w/ `../` in path
davidgumberg Apr 16, 2025
f0bb3d5
test: Migration of a wallet ending in `/`
davidgumberg Jul 3, 2025
76fe0e5
test: Migration of a wallet ending in `../`
davidgumberg Jul 3, 2025
fad040a
ci: Use APT_LLVM_V in msan task
Feb 12, 2025
f3c791d
test: refactor: dedup `CBlockHeader` serialization
theStack Jun 12, 2025
0f044e8
test: avoid direct block header modification in feature_block.py
theStack Jun 14, 2025
0716382
test: remove header hash caching in CBlockHeader class
theStack Jun 12, 2025
8b09cc3
test: remove bare CBlockHeader `.rehash()`/`.calc_sha256()` calls
theStack Jun 12, 2025
23be0ec
test: rename CBlockHeader `.rehash()`/`.sha256` -> `.hash_int` for co…
theStack Jun 12, 2025
2118301
test: rename CBlockHeader `.hash` -> `.hash_hex` for consistency
theStack Jun 12, 2025
5fa3495
test: avoid unneeded block header hash -> integer conversions
theStack Jun 14, 2025
5863315
policy: make pathological transactions packed with legacy sigops non-…
darosior Mar 19, 2025
3671479
qa: unit test standardness of inputs packed with legacy sigops
darosior Mar 19, 2025
96da68a
qa: functional test a transaction running into the legacy sigop limit
darosior Mar 20, 2025
fa30b34
test: Do not pass tests on unhandled exceptions
Jul 17, 2025
3fc660d
mapport: turn -natpmp to on by default
darosior Jul 17, 2025
b2d07f8
Add release notes for -natpmp enabled by default
darosior Jul 17, 2025
fac90e5
test: Check that the GUI interactive reindex works
Jul 15, 2025
faa3e68
test: Log KeyboardInterrupt as exception
Jul 18, 2025
fa11eea
fuzz: Avoid non-determinism in process_message(s) target (PeerMan)
Jun 27, 2025
aeeeeec
fuzz: Reset dirty connman state in process_message(s) targets
Jun 27, 2025
fa9a3de
fuzz: DisableNextWrite
Jun 27, 2025
fa1a14a
fuzz: Reset chainman state in process_message(s) targets
Jul 1, 2025
672c85c
Merge bitcoin/bitcoin#32868: test: refactor: overhaul block hash dete…
fanquake Jul 18, 2025
31c4e77
test: fix ReadTopologicalSet unsigned integer overflow
ismaelsadeeq Jul 18, 2025
80067ac
Merge bitcoin/bitcoin#31829: p2p: improve TxOrphanage denial of servi…
achow101 Jul 18, 2025
e9edd43
Merge bitcoin/bitcoin#32521: policy: make pathological transactions p…
achow101 Jul 18, 2025
41ad2be
mempool: Avoid expensive loop in `removeForBlock` during IBD
l0rinc Jun 29, 2025
249889b
orphanage: avoid vtx iteration when no orphans
furszy Jun 11, 2025
5878f35
Merge bitcoin/bitcoin#31144: [IBD] multi-byte block obfuscation
achow101 Jul 19, 2025
9bc3343
Merge bitcoin/bitcoin#32999: ci: Use APT_LLVM_V in msan task
fanquake Jul 21, 2025
11c6a86
Merge bitcoin/bitcoin#33007: test: fix `ReadTopologicalSet` unsigned …
fanquake Jul 21, 2025
7129c9e
Merge bitcoin/bitcoin#32827: mempool: Avoid needless vtx iteration du…
glozow Jul 21, 2025
06ab3a3
tests: speed up coins_tests by parallelizing
ajtowns Jul 11, 2025
5600e6f
Squashed 'src/secp256k1/' changes from 4187a46649..b9313c6e1a
fanquake Jul 22, 2025
336b8be
Update secp256k1 subtree to latest master
fanquake Jul 22, 2025
faa2f3b
doc: Add release notes for 32521 (MAX_TX_LEGACY_SIGOPS)
Jul 22, 2025
e5a7dfd
p2p: rename GetAddresses -> GetAddressesUnsafe
danielabrozzoni Jul 21, 2025
1cb2399
doc: clarify the GetAddresses/GetAddressesUnsafe documentation
danielabrozzoni Jul 21, 2025
065e429
test: IsFinalTx returns true when there is no locktime
brunoerg Jul 21, 2025
6d80e99
test: external signer returns invalid JSON response
naiyoma Jun 24, 2025
da318fe
test: delete commented out tests
naiyoma Jun 24, 2025
b635bc0
rpc, util: Add EnsureUniqueWalletName
pablomartin4btc Jul 7, 2025
5d98fc7
Merge bitcoin/bitcoin#33030: test: check tx is final when there is no…
achow101 Jul 22, 2025
09f004b
Merge bitcoin/bitcoin#32945: tests: speed up coins_tests by paralleli…
achow101 Jul 22, 2025
c8ec423
Merge bitcoin/bitcoin#33020: test: delete commented-out tests and add…
achow101 Jul 22, 2025
900bb53
Merge bitcoin/bitcoin#32990: wallet: remove outdated `pszSkip` arg of…
achow101 Jul 22, 2025
1fc3a8e
rpc, test: Add EnsureUniqueWalletName tests
pablomartin4btc Jul 22, 2025
53ac704
rpc, test: Fix error message in unloadwallet
pablomartin4btc Jul 8, 2025
39fef1d
test: Add missing logging info for each test
pablomartin4btc Jun 30, 2025
90fd5ac
rpc, test: Fix error message in getdescriptoractivity
pablomartin4btc Jul 8, 2025
c5c1960
doc: Add release notes for changes in RPCs
pablomartin4btc Jul 22, 2025
49bbf9f
Merge bitcoin/bitcoin#33036: Update secp256k1 subtree to latest master
fanquake Jul 23, 2025
afd3b34
Merge bitcoin/bitcoin#33004: Enable `-natpmp` by default
fanquake Jul 23, 2025
cfb859e
Merge bitcoin/bitcoin#33037: doc: Add release notes for 32521 (MAX_TX…
fanquake Jul 23, 2025
d588575
refactor: miscellaneous GenTxid followups
marcofleon Jul 15, 2025
a9819b0
refactor: Change `FindTxForGetData` to take GenTxid instead of CInv
marcofleon Jul 15, 2025
73e754b
Merge bitcoin/bitcoin#33001: test: Do not pass tests on unhandled exc…
fanquake Jul 23, 2025
b94c635
test: check proper OP_2ROT behavior
brunoerg Jul 23, 2025
70772dd
[test] cut the number of transactions involved in 1p1c DoS tests
glozow Jul 23, 2025
eb65f57
[test] setmocktime instead of waiting in 1p1c tests
glozow Jul 23, 2025
eb13718
Merge bitcoin/bitcoin#31179: RPC: Add reserve member function to `Uni…
achow101 Jul 23, 2025
26a3730
doc: unify `developer-notes` and `productivity` header styles
l0rinc Jul 23, 2025
ddab466
doc: remove manual TOCs
l0rinc Jul 23, 2025
ca38cf7
doc: fix a few obvious typos in the affected files
l0rinc Jul 24, 2025
b59dc21
doc: Fix typos in asmap README
nervana21 Jul 24, 2025
16f7b43
Merge bitcoin/bitcoin#33049: doc: Fix typos in asmap README
fanquake Jul 24, 2025
e2f2df0
Merge bitcoin/bitcoin#32984: wallet: Set migrated wallet name only on…
fanquake Jul 24, 2025
1119ac5
Merge bitcoin/bitcoin#33040: doc: update headers and remove manual TOCs
fanquake Jul 24, 2025
fd3d80c
Merge bitcoin/bitcoin#33047: test: check proper OP_2ROT behavior
fanquake Jul 24, 2025
e17fb86
Merge bitcoin/bitcoin#32888: ci: Use optimized Debug build type in te…
fanquake Jul 24, 2025
f24771a
relax child-with-unconfirmed-parents rule
glozow Nov 22, 2024
525be56
[unit test] package submission 2p1c with 1 parent missing
glozow Dec 10, 2024
12f48d5
test: add chained 1p1c propagation test
instagibbs Jun 11, 2025
ea17a94
[doc] release note for relaxing requirement of all unconfirmed parent…
glozow Jun 12, 2025
5ad79b2
Merge bitcoin/bitcoin#32593: wallet, rpc: Move (Un)LockCoin WalletBat…
glozow Jul 24, 2025
fa18376
log: Remove function name from init logs
Jul 24, 2025
face812
log: [refactor] Use info level for init logs
Jul 25, 2025
443c32a
Merge bitcoin/bitcoin#32822: fuzz: Make process_message(s) more deter…
fanquake Jul 25, 2025
6cdc5a9
Merge bitcoin/bitcoin#32967: log: [refactor] Use info level for init …
fanquake Jul 25, 2025
faa1c3e
Revert "Merge bitcoin/bitcoin#32343: common: Close non-std fds before…
Jul 25, 2025
633d8ea
Merge bitcoin/bitcoin#32970: ci: Enable more shellcheck
fanquake Jul 25, 2025
fc16229
Merge bitcoin/bitcoin#32994: p2p: rename GetAddresses -> GetAddresses…
fanquake Jul 25, 2025
e3ba075
rpc, wallet: replace remaining hardcoded output types with `FormatAll…
theStack Jul 25, 2025
b08041c
Merge bitcoin/bitcoin#32845: rpc, test: Fix JSON parsing errors in un…
achow101 Jul 25, 2025
2e97541
Merge bitcoin/bitcoin#32944: wallet: Remove `upgradewallet` RPC
achow101 Jul 25, 2025
3b188b8
Merge bitcoin/bitcoin#31576: test: Move `script_assets_tests` into it…
achow101 Jul 25, 2025
251d020
init, wallet: replace hardcoded output types with `FormatAllOutputTypes`
theStack Jul 25, 2025
756da2a
refactor: extract `STATIC_SIZE` constant to prevector
l0rinc Apr 22, 2025
65ac7f6
refactor: modernize `CScriptBase` definition
l0rinc Jul 21, 2025
5212150
test: assert `CScript` allocation characteristics
l0rinc Apr 15, 2025
d5104cf
prevector: store `P2WSH`/`P2TR`/`P2PK` scripts inline
l0rinc Mar 27, 2025
75a5c82
Merge bitcoin/bitcoin#33063: util: Revert "common: Close non-std fds …
fanquake Jul 26, 2025
2630b64
test: add abortrescan RPC test
BrandonOdiwuor Feb 10, 2024
8aed477
test: fix RPC coverage check
BrandonOdiwuor Feb 5, 2024
e83699a
doc/zmq: fix unix socket path example
romanz Jul 26, 2025
1c10b73
RPC: Return permitbaremultisig and maxdatacarriersize in getmempoolinfo
kristapsk Apr 24, 2024
1bed0f7
guix: warn SOURCE_DATE_EPOCH set in guix-codesign
willcl-ark Jul 27, 2025
c830919
Merge bitcoin/bitcoin#33070: doc/zmq: fix unix socket path example
fanquake Jul 28, 2025
9cafdf8
Merge bitcoin/bitcoin#33064: test: fix RPC coverage check
fanquake Jul 28, 2025
fd06825
Merge bitcoin/bitcoin#33065: rpc, wallet: replace remaining hardcoded…
fanquake Jul 28, 2025
2a97ff4
Merge bitcoin/bitcoin#29954: RPC: Return `permitbaremultisig` and `ma…
glozow Jul 28, 2025
fa45ccc
doc: Add legacy wallet removal release notes
Jul 28, 2025
94b39ce
refactor: Change `m_tx_inventory_to_send` from `std::set<GenTxid>` to…
marcofleon Jul 18, 2025
3219847
Merge bitcoin/bitcoin#32279: [IBD] prevector: store `P2WSH`/`P2TR`/`P…
achow101 Jul 28, 2025
d6c37b2
qa: remove unnecessary tx removal from compact block
darosior Jul 28, 2025
f12d8b1
qa: test a compact block with an invalid transaction
darosior Jul 28, 2025
fb2dcbb
qa: test cached failure for compact block
darosior Jul 28, 2025
25884bd
qt, refactor: Move `FreespaceChecker` class into its own module
hebasto Jul 17, 2025
0ce041e
tracing: fix pointer argument handling in mempool_monitor.py
deadmanoz Jul 29, 2025
3724e9b
Merge bitcoin/bitcoin#32973: validation: docs and cleanups for MemPoo…
fanquake Jul 29, 2025
2931a87
ci: limit stack size to 512kb in native macOS jobs
fanquake Jul 23, 2025
3b23f95
ci: limit max stack size to 512 KiB
dergoegge Nov 25, 2024
5888b4a
doc: add note for watch-only wallet migration
rkrux Jul 3, 2025
953c90d
Merge bitcoin/bitcoin#33086: contrib: [tracing] fix pointer argument …
fanquake Jul 29, 2025
9954d6c
depends: hard-code necessary c(xx)flags rather than setting them per-…
theuni Jan 14, 2025
6757052
doc: move `cmake -B build -LH` up in Unix build docs
bufo24 May 13, 2025
2f410ad
Merge bitcoin/bitcoin#32263: cluster mempool: add TxGraph work controls
glozow Jul 29, 2025
c157438
qa: test that we do disconnect upon a second invalid compact block be…
darosior Jul 29, 2025
28ec91c
Merge bitcoin/bitcoin#33088: doc: move `cmake -B build -LH` up in Uni…
fanquake Jul 29, 2025
0bed946
Merge bitcoin/bitcoin#33079: ci: limit max stack size to 512 KiB
fanquake Jul 29, 2025
932e993
Merge bitcoin/bitcoin#33073: guix: warn SOURCE_DATE_EPOCH set in guix…
fanquake Jul 29, 2025
2cef200
Merge bitcoin/bitcoin#28944: wallet, rpc: add anti-fee-sniping to `se…
glozow Jul 29, 2025
6b99670
Merge bitcoin/bitcoin#33075: doc: Add legacy wallet removal release n…
achow101 Jul 29, 2025
9105887
Merge bitcoin/bitcoin#32273: wallet: Fix relative path backup during …
achow101 Jul 29, 2025
0060429
Merge bitcoin/bitcoin#32866: doc: add note for watch-only wallet migr…
achow101 Jul 29, 2025
0431a69
cleanup: remove unused `ser_writedata16be` and `ser_readdata16be`
l0rinc Feb 13, 2025
cab6736
ci: remove ninja-build from MSAN jobs
fanquake Jul 30, 2025
3a03f07
qt: Avoid header circular dependency
ajtowns Jul 29, 2025
c2ed576
fuzz: cover BanMan::IsDiscouraged
brunoerg Jul 30, 2025
3fe3fdb
Merge bitcoin/bitcoin#33102: fuzz: cover BanMan::IsDiscouraged
fanquake Jul 30, 2025
6653caf
ci: allow libc++ instrumentation other than msan
fanquake Jul 30, 2025
b09af2c
ci: instrument libc++ in TSAN job
fanquake Jul 30, 2025
7aa5b67
ci: remove DEBUG_LOCKORDER from TSAN job
fanquake Jul 30, 2025
3cb65ff
Merge bitcoin/bitcoin#33100: ci: remove `ninja-build` from MSAN jobs
fanquake Jul 30, 2025
dc78ed2
Merge bitcoin/bitcoin#33005: refactor: GenTxid type safety followups
glozow Jul 30, 2025
8a94cf8
Merge bitcoin/bitcoin#30635: rpc: add optional blockhash to waitforne…
glozow Jul 30, 2025
e6bfd95
Merge bitcoin-core/gui#881: Move `FreespaceChecker` class into its ow…
hebasto Jul 30, 2025
547c648
Merge bitcoin/bitcoin#32987: init: [gui] Avoid UB/crash in InitAndLoa…
achow101 Jul 30, 2025
8283af1
Merge bitcoin/bitcoin#32584: depends: hard-code necessary c(xx)flags …
achow101 Jul 30, 2025
aef2dbb
Merge bitcoin/bitcoin#33099: ci: allow for any libc++ intrumentation …
fanquake Jul 31, 2025
4b80147
test: Perform backup filename checks in migrate_and_get_rpc
achow101 Jul 30, 2025
5ee4e79
Merge bitcoin/bitcoin#31244: descriptors: MuSig2
glozow Jul 31, 2025
8712e07
Merge bitcoin/bitcoin#33093: refactor: remove unused `ser_writedata16…
achow101 Jul 31, 2025
bfc9d95
Merge bitcoin/bitcoin#33104: test: Perform backup filename checks in …
fanquake Aug 1, 2025
4f27e8c
Merge bitcoin/bitcoin#33083: qa: test that we do not disconnect a pee…
fanquake Aug 1, 2025
b8025b3
Merge bitcoin/bitcoin#32559: doc: add alpine build instructions
fanquake Aug 1, 2025
24246c3
Merge bitcoin/bitcoin#31385: package validation: relax the package-no…
fanquake Aug 1, 2025
75ed673
Merge bitcoin/bitcoin#33048: test: reduce runtime of p2p_opportunisti…
fanquake Aug 1, 2025
e07e253
test: fix anti-fee-sniping off-by-one error
ishaanam Aug 1, 2025
83a2216
Merge bitcoin/bitcoin#33118: test: fix anti-fee-sniping off-by-one error
fanquake Aug 3, 2025
27f0af5
p2qrh: implements validateaddress RPC
jbride Jun 17, 2025
09ae2a5
Experiment with increase of stack element size to 8000 bytes (up from…
jbride Jun 30, 2025
bcd7d07
P2QRH: spending related functionality
jbride Jul 11, 2025
32d439f
p2qrh: integration test
jbride Jul 22, 2025
64e4b53
qrh: now supported in deriveaddresses and getdescriptorinfo RPC calls
jbride Jul 31, 2025
d92688e
Merge branch 'p2qrh' into p2qrh
jbride Aug 4, 2025
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
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .cirrus.yml
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ task:
FILE_ENV: "./ci/test/00_setup_env_native_previous_releases.sh"

task:
name: 'TSan, depends, gui'
name: 'TSan, depends, no gui'
<< : *GLOBAL_TASK_TEMPLATE
persistent_worker:
labels:
Expand Down
11 changes: 9 additions & 2 deletions .github/ci-test-each-commit-exec.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,18 +17,25 @@ def run(cmd, **kwargs):


def main():
print("Running test-one-commit on ...")
print("Running tests on commit ...")
run(["git", "log", "-1"])

num_procs = int(run(["nproc"], stdout=subprocess.PIPE).stdout)

# Use clang++, because it is a bit faster and uses less memory than g++
run([
"cmake",
"-B",
"build",
"-Werror=dev",
# Use clang++, because it is a bit faster and uses less memory than g++
"-DCMAKE_C_COMPILER=clang",
"-DCMAKE_CXX_COMPILER=clang++",
# Use mold, because it is faster than the default linker
"-DCMAKE_EXE_LINKER_FLAGS=-fuse-ld=mold",
# Use Debug build type for more debug checks, but enable optimizations
"-DAPPEND_CXXFLAGS='-O3 -g2'",
"-DAPPEND_CFLAGS='-O3 -g2'",
"-DCMAKE_BUILD_TYPE=Debug",
"-DWERROR=ON",
"-DWITH_ZMQ=ON",
"-DBUILD_GUI=ON",
Expand Down
18 changes: 11 additions & 7 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ jobs:
git config user.name "CI"
- run: |
sudo apt-get update
sudo apt-get install clang ccache build-essential cmake ninja-build pkgconf python3-zmq libevent-dev libboost-dev libsqlite3-dev systemtap-sdt-dev libzmq3-dev qt6-base-dev qt6-tools-dev qt6-l10n-tools libqrencode-dev -y
sudo apt-get install clang mold ccache build-essential cmake ninja-build pkgconf python3-zmq libevent-dev libboost-dev libsqlite3-dev systemtap-sdt-dev libzmq3-dev qt6-base-dev qt6-tools-dev qt6-l10n-tools libqrencode-dev -y
- name: Compile and run tests
run: |
# Run tests on commits after the last merge commit and before the PR head commit
Expand Down Expand Up @@ -223,7 +223,7 @@ jobs:

- name: Generate build system
run: |
cmake -B build --preset vs2022 -DCMAKE_TOOLCHAIN_FILE="${VCPKG_INSTALLATION_ROOT}/scripts/buildsystems/vcpkg.cmake" ${{ matrix.generate-options }}
cmake -B build -Werror=dev --preset vs2022 -DCMAKE_TOOLCHAIN_FILE="${VCPKG_INSTALLATION_ROOT}/scripts/buildsystems/vcpkg.cmake" ${{ matrix.generate-options }}

- name: Save vcpkg binary cache
uses: actions/cache/save@v4
Expand Down Expand Up @@ -260,6 +260,7 @@ jobs:
env:
BITCOIND: '${{ github.workspace }}\build\bin\Release\bitcoind.exe'
BITCOINCLI: '${{ github.workspace }}\build\bin\Release\bitcoin-cli.exe'
BITCOINTX: '${{ github.workspace }}\build\bin\Release\bitcoin-tx.exe'
BITCOINUTIL: '${{ github.workspace }}\build\bin\Release\bitcoin-util.exe'
BITCOINWALLET: '${{ github.workspace }}\build\bin\Release\bitcoin-wallet.exe'
TEST_RUNNER_EXTRA: ${{ github.event_name != 'pull_request' && '--extended' || '' }}
Expand Down Expand Up @@ -389,16 +390,19 @@ jobs:
(Get-Content "test/config.ini") -replace '(?<=^SRCDIR=).*', '${{ github.workspace }}' -replace '(?<=^BUILDDIR=).*', '${{ github.workspace }}' -replace '(?<=^RPCAUTH=).*', '${{ github.workspace }}/share/rpcauth/rpcauth.py' | Set-Content "test/config.ini"
Get-Content "test/config.ini"

- name: Run util tests
run: py -3 test/util/test_runner.py
- name: Set previous release directory
run: |
echo "PREVIOUS_RELEASES_DIR=${{ runner.temp }}/previous_releases" >> "$GITHUB_ENV"

- name: Run rpcauth test
run: py -3 test/util/rpcauth-test.py
- name: Get previous releases
working-directory: test
run: ./get_previous_releases.py --target-dir $PREVIOUS_RELEASES_DIR

- name: Run functional tests
env:
# TODO: Fix the excluded test and re-enable it.
EXCLUDE: '--exclude wallet_multiwallet.py'
# feature_unsupported_utxo_db.py fails on windows because of emojis in the test data directory
EXCLUDE: '--exclude wallet_multiwallet.py,feature_unsupported_utxo_db.py'
TEST_RUNNER_EXTRA: ${{ github.event_name != 'pull_request' && '--extended' || '' }}
run: py -3 test/functional/test_runner.py --jobs $NUMBER_OF_PROCESSORS --ci --quiet --tmpdirprefix="$RUNNER_TEMP" --combinedlogslen=99999999 --timeout-factor=$TEST_RUNNER_TIMEOUT_FACTOR $EXCLUDE $TEST_RUNNER_EXTRA

Expand Down
8 changes: 2 additions & 6 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -590,11 +590,9 @@ set(Python3_FIND_FRAMEWORK LAST CACHE STRING "")
set(Python3_FIND_UNVERSIONED_NAMES FIRST CACHE STRING "")
mark_as_advanced(Python3_FIND_FRAMEWORK Python3_FIND_UNVERSIONED_NAMES)
find_package(Python3 3.10 COMPONENTS Interpreter)
if(Python3_EXECUTABLE)
set(PYTHON_COMMAND ${Python3_EXECUTABLE})
else()
if(NOT TARGET Python3::Interpreter)
list(APPEND configure_warnings
"Minimum required Python not found. Utils and rpcauth tests are disabled."
"Minimum required Python not found."
)
endif()

Expand Down Expand Up @@ -638,8 +636,6 @@ add_subdirectory(doc)

add_subdirectory(src)

include(cmake/tests.cmake)

include(Maintenance)
setup_split_debug_script()
add_maintenance_targets()
Expand Down
2 changes: 1 addition & 1 deletion CMakePresets.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
{
"version": 3,
"cmakeMinimumRequired": {"major": 3, "minor": 21, "patch": 0},
"configurePresets": [
{
"name": "vs2022",
Expand Down Expand Up @@ -62,6 +61,7 @@
"name": "dev-mode",
"displayName": "Developer mode, with all features/dependencies enabled",
"binaryDir": "${sourceDir}/build_dev_mode",
"errors": {"dev": true},
"cacheVariables": {
"BUILD_BENCH": "ON",
"BUILD_CLI": "ON",
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ Translations
------------

Changes to translations as well as new translations can be submitted to
[Bitcoin Core's Transifex page](https://www.transifex.com/bitcoin/bitcoin/).
[Bitcoin Core's Transifex page](https://explore.transifex.com/bitcoin/bitcoin/).

Translations are periodically pulled from Transifex and merged into the git repository. See the
[translation process](doc/translation_process.md) for details on how this works.
Expand Down
2 changes: 2 additions & 0 deletions ci/lint/04_install.sh → ci/lint/01_install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@

export LC_ALL=C

set -o errexit -o pipefail -o xtrace

export CI_RETRY_EXE="/ci_retry --"

pushd "/"
Expand Down
2 changes: 1 addition & 1 deletion ci/lint_imagefile
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ ENV LC_ALL=C.UTF-8
COPY ./ci/retry/retry /ci_retry
COPY ./.python-version /.python-version
COPY ./ci/lint/container-entrypoint.sh /entrypoint.sh
COPY ./ci/lint/04_install.sh /install.sh
COPY ./ci/lint/01_install.sh /install.sh

RUN /install.sh && \
echo 'alias lint="./ci/lint/06_script.sh"' >> ~/.bashrc && \
Expand Down
2 changes: 1 addition & 1 deletion ci/lint_run_all.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,6 @@ cp "./ci/retry/retry" "/ci_retry"
cp "./.python-version" "/.python-version"
mkdir --parents "/test/lint"
cp --recursive "./test/lint/test_runner" "/test/lint/"
set -o errexit; source ./ci/lint/04_install.sh
set -o errexit; source ./ci/lint/01_install.sh
set -o errexit
./ci/lint/06_script.sh
1 change: 1 addition & 0 deletions ci/test/00_setup_env_arm.sh
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ export USE_BUSY_BOX=true
export RUN_UNIT_TESTS=true
export RUN_FUNCTIONAL_TESTS=false
export GOAL="install"
export CI_LIMIT_STACK_SIZE=1
# -Wno-psabi is to disable ABI warnings: "note: parameter passing for argument of type ... changed in GCC 7.1"
# This could be removed once the ABI change warning does not show up by default
export BITCOIN_CONFIG="-DREDUCE_EXPORTS=ON -DCMAKE_CXX_FLAGS='-Wno-psabi -Wno-error=maybe-uninitialized'"
2 changes: 1 addition & 1 deletion ci/test/00_setup_env_i686_multiprocess.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ export CI_IMAGE_PLATFORM="linux/amd64"
export PACKAGES="llvm clang g++-multilib"
export DEP_OPTS="DEBUG=1 MULTIPROCESS=1"
export GOAL="install"
export TEST_RUNNER_EXTRA="--v2transport"
export TEST_RUNNER_EXTRA="--v2transport --usecli"
export BITCOIN_CONFIG="\
-DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_C_COMPILER='clang;-m32' \
Expand Down
2 changes: 1 addition & 1 deletion ci/test/00_setup_env_mac_native.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ export LC_ALL=C.UTF-8
export PIP_PACKAGES="--break-system-packages zmq"
export GOAL="install deploy"
export CMAKE_GENERATOR="Ninja"
export BITCOIN_CONFIG="-DBUILD_GUI=ON -DWITH_ZMQ=ON -DREDUCE_EXPORTS=ON"
export BITCOIN_CONFIG="-DBUILD_GUI=ON -DWITH_ZMQ=ON -DREDUCE_EXPORTS=ON -DCMAKE_EXE_LINKER_FLAGS='-Wl,-stack_size -Wl,0x80000'"
export CI_OS_NAME="macos"
export NO_DEPENDS=1
export OSX_SDK=""
2 changes: 1 addition & 1 deletion ci/test/00_setup_env_mac_native_fuzz.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
export LC_ALL=C.UTF-8

export CMAKE_GENERATOR="Ninja"
export BITCOIN_CONFIG="-DBUILD_FOR_FUZZING=ON"
export BITCOIN_CONFIG="-DBUILD_FOR_FUZZING=ON -DCMAKE_EXE_LINKER_FLAGS='-Wl,-stack_size -Wl,0x80000'"
export CI_OS_NAME="macos"
export NO_DEPENDS=1
export OSX_SDK=""
Expand Down
5 changes: 3 additions & 2 deletions ci/test/00_setup_env_native_asan.sh
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,12 @@ export APT_LLVM_V="20"
export PACKAGES="systemtap-sdt-dev clang-${APT_LLVM_V} llvm-${APT_LLVM_V} libclang-rt-${APT_LLVM_V}-dev python3-zmq qt6-base-dev qt6-tools-dev qt6-l10n-tools libevent-dev libboost-dev libzmq3-dev libqrencode-dev libsqlite3-dev ${BPFCC_PACKAGE}"
export NO_DEPENDS=1
export GOAL="install"
export CI_LIMIT_STACK_SIZE=1
export BITCOIN_CONFIG="\
-DWITH_USDT=ON -DWITH_ZMQ=ON -DBUILD_GUI=ON \
-DSANITIZERS=address,float-divide-by-zero,integer,undefined \
-DCMAKE_C_COMPILER=clang-${APT_LLVM_V} \
-DCMAKE_CXX_COMPILER=clang++-${APT_LLVM_V} \
-DCMAKE_C_COMPILER=clang \
-DCMAKE_CXX_COMPILER=clang++ \
-DCMAKE_C_FLAGS='-ftrivial-auto-var-init=pattern' \
-DCMAKE_CXX_FLAGS='-ftrivial-auto-var-init=pattern' \
-DAPPEND_CXXFLAGS='-std=c++23' \
Expand Down
5 changes: 2 additions & 3 deletions ci/test/00_setup_env_native_fuzz.sh
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,8 @@ export CI_CONTAINER_CAP="--cap-add SYS_PTRACE" # If run with (ASan + LSan), the
export BITCOIN_CONFIG="\
-DBUILD_FOR_FUZZING=ON \
-DSANITIZERS=fuzzer,address,undefined,float-divide-by-zero,integer \
-DCMAKE_C_COMPILER=clang-${APT_LLVM_V} \
-DCMAKE_CXX_COMPILER=clang++-${APT_LLVM_V} \
-DCMAKE_C_COMPILER=clang \
-DCMAKE_CXX_COMPILER=clang++ \
-DCMAKE_C_FLAGS='-ftrivial-auto-var-init=pattern' \
-DCMAKE_CXX_FLAGS='-ftrivial-auto-var-init=pattern' \
"
export LLVM_SYMBOLIZER_PATH="/usr/bin/llvm-symbolizer-${APT_LLVM_V}"
5 changes: 2 additions & 3 deletions ci/test/00_setup_env_native_fuzz_with_msan.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,12 @@
export LC_ALL=C.UTF-8

export CI_IMAGE_NAME_TAG="mirror.gcr.io/ubuntu:24.04"
LIBCXX_DIR="/msan/cxx_build/"
LIBCXX_DIR="/cxx_build/"
export MSAN_FLAGS="-fsanitize=memory -fsanitize-memory-track-origins=2 -fno-omit-frame-pointer -g -O1 -fno-optimize-sibling-calls"
LIBCXX_FLAGS="-nostdinc++ -nostdlib++ -isystem ${LIBCXX_DIR}include/c++/v1 -L${LIBCXX_DIR}lib -Wl,-rpath,${LIBCXX_DIR}lib -lc++ -lc++abi -lpthread -Wno-unused-command-line-argument"
export MSAN_AND_LIBCXX_FLAGS="${MSAN_FLAGS} ${LIBCXX_FLAGS}"

export CONTAINER_NAME="ci_native_fuzz_msan"
export PACKAGES="ninja-build"
export DEP_OPTS="DEBUG=1 NO_QT=1 CC=clang CXX=clang++ CFLAGS='${MSAN_FLAGS}' CXXFLAGS='${MSAN_AND_LIBCXX_FLAGS}'"
export GOAL="all"
# Setting CMAKE_{C,CXX}_FLAGS_DEBUG flags to an empty string ensures that the flags set in MSAN_FLAGS remain unaltered.
Expand All @@ -26,7 +25,7 @@ export BITCOIN_CONFIG="\
-DSANITIZERS=fuzzer,memory \
-DAPPEND_CPPFLAGS='-DBOOST_MULTI_INDEX_ENABLE_SAFE_MODE -U_FORTIFY_SOURCE' \
"
export USE_MEMORY_SANITIZER="true"
export USE_INSTRUMENTED_LIBCPP="MemoryWithOrigins"
export RUN_UNIT_TESTS="false"
export RUN_FUNCTIONAL_TESTS="false"
export RUN_FUZZ_TESTS=true
8 changes: 5 additions & 3 deletions ci/test/00_setup_env_native_msan.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,17 @@
export LC_ALL=C.UTF-8

export CI_IMAGE_NAME_TAG="mirror.gcr.io/ubuntu:24.04"
LIBCXX_DIR="/msan/cxx_build/"
export APT_LLVM_V="20"
LIBCXX_DIR="/cxx_build/"
export MSAN_FLAGS="-fsanitize=memory -fsanitize-memory-track-origins=2 -fno-omit-frame-pointer -g -O1 -fno-optimize-sibling-calls"
LIBCXX_FLAGS="-nostdinc++ -nostdlib++ -isystem ${LIBCXX_DIR}include/c++/v1 -L${LIBCXX_DIR}lib -Wl,-rpath,${LIBCXX_DIR}lib -lc++ -lc++abi -lpthread -Wno-unused-command-line-argument"
export MSAN_AND_LIBCXX_FLAGS="${MSAN_FLAGS} ${LIBCXX_FLAGS}"

export CONTAINER_NAME="ci_native_msan"
export PACKAGES="ninja-build"
export PACKAGES="clang-${APT_LLVM_V} llvm-${APT_LLVM_V} llvm-${APT_LLVM_V}-dev libclang-${APT_LLVM_V}-dev libclang-rt-${APT_LLVM_V}-dev"
export DEP_OPTS="DEBUG=1 NO_QT=1 CC=clang CXX=clang++ CFLAGS='${MSAN_FLAGS}' CXXFLAGS='${MSAN_AND_LIBCXX_FLAGS}'"
export GOAL="install"
export CI_LIMIT_STACK_SIZE=1
# Setting CMAKE_{C,CXX}_FLAGS_DEBUG flags to an empty string ensures that the flags set in MSAN_FLAGS remain unaltered.
# _FORTIFY_SOURCE is not compatible with MSAN.
export BITCOIN_CONFIG="\
Expand All @@ -25,4 +27,4 @@ export BITCOIN_CONFIG="\
-DSANITIZERS=memory \
-DAPPEND_CPPFLAGS='-U_FORTIFY_SOURCE' \
"
export USE_MEMORY_SANITIZER="true"
export USE_INSTRUMENTED_LIBCPP="MemoryWithOrigins"
1 change: 1 addition & 0 deletions ci/test/00_setup_env_native_previous_releases.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ export TEST_RUNNER_EXTRA="--previous-releases --coverage --extended --exclude fe
export RUN_UNIT_TESTS_SEQUENTIAL="true"
export RUN_UNIT_TESTS="false"
export GOAL="install"
export CI_LIMIT_STACK_SIZE=1
export DOWNLOAD_PREVIOUS_RELEASES="true"
export BITCOIN_CONFIG="\
-DWITH_ZMQ=ON -DBUILD_GUI=ON -DREDUCE_EXPORTS=ON \
Expand Down
10 changes: 7 additions & 3 deletions ci/test/00_setup_env_native_tsan.sh
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,12 @@ export LC_ALL=C.UTF-8
export CONTAINER_NAME=ci_native_tsan
export CI_IMAGE_NAME_TAG="mirror.gcr.io/ubuntu:24.04"
export APT_LLVM_V="20"
export PACKAGES="clang-${APT_LLVM_V} llvm-${APT_LLVM_V} libclang-rt-${APT_LLVM_V}-dev libc++abi-${APT_LLVM_V}-dev libc++-${APT_LLVM_V}-dev python3-zmq"
export DEP_OPTS="CC=clang-${APT_LLVM_V} CXX='clang++-${APT_LLVM_V} -stdlib=libc++'"
LIBCXX_DIR="/cxx_build/"
LIBCXX_FLAGS="-fsanitize=thread -nostdinc++ -nostdlib++ -isystem ${LIBCXX_DIR}include/c++/v1 -L${LIBCXX_DIR}lib -Wl,-rpath,${LIBCXX_DIR}lib -lc++ -lc++abi -lpthread -Wno-unused-command-line-argument"
export PACKAGES="clang-${APT_LLVM_V} llvm-${APT_LLVM_V} llvm-${APT_LLVM_V}-dev libclang-${APT_LLVM_V}-dev libclang-rt-${APT_LLVM_V}-dev python3-zmq"
export DEP_OPTS="CC=clang CXX=clang++ CXXFLAGS='${LIBCXX_FLAGS}' NO_QT=1"
export GOAL="install"
export CI_LIMIT_STACK_SIZE=1
export BITCOIN_CONFIG="-DWITH_ZMQ=ON -DSANITIZERS=thread \
-DAPPEND_CPPFLAGS='-DARENA_DEBUG -DDEBUG_LOCKORDER -DDEBUG_LOCKCONTENTION -D_LIBCPP_REMOVE_TRANSITIVE_INCLUDES'"
-DAPPEND_CPPFLAGS='-DARENA_DEBUG -DDEBUG_LOCKCONTENTION -D_LIBCPP_REMOVE_TRANSITIVE_INCLUDES'"
export USE_INSTRUMENTED_LIBCPP="Thread"
62 changes: 36 additions & 26 deletions ci/test/01_base_install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@

export LC_ALL=C.UTF-8

set -ex
set -o errexit -o pipefail -o xtrace

CFG_DONE="ci.base-install-done" # Use a global git setting to remember whether this script ran to avoid running it twice
CFG_DONE="${BASE_ROOT_DIR}/ci.base-install-done" # Use a global setting to remember whether this script ran to avoid running it twice

if [ "$(git config --global ${CFG_DONE})" == "true" ]; then
if [ "$( cat "${CFG_DONE}" || true )" == "done" ]; then
echo "Skip base install"
exit 0
fi
Expand Down Expand Up @@ -44,46 +44,56 @@ elif [ "$CI_OS_NAME" != "macos" ]; then
${CI_RETRY_EXE} bash -c "apt-get install --no-install-recommends --no-upgrade -y $PACKAGES $CI_BASE_PACKAGES"
fi

if [ -n "${APT_LLVM_V}" ]; then
update-alternatives --install /usr/bin/clang++ clang++ "/usr/bin/clang++-${APT_LLVM_V}" 100
update-alternatives --install /usr/bin/clang clang "/usr/bin/clang-${APT_LLVM_V}" 100
update-alternatives --install /usr/bin/llvm-symbolizer llvm-symbolizer "/usr/bin/llvm-symbolizer-${APT_LLVM_V}" 100
fi

if [ -n "$PIP_PACKAGES" ]; then
# shellcheck disable=SC2086
${CI_RETRY_EXE} pip3 install --user $PIP_PACKAGES
fi

if [[ ${USE_MEMORY_SANITIZER} == "true" ]]; then
${CI_RETRY_EXE} git clone --depth=1 https://github.com/llvm/llvm-project -b "llvmorg-20.1.0" /msan/llvm-project

cmake -G Ninja -B /msan/clang_build/ \
-DLLVM_ENABLE_PROJECTS="clang" \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_TARGETS_TO_BUILD=Native \
-DLLVM_ENABLE_RUNTIMES="compiler-rt;libcxx;libcxxabi;libunwind" \
-S /msan/llvm-project/llvm

ninja -C /msan/clang_build/ "$MAKEJOBS"
ninja -C /msan/clang_build/ install-runtimes

update-alternatives --install /usr/bin/clang++ clang++ /msan/clang_build/bin/clang++ 100
update-alternatives --install /usr/bin/clang clang /msan/clang_build/bin/clang 100
update-alternatives --install /usr/bin/llvm-symbolizer llvm-symbolizer /msan/clang_build/bin/llvm-symbolizer 100
if [[ -n "${USE_INSTRUMENTED_LIBCPP}" ]]; then
if [ -n "${APT_LLVM_V}" ]; then
${CI_RETRY_EXE} git clone --depth=1 https://github.com/llvm/llvm-project -b "llvmorg-$( clang --version | sed --silent 's@.*clang version \([0-9.]*\).*@\1@p' )" /llvm-project
else
${CI_RETRY_EXE} git clone --depth=1 https://github.com/llvm/llvm-project -b "llvmorg-20.1.8" /llvm-project

cmake -G Ninja -B /clang_build/ \
-DLLVM_ENABLE_PROJECTS="clang" \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_TARGETS_TO_BUILD=Native \
-DLLVM_ENABLE_RUNTIMES="compiler-rt;libcxx;libcxxabi;libunwind" \
-S /llvm-project/llvm

ninja -C /clang_build/ "$MAKEJOBS"
ninja -C /clang_build/ install-runtimes

update-alternatives --install /usr/bin/clang++ clang++ /clang_build/bin/clang++ 100
update-alternatives --install /usr/bin/clang clang /clang_build/bin/clang 100
update-alternatives --install /usr/bin/llvm-symbolizer llvm-symbolizer /clang_build/bin/llvm-symbolizer 100
fi

cmake -G Ninja -B /msan/cxx_build/ \
cmake -G Ninja -B /cxx_build/ \
-DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind" \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_USE_SANITIZER=MemoryWithOrigins \
-DLLVM_USE_SANITIZER="${USE_INSTRUMENTED_LIBCPP}" \
-DCMAKE_C_COMPILER=clang \
-DCMAKE_CXX_COMPILER=clang++ \
-DLLVM_TARGETS_TO_BUILD=Native \
-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF \
-DLIBCXXABI_USE_LLVM_UNWINDER=OFF \
-DLIBCXX_ABI_DEFINES="_LIBCPP_ABI_BOUNDED_ITERATORS;_LIBCPP_ABI_BOUNDED_ITERATORS_IN_STD_ARRAY;_LIBCPP_ABI_BOUNDED_ITERATORS_IN_STRING;_LIBCPP_ABI_BOUNDED_ITERATORS_IN_VECTOR;_LIBCPP_ABI_BOUNDED_UNIQUE_PTR" \
-DLIBCXX_HARDENING_MODE=debug \
-S /msan/llvm-project/runtimes
-S /llvm-project/runtimes

ninja -C /msan/cxx_build/ "$MAKEJOBS"
ninja -C /cxx_build/ "$MAKEJOBS"

# Clear no longer needed source folder
du -sh /msan/llvm-project
rm -rf /msan/llvm-project
du -sh /llvm-project
rm -rf /llvm-project
fi

if [[ "${RUN_TIDY}" == "true" ]]; then
Expand All @@ -105,4 +115,4 @@ if [ -n "$XCODE_VERSION" ] && [ ! -d "${DEPENDS_DIR}/SDKs/${OSX_SDK_BASENAME}" ]
tar -C "${DEPENDS_DIR}/SDKs" -xf "$OSX_SDK_PATH"
fi

git config --global ${CFG_DONE} "true"
echo -n "done" > "${CFG_DONE}"
Loading
Loading