diff --git a/contrib/guix/guix-build b/contrib/guix/guix-build index 715568c1543..ee285bf322c 100755 --- a/contrib/guix/guix-build +++ b/contrib/guix/guix-build @@ -73,19 +73,7 @@ mkdir -p "$VERSION_BASE" # SOURCE_DATE_EPOCH should not unintentionally be set ################ -if [ -n "$SOURCE_DATE_EPOCH" ] && [ -z "$FORCE_SOURCE_DATE_EPOCH" ]; then -cat << EOF -ERR: Environment variable SOURCE_DATE_EPOCH is set which may break reproducibility. - - Aborting... - -Hint: You may want to: - 1. Unset this variable: \`unset SOURCE_DATE_EPOCH\` before rebuilding - 2. Set the 'FORCE_SOURCE_DATE_EPOCH' environment variable if you insist on - using your own epoch -EOF -exit 1 -fi +check_source_date_epoch ################ # Build directories should not exist diff --git a/contrib/guix/guix-codesign b/contrib/guix/guix-codesign index dedee135b4a..ac7aae3a180 100755 --- a/contrib/guix/guix-codesign +++ b/contrib/guix/guix-codesign @@ -67,6 +67,12 @@ EOF exit 1 fi +################ +# SOURCE_DATE_EPOCH should not unintentionally be set +################ + +check_source_date_epoch + ################ # The codesignature git worktree should not be dirty ################ diff --git a/contrib/guix/libexec/prelude.bash b/contrib/guix/libexec/prelude.bash index f7fc932dfd3..d25c371a10c 100644 --- a/contrib/guix/libexec/prelude.bash +++ b/contrib/guix/libexec/prelude.bash @@ -21,6 +21,26 @@ check_tools() { done } +################ +# SOURCE_DATE_EPOCH should not unintentionally be set +################ + +check_source_date_epoch() { + if [ -n "$SOURCE_DATE_EPOCH" ] && [ -z "$FORCE_SOURCE_DATE_EPOCH" ]; then + cat << EOF +ERR: Environment variable SOURCE_DATE_EPOCH is set which may break reproducibility. + + Aborting... + +Hint: You may want to: + 1. Unset this variable: \`unset SOURCE_DATE_EPOCH\` before rebuilding + 2. Set the 'FORCE_SOURCE_DATE_EPOCH' environment variable if you insist on + using your own epoch +EOF + exit 1 + fi +} + check_tools cat env readlink dirname basename git ################ diff --git a/contrib/tracing/mempool_monitor.py b/contrib/tracing/mempool_monitor.py index 22efa91783f..eb29b374158 100755 --- a/contrib/tracing/mempool_monitor.py +++ b/contrib/tracing/mempool_monitor.py @@ -66,7 +66,7 @@ BPF_PERF_OUTPUT(replaced_events); int trace_added(struct pt_regs *ctx) { struct added_event added = {}; void *phash = NULL; - bpf_usdt_readarg(1, ctx, phash); + bpf_usdt_readarg(1, ctx, &phash); bpf_probe_read_user(&added.hash, sizeof(added.hash), phash); bpf_usdt_readarg(2, ctx, &added.vsize); bpf_usdt_readarg(3, ctx, &added.fee); @@ -78,9 +78,9 @@ int trace_added(struct pt_regs *ctx) { int trace_removed(struct pt_regs *ctx) { struct removed_event removed = {}; void *phash = NULL, *preason = NULL; - bpf_usdt_readarg(1, ctx, phash); + bpf_usdt_readarg(1, ctx, &phash); bpf_probe_read_user(&removed.hash, sizeof(removed.hash), phash); - bpf_usdt_readarg(2, ctx, preason); + bpf_usdt_readarg(2, ctx, &preason); bpf_probe_read_user_str(&removed.reason, sizeof(removed.reason), preason); bpf_usdt_readarg(3, ctx, &removed.vsize); bpf_usdt_readarg(4, ctx, &removed.fee); @@ -93,9 +93,9 @@ int trace_removed(struct pt_regs *ctx) { int trace_rejected(struct pt_regs *ctx) { struct rejected_event rejected = {}; void *phash = NULL, *preason = NULL; - bpf_usdt_readarg(1, ctx, phash); + bpf_usdt_readarg(1, ctx, &phash); bpf_probe_read_user(&rejected.hash, sizeof(rejected.hash), phash); - bpf_usdt_readarg(2, ctx, preason); + bpf_usdt_readarg(2, ctx, &preason); bpf_probe_read_user_str(&rejected.reason, sizeof(rejected.reason), preason); rejected_events.perf_submit(ctx, &rejected, sizeof(rejected)); return 0; @@ -104,12 +104,12 @@ int trace_rejected(struct pt_regs *ctx) { int trace_replaced(struct pt_regs *ctx) { struct replaced_event replaced = {}; void *phash_replaced = NULL, *phash_replacement = NULL; - bpf_usdt_readarg(1, ctx, phash_replaced); + bpf_usdt_readarg(1, ctx, &phash_replaced); bpf_probe_read_user(&replaced.replaced_hash, sizeof(replaced.replaced_hash), phash_replaced); bpf_usdt_readarg(2, ctx, &replaced.replaced_vsize); bpf_usdt_readarg(3, ctx, &replaced.replaced_fee); bpf_usdt_readarg(4, ctx, &replaced.replaced_entry_time); - bpf_usdt_readarg(5, ctx, phash_replacement); + bpf_usdt_readarg(5, ctx, &phash_replacement); bpf_probe_read_user(&replaced.replacement_hash, sizeof(replaced.replacement_hash), phash_replacement); bpf_usdt_readarg(6, ctx, &replaced.replacement_vsize); bpf_usdt_readarg(7, ctx, &replaced.replacement_fee); diff --git a/doc/build-unix.md b/doc/build-unix.md index 9c46df2a9cb..9696063cd1d 100644 --- a/doc/build-unix.md +++ b/doc/build-unix.md @@ -9,6 +9,10 @@ To Build ```bash cmake -B build +``` +Run `cmake -B build -LH` to see the full list of available options. + +```bash cmake --build build # Append "-j N" for N parallel jobs cmake --install build # Optional ``` @@ -171,13 +175,6 @@ In this case there is no dependency on SQLite or Berkeley DB. Mining is also possible in disable-wallet mode using the `getblocktemplate` RPC call. -Additional Configure Flags --------------------------- -A list of additional configure flags can be displayed with: - - cmake -B build -LH - - Setup and Build Example: Arch Linux ----------------------------------- This example lists the steps necessary to setup and build a command line only distribution of the latest changes on Arch Linux: diff --git a/doc/release-notes.md b/doc/release-notes.md index 0519f3b8366..e4cf2f0b50d 100644 --- a/doc/release-notes.md +++ b/doc/release-notes.md @@ -48,6 +48,12 @@ Notable changes - #32521 policy: make pathological transactions packed with legacy sigops non-standard +### RPC + +- The `dumptxoutset` RPC now requires a `type` parameter to be specified. To maintain pre + v29.0 behavior, use the `latest` parameter. Documenting this change was missed in the v29.0 + release notes. (#30808) + ### Updated Settings - The `-maxmempool` and `-dbcache` startup parameters are now capped on @@ -104,6 +110,7 @@ Notable changes - #32837 depends: fix libevent _WIN32_WINNT usage - #32943 depends: Force CMAKE_EXPORT_NO_PACKAGE_REGISTRY=TRUE - #32954 cmake: Drop no longer necessary "cmakeMinimumRequired" object +- #33073 guix: warn SOURCE_DATE_EPOCH set in guix-codesign ### Gui @@ -126,6 +133,10 @@ Notable changes - #32777 doc: fix Transifex 404s - #32846 doc: clarify that the "-j N" goes after the "--build build" part - #32858 doc: Add workaround for vcpkg issue with paths with embedded spaces +- #33070 doc/zmq: fix unix socket path example +- #33088 doc: move cmake -B build -LH up in Unix build docs +- #33133 rpc: fix getpeerinfo ping duration unit docs +- #33119 rpc: Fix 'getdescriptoractivity' RPCHelpMan, add test to verify fix ### CI @@ -136,19 +147,24 @@ Notable changes - #32187 refactor: Remove spurious virtual from final ~CZMQNotificationInterface - #32454 tracing: fix invalid argument in mempool_monitor - #32771 contrib: tracing: Fix read of pmsg_type in p2p_monitor.py +- #33086 contrib: [tracing] fix pointer argument handling in mempool_monitor.py Credits ======= Thanks to everyone who directly contributed to this release: +- 0xB10C - achow101 - Antoine Poinsot - benthecarman - bigspider - Brandon Odiwuor - brunoerg +- Bufo +- Christewart - davidgumberg +- deadmanoz - dergoegge - enirox001 - fanquake @@ -168,6 +184,7 @@ Thanks to everyone who directly contributed to this release: - nervana21 - pablomartin4btc - rkrux +- romanz - ryanofsky - Sjors - theStack diff --git a/doc/zmq.md b/doc/zmq.md index 0a74d6eef97..44cdc0e2c26 100644 --- a/doc/zmq.md +++ b/doc/zmq.md @@ -84,7 +84,7 @@ For instance: $ bitcoind -zmqpubhashtx=tcp://127.0.0.1:28332 \ -zmqpubhashtx=tcp://192.168.1.2:28332 \ -zmqpubhashblock="tcp://[::1]:28333" \ - -zmqpubrawtx=ipc:///tmp/bitcoind.tx.raw \ + -zmqpubrawtx=unix:/tmp/bitcoind.tx.raw \ -zmqpubhashtxhwm=10000 Each PUB notification has a topic and body, where the header diff --git a/src/rpc/blockchain.cpp b/src/rpc/blockchain.cpp index 2c4e471babf..8cbca51ccbf 100644 --- a/src/rpc/blockchain.cpp +++ b/src/rpc/blockchain.cpp @@ -2625,7 +2625,7 @@ static RPCHelpMan getdescriptoractivity() {RPCResult::Type::STR_HEX, "blockhash", /*optional=*/true, "The blockhash this spend appears in (omitted if unconfirmed)"}, {RPCResult::Type::NUM, "height", /*optional=*/true, "Height of the spend (omitted if unconfirmed)"}, {RPCResult::Type::STR_HEX, "spend_txid", "The txid of the spending transaction"}, - {RPCResult::Type::NUM, "spend_vout", "The vout of the spend"}, + {RPCResult::Type::NUM, "spend_vin", "The input index of the spend"}, {RPCResult::Type::STR_HEX, "prevout_txid", "The txid of the prevout"}, {RPCResult::Type::NUM, "prevout_vout", "The vout of the prevout"}, {RPCResult::Type::OBJ, "prevout_spk", "", ScriptPubKeyDoc()}, diff --git a/src/rpc/net.cpp b/src/rpc/net.cpp index bda07365e0e..9942386c7fc 100644 --- a/src/rpc/net.cpp +++ b/src/rpc/net.cpp @@ -80,7 +80,7 @@ static RPCHelpMan ping() { return RPCHelpMan{"ping", "\nRequests that a ping be sent to all other nodes, to measure ping time.\n" - "Results provided in getpeerinfo, pingtime and pingwait fields are decimal seconds.\n" + "Results are provided in getpeerinfo.\n" "Ping command is handled in queue with all other commands, so it measures processing backlog, not just network ping.\n", {}, RPCResult{RPCResult::Type::NONE, "", ""}, @@ -145,9 +145,9 @@ static RPCHelpMan getpeerinfo() {RPCResult::Type::NUM, "bytesrecv", "The total bytes received"}, {RPCResult::Type::NUM_TIME, "conntime", "The " + UNIX_EPOCH_TIME + " of the connection"}, {RPCResult::Type::NUM, "timeoffset", "The time offset in seconds"}, - {RPCResult::Type::NUM, "pingtime", /*optional=*/true, "The last ping time in milliseconds (ms), if any"}, - {RPCResult::Type::NUM, "minping", /*optional=*/true, "The minimum observed ping time in milliseconds (ms), if any"}, - {RPCResult::Type::NUM, "pingwait", /*optional=*/true, "The duration in milliseconds (ms) of an outstanding ping (if non-zero)"}, + {RPCResult::Type::NUM, "pingtime", /*optional=*/true, "The last ping time in seconds, if any"}, + {RPCResult::Type::NUM, "minping", /*optional=*/true, "The minimum observed ping time in seconds, if any"}, + {RPCResult::Type::NUM, "pingwait", /*optional=*/true, "The duration in seconds of an outstanding ping (if non-zero)"}, {RPCResult::Type::NUM, "version", "The peer version, such as 70001"}, {RPCResult::Type::STR, "subver", "The string version"}, {RPCResult::Type::BOOL, "inbound", "Inbound (true) or Outbound (false)"}, diff --git a/test/functional/rpc_getdescriptoractivity.py b/test/functional/rpc_getdescriptoractivity.py index a0dc43718bc..6ddbdfd52d0 100755 --- a/test/functional/rpc_getdescriptoractivity.py +++ b/test/functional/rpc_getdescriptoractivity.py @@ -182,6 +182,7 @@ class GetBlocksActivityTest(BitcoinTestFramework): assert result['activity'][2]['type'] == 'spend' assert result['activity'][2]['spend_txid'] == sent2['txid'] + assert result['activity'][2]['spend_vin'] == 0 assert result['activity'][2]['prevout_txid'] == sent1['txid'] assert result['activity'][2]['blockhash'] == blockhash_2