Skip to content

Conversation

@kwvg
Copy link
Collaborator

@kwvg kwvg commented Oct 25, 2025

Additional Information

  • Dependency for backport: merge bitcoin#31100, #31626, #31840, #30584, #31982, #32086, #31998, #32505, #32568, #32690, #32731, #32716, #32837, #32266, #30095, #30137, #33580, partial bitcoin#30454 (build backports: part 4) #6919

  • The current windres fix was introduced by dash#6294 to fix mingw32 builds, the problem with the fix is that it assumes the target triple is fixed (i.e. x86_64-w64-mingw32), this may not hold true in the long run as Windows for ARM support is currently being tracked upstream (see bitcoin#31388).

    To mitigate this, the fix has been generalised by setting the WINDRES variable, which is checked by configure.ac (source).

    • This fix had the effect of breaking detection (see error below) as test -f cannot traverse through PATH (source), this has been resolved by using command -v, which is a better fit (source)

      make[1]: Entering directory '/distsrc-base/distsrc-23.0.0-rc.3-125-gca749d4d0d58-x86_64-w64-mingw32/src'
      make[2]: Entering directory '/distsrc-base/distsrc-23.0.0-rc.3-125-gca749d4d0d58-x86_64-w64-mingw32/src'
        CXX      dashd-bitcoind.o
      windres x86_64-w64-mingw32-windres not found, but is required to compile windows resource files
      
  • Versions below Qt 6.5 are considered (as of this writing), archived (source), this results in fetch failures that result in more usage of the cache fallback when trying to fetch Qt 5.15, which is now located in the archives (source). The URL has been updated to reflect the same.

  • While upstream reverted bitcoin#33494 with bitcoin#33577, the reasoning was to do with their cache and its interaction with the release process. As the underlying rationale for the revert doesn't match our case, we can retain the backport.

Breaking Changes

None expected.

Checklist

  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas (note: N/A)
  • I have added or updated relevant unit/integration/functional/e2e tests (note: N/A)
  • I have made corresponding changes to the documentation
  • I have assigned this pull request to a milestone (for repository code-owners and collaborators only)

@kwvg kwvg added this to the 23.1 milestone Oct 25, 2025
@github-actions
Copy link

github-actions bot commented Oct 25, 2025

✅ No Merge Conflicts Detected

This PR currently has no conflicts with other open PRs.

@kwvg kwvg changed the title merge bitcoin#28900, #29249, #33494, #30387, #31100, #31461, #31484, #31498, #31552, #31627, #31626, #30774, #31125, #31661, #31800, #31500, #31840, #30584, #31982, #32086, #31998, #32505, #32656, #32568, #32690, #32731, #32716, #32837, #33494, #32266, partial bitcoin#30454, #30940 (build backports: part 3) backport: merge bitcoin#28900, #29249, #33494, #30387, #31100, #31461, #31484, #31498, #31552, #31627, #31626, #30774, #31125, #31661, #31800, #31500, #31840, #30584, #31982, #32086, #31998, #32505, #32656, #32568, #32690, #32731, #32716, #32837, #33494, #32266, partial bitcoin#30454, #30940 (build backports: part 3) Oct 25, 2025
@kwvg kwvg force-pushed the build_bps_p3 branch 2 times, most recently from d00e4b0 to 8e6677d Compare October 25, 2025 14:28
@kwvg kwvg changed the title backport: merge bitcoin#28900, #29249, #33494, #30387, #31100, #31461, #31484, #31498, #31552, #31627, #31626, #30774, #31125, #31661, #31800, #31500, #31840, #30584, #31982, #32086, #31998, #32505, #32656, #32568, #32690, #32731, #32716, #32837, #33494, #32266, partial bitcoin#30454, #30940 (build backports: part 3) backport: merge bitcoin#28900, #29249, #33494, #30387, #31100, #31461, #31484, #31498, #31552, #31627, #31626, #30774, #31125, #31661, partial bitcoin#30454, #30940 (build backports: part 3) Oct 25, 2025
@DashCoreAutoGuix
Copy link

Guix Automation has began to build this PR tagged as v23.0.0-devpr6918.da547409. A new comment will be made when the image is pushed.

@kwvg
Copy link
Collaborator Author

kwvg commented Oct 25, 2025

Checksums for da54740

374b8ca91fba1fc6d7bacf34385610158448258577fc19d1b8dc1a81636ef0d2  dashcore-23.0.0-rc.3-109-gda547409765b-aarch64-linux-gnu-debug.tar.gz
602f4cfcdd0a50441ab4350f4d5263b1cabdf6bb721422b8885e4cb97a554f4c  dashcore-23.0.0-rc.3-109-gda547409765b-aarch64-linux-gnu.tar.gz
b9f94b15b1b46b59e11a402e6694b29799b59cd81297dccb92f44197459ac494  dashcore-23.0.0-rc.3-109-gda547409765b-arm64-apple-darwin-unsigned.tar.gz
8749ba030b85763d3253aed27a42ead2e425d1287d866ca4e1993da28c6205be  dashcore-23.0.0-rc.3-109-gda547409765b-arm64-apple-darwin-unsigned.zip
57361f1fa56029d1ca5ffbd48dccc70c4af81dc41f37cdae2a0d9c193f229846  dashcore-23.0.0-rc.3-109-gda547409765b-arm64-apple-darwin.tar.gz
d026bfe1dfd980878da672511863b03eb4ecc1f9e727ba6ab97990366ccaed3f  dashcore-23.0.0-rc.3-109-gda547409765b.tar.gz
7068201a8866c2ebee13982381ad699ca6c7d3de7b171905d5c5e05fadc68a56  dashcore-23.0.0-rc.3-109-gda547409765b-riscv64-linux-gnu-debug.tar.gz
2182a8344847f9c232dc93283b6795c8217fc43e4e96f6291c5119ea8b90c8d6  dashcore-23.0.0-rc.3-109-gda547409765b-riscv64-linux-gnu.tar.gz
b65d4bef05315af8808adee0b03c6fc7fc938b153691b6305748ccbdb6f5a69a  dashcore-23.0.0-rc.3-109-gda547409765b-x86_64-apple-darwin-unsigned.tar.gz
62cfa7784d80be8b21e667c815d566095642668bb49bab8112d7643c48baa16c  dashcore-23.0.0-rc.3-109-gda547409765b-x86_64-apple-darwin-unsigned.zip
15485ff343a7a073983b7ce8595e38406d5fd3cf234843ed309045a0cb986a01  dashcore-23.0.0-rc.3-109-gda547409765b-x86_64-apple-darwin.tar.gz
0658803d70f09d25816b2ed2e78a10426f1741f9cab52ea636444b31b58ec333  dashcore-23.0.0-rc.3-109-gda547409765b-x86_64-linux-gnu-debug.tar.gz
eba7f878d78b5a660c321fb182bd01e91eee7e3bd62dece5a27ba5b876852932  dashcore-23.0.0-rc.3-109-gda547409765b-x86_64-linux-gnu.tar.gz
ad813949a664ea81b6fa86250ab177dd910dd60715de8e494b3d5953cf130687  dashcore-23.0.0-rc.3-109-gda547409765b-win64-debug.zip
9285f655569bbf84da906a824777dfc58e7d34a5c85d67dba78868937798f6f9  dashcore-23.0.0-rc.3-109-gda547409765b-win64-setup-unsigned.exe
a8be5bd6e28bef4afa235cca1780eab6a2b983cd74bcc21d98a0c8fb28e0bcdc  dashcore-23.0.0-rc.3-109-gda547409765b-win64-unsigned.tar.gz
06874b5ca4008286289e43cbbc6b8970dcdf6fa72e7b1cebf1f32e5b8a1f580d  dashcore-23.0.0-rc.3-109-gda547409765b-win64.zip

@kwvg kwvg changed the title backport: merge bitcoin#28900, #29249, #33494, #30387, #31100, #31461, #31484, #31498, #31552, #31627, #31626, #30774, #31125, #31661, partial bitcoin#30454, #30940 (build backports: part 3) backport: merge bitcoin#28900, #29249, #29895, #30387, #31461, #31484, #31498, #31552, #31627, #30774, #31125, #31661, #31800, #31500, #33494, partial bitcoin#30940 (build backports: part 3) Oct 25, 2025
@DashCoreAutoGuix
Copy link

Guix Automation has completed; a release should be present here: https://github.com/dashpay/dash-dev-branches/releases/tag/v23.0.0-devpr6918.da547409. The image should be on dockerhub soon.

kwvg added 4 commits November 1, 2025 02:21
The current fix applies only to one package and assumes a fixed HOST,
neither is ideal. Propagate the fix instead.
As of this commit, Qt <6.5 are considered historical versions, which
are located at a different path. Adjust accordingly.
@DashCoreAutoGuix
Copy link

Guix Automation has began to build this PR tagged as v23.0.0-devpr6918.c8fcd68f. A new comment will be made when the image is pushed.

@DashCoreAutoGuix
Copy link

Guix Automation has completed; a release should be present here: https://github.com/dashpay/dash-dev-branches/releases/tag/v23.0.0-devpr6918.c8fcd68f. The image should be on dockerhub soon.

@kwvg
Copy link
Collaborator Author

kwvg commented Nov 3, 2025

Checksums for c8fcd68

98b1a3002e12417324de804c83b2ca08c1ea58cf18a799d044c4de6bc135966d  dashcore-23.0.0-rc.3-177-gc8fcd68f90ed-aarch64-linux-gnu-debug.tar.gz
df98db51d0776d2b8744a9851f647090f1929010a8cf166b45375b1211462b43  dashcore-23.0.0-rc.3-177-gc8fcd68f90ed-aarch64-linux-gnu.tar.gz
f949afa7cc674ceec984ac9cc91f117b035c400f49bda5a6d04ea7b970f8b421  dashcore-23.0.0-rc.3-177-gc8fcd68f90ed-arm64-apple-darwin-unsigned.tar.gz
5690761074aae77a13103fceb62a78b47b6e3f052df0f34bfa8fe410e80729bf  dashcore-23.0.0-rc.3-177-gc8fcd68f90ed-arm64-apple-darwin-unsigned.zip
d93cec0706b50540bf16d6d168993ad93a03971b7d19213cfb967620cb46bec6  dashcore-23.0.0-rc.3-177-gc8fcd68f90ed-arm64-apple-darwin.tar.gz
6d6630461c852261d4ae6c69560de35b325a4b3cd77afc3e1cb5173d4a7ff9f3  dashcore-23.0.0-rc.3-177-gc8fcd68f90ed.tar.gz
279e3508cfeaba3288cf0b6ef216c8c8a614eb3a8539dc430dc4c9377a3fd14c  dashcore-23.0.0-rc.3-177-gc8fcd68f90ed-riscv64-linux-gnu-debug.tar.gz
3294218116283fcee1f1c18c0fa1a4b16c077f850259fe19da69bb1adfadecc9  dashcore-23.0.0-rc.3-177-gc8fcd68f90ed-riscv64-linux-gnu.tar.gz
0dfade5e106be0e5603d8050ee56ee130c9b695874075eacab7210113621e339  dashcore-23.0.0-rc.3-177-gc8fcd68f90ed-x86_64-apple-darwin-unsigned.tar.gz
43dab1ab37dce5271433f30ee3c88db41a0b109e59cbe1336337fadeaaa02598  dashcore-23.0.0-rc.3-177-gc8fcd68f90ed-x86_64-apple-darwin-unsigned.zip
3f3ab6965fa01f975df5ad19fab5437d056319185bdc50142b17f9e1b87d2c81  dashcore-23.0.0-rc.3-177-gc8fcd68f90ed-x86_64-apple-darwin.tar.gz
1efcf301e792af27cd5901ad8e229901cc9fb2f96dff79e6281944e6dcbb7702  dashcore-23.0.0-rc.3-177-gc8fcd68f90ed-x86_64-linux-gnu-debug.tar.gz
36ec9d0de81b079f9349807db8bae51e5885c60c0fbefd4d5b11d7f5c19d0fe9  dashcore-23.0.0-rc.3-177-gc8fcd68f90ed-x86_64-linux-gnu.tar.gz
2bf3c4172b378b299c6b9d1c2d1b0ce3b622c0e1d8cfac3bcfe838f2cb64b0b4  dashcore-23.0.0-rc.3-177-gc8fcd68f90ed-win64-debug.zip
1fab6ddc639342aa495c24944b8db7fa35b521bdfce125210ac3fb716dbaf244  dashcore-23.0.0-rc.3-177-gc8fcd68f90ed-win64-setup-unsigned.exe
f20603ef26ba48c24cf3f647cf7a89c0ac78723ac754767860d8495e52470dfc  dashcore-23.0.0-rc.3-177-gc8fcd68f90ed-win64-unsigned.tar.gz
5ab0e0b51bde485fbca622318c6c2288056d29c05142522e51ca186738e4ccfc  dashcore-23.0.0-rc.3-177-gc8fcd68f90ed-win64.zip

@kwvg kwvg marked this pull request as ready for review November 3, 2025 11:52
Copy link

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Greptile Overview

Greptile Summary

This PR backports multiple Bitcoin Core build system improvements focused on dependency management, cross-compilation, and build reproducibility.

Key Changes:

  • Windres fix generalization: Replaces hardcoded x86_64-w64-mingw32-windres path with $(host_toolchain)windres variable to support future Windows ARM builds. Uses command -v instead of test -f for proper PATH traversal (fixes detection issue from dash#6294).
  • Qt 5.15.16 update: Updates from 5.15.14 to 5.15.16 and changes download URL from /official_releases/ to /archive/ since older Qt versions are now archived. Removes three patches (fix-macos-linker.patch, memory_resource.patch, zlib-timebits64.patch) that are now included upstream.
  • qrencode source change: Switches from fukuchi.org to GitHub releases for more reliable downloads.
  • Build ID improvements: Adds CPPFLAGS, CFLAGS, CXXFLAGS, LDFLAGS, NM, lld, and mold to gen_id for better cache invalidation when toolchain flags change.
  • Reproducibility improvements: Adds -fdebug-prefix-map and -fmacro-prefix-map flags to multiple packages, changes libevent to CMAKE_BUILD_TYPE=None.
  • BSD improvements: Adds -g flag to debug builds for FreeBSD/NetBSD/OpenBSD, adds NetBSD fixup patch for libevent.
  • Boost format change: Switches from .tar.bz2 to .tar.gz format.

All changes are consistent with upstream Bitcoin Core improvements and properly integrated into Dash's build system.

Confidence Score: 5/5

  • This PR is safe to merge with minimal risk - it contains well-tested Bitcoin Core backports
  • All changes are from established Bitcoin Core commits that have been tested upstream. The windres fix properly addresses the original issue from dash#6294 with a more flexible solution. URL changes are necessary for archived Qt versions and improve download reliability. Build reproducibility improvements follow best practices. No logic changes to core functionality.
  • No files require special attention

Important Files Changed

File Analysis

Filename Score Overview
src/Makefile.am 5/5 changed test -f to command -v for windres detection, which properly traverses PATH
depends/hosts/mingw32.mk 5/5 added mingw32_WINDRES variable to generalize windres fix for different target triples
depends/config.site.in 5/5 added WINDRES configuration for mingw32 builds to pass to configure.ac
depends/Makefile 5/5 added WINDRES substitution and updated gen_id calls with new parameters for cache busting
depends/packages/qt.mk 5/5 updated to Qt 5.15.16 and changed URL to archives location, removed patches now included upstream
depends/packages/qrencode.mk 5/5 changed download source from fukuchi.org to GitHub releases with updated hash
depends/gen_id 5/5 added FLAGS, lld, mold, and NM to build ID calculation for better cache invalidation
depends/packages/zeromq.mk 5/5 removed hardcoded windres path and changed to fdebug-prefix-map and fmacro-prefix-map

Sequence Diagram

sequenceDiagram
    participant Dev as Developer
    participant Make as depends/Makefile
    participant GenID as gen_id
    participant Host as hosts/*.mk
    participant Config as config.site.in
    participant Pkg as packages/*.mk
    participant Configure as configure.ac
    participant SrcMake as src/Makefile.am

    Dev->>Make: make -C depends
    Make->>GenID: Calculate build_id with CC/CXX/AR/NM/FLAGS
    GenID-->>Make: Returns build hash
    Make->>GenID: Calculate host_id with FLAGS/WINDRES
    GenID-->>Make: Returns host hash
    
    Make->>Host: Load mingw32.mk
    Host->>Host: Set mingw32_WINDRES=$(host_toolchain)windres
    Host-->>Make: Return host tools (CC/CXX/WINDRES/etc)
    
    Make->>Pkg: Build packages (qt/qrencode/libevent)
    Pkg->>Pkg: Download from archive URLs
    Pkg->>Pkg: Apply patches & build with prefix-map flags
    Pkg-->>Make: Packages built
    
    Make->>Config: Generate config.site
    Config->>Config: Set WINDRES for mingw32
    Config-->>Make: config.site created
    
    Dev->>Configure: ./configure --prefix=depends/triple
    Configure->>Config: Source config.site
    Config-->>Configure: Set WINDRES variable
    Configure->>Configure: AC_PATH_TOOL finds windres via PATH
    Configure-->>Dev: Configuration complete
    
    Dev->>SrcMake: make
    SrcMake->>SrcMake: Check windres with command -v $(WINDRES)
    SrcMake->>SrcMake: Compile .rc files using $(WINDRES)
    SrcMake-->>Dev: Build complete
Loading

38 files reviewed, no comments

Edit Code Review Agent Settings | Greptile

@coderabbitai
Copy link

coderabbitai bot commented Nov 3, 2025

Walkthrough

This PR updates build and test tooling and dependency manifests across the tree. Tests invoking Python security/symbol checks now forward the C++ compiler variables (CXX/CXXFLAGS) instead of C compiler variables (CC/CFLAGS) and test source files were converted from .c to .cpp. Many dependency packages switched archives from .tar.bz2 to .tar.gz with updated SHA256s. Host toolchain handling was extended to include WINDRES and related config.site/make changes. Fetch/stamp behavior and gen_id diagnostics were expanded, several package versions/patches changed, and BSD debug CFLAGS now include -g.

Sequence Diagram(s)

mermaid
sequenceDiagram
participant Make as Makefile/Make
participant Env as Environment (CFLAGS/CXXFLAGS/etc)
participant Py as Python test script
participant Compiler as C/C++ compiler

Note over Make,Env: Old flow (before PR)
Make->>Env: export CC, CFLAGS
Make->>Py: run test script with env {CC, CFLAGS, LDFLAGS, CPPFLAGS}
Py->>Compiler: invoke using CC + CFLAGS
Compiler-->>Py: produce object/executable
Py-->>Make: produce test output

Note over Make,Env `#D3E4CD`: New flow (after PR) 
Make->>Env: export CXX, CXXFLAGS
Make->>Py: run test script with env {CXX, CXXFLAGS, LDFLAGS, CPPFLAGS}
Py->>Compiler: invoke using CXX + CXXFLAGS
Compiler-->>Py: produce .cpp-compiled object/executable
Py-->>Make: produce test output

mermaid
sequenceDiagram
participant HostMake as depends/Makefiles
participant gen_id as depends/gen_id
participant Tools as Host toolchain (CC,CXX,AR,NM,WINDRES,...)

HostMake->>Tools: assemble flags (CPPFLAGS,CFLAGS,CXXFLAGS,LDFLAGS) + NM/WINDRES
HostMake->>gen_id: call gen_id with expanded flags
gen_id->>Tools: probe versions (AR,RANLIB,STRIP,CC,CXX,ld.lld,mold,NM,WINDRES)
Tools-->>gen_id: return diagnostics
gen_id-->>HostMake: print BEGIN/END blocks with diagnostics

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~75 minutes

Areas requiring extra attention:

  • contrib/devtools/test-security-check.py and contrib/devtools/test-symbol-check.py: parameter/flow changes (cc→cxx), source file extensions, and environment variable wiring for test invocations
  • depends/funcs.mk: fetch logic and stamp filename changes affecting caching and integrity behavior
  • Multiple depends/packages/*.mk files: widespread tar.bz2→tar.gz conversions and updated SHA256s — spot-check archive names and hashes
  • depends/packages/qt.mk and depends/patches/qt/*: version bump and removal of macOS-related patches (risky, high surface area)
  • WINDRES integration: depends/hosts/*, depends/hosts/mingw32.mk, depends/config.site.in, and src/Makefile.am — verify Windows resource compile/link steps and PATH checks
  • depends/gen_id: added diagnostics for lld/mold/NM — validate output parsing and non-failure behavior

Pre-merge checks and finishing touches

✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed Title clearly references specific Bitcoin PRs being backported (28900, 29249, 29895, 30387, 31461, 31484, 31498, 31552, 31627, 30774, 31125, 31661, 31800, 31500, 33494, partial 30940) and indicates this is part 3 of build backports, accurately reflecting the changeset's scope.
Description check ✅ Passed Description is directly related to the changeset, explaining the rationale for backporting (generalizing windres fix, updating Qt URLs, retaining bitcoin#33494), fixing detection issues with command -v, and noting no breaking changes expected.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c8fcd68 and 8e07d33.

📒 Files selected for processing (34)
  • Makefile.am (1 hunks)
  • contrib/containers/guix/Dockerfile (0 hunks)
  • contrib/devtools/test-security-check.py (2 hunks)
  • contrib/devtools/test-symbol-check.py (8 hunks)
  • contrib/guix/manifest.scm (0 hunks)
  • depends/.gitignore (1 hunks)
  • depends/Makefile (2 hunks)
  • depends/funcs.mk (2 hunks)
  • depends/gen_id (3 hunks)
  • depends/hosts/freebsd.mk (1 hunks)
  • depends/hosts/netbsd.mk (1 hunks)
  • depends/hosts/openbsd.mk (1 hunks)
  • depends/packages/boost.mk (1 hunks)
  • depends/packages/capnp.mk (1 hunks)
  • depends/packages/fontconfig.mk (1 hunks)
  • depends/packages/gmp.mk (1 hunks)
  • depends/packages/libXau.mk (1 hunks)
  • depends/packages/libevent.mk (2 hunks)
  • depends/packages/libmultiprocess.mk (1 hunks)
  • depends/packages/libxcb_util.mk (1 hunks)
  • depends/packages/libxcb_util_image.mk (1 hunks)
  • depends/packages/libxcb_util_keysyms.mk (1 hunks)
  • depends/packages/libxcb_util_render.mk (1 hunks)
  • depends/packages/libxcb_util_wm.mk (1 hunks)
  • depends/packages/native_capnp.mk (1 hunks)
  • depends/packages/qrencode.mk (1 hunks)
  • depends/packages/qt.mk (2 hunks)
  • depends/packages/xproto.mk (1 hunks)
  • depends/packages/zeromq.mk (1 hunks)
  • depends/patches/libevent/netbsd_fixup.patch (1 hunks)
  • depends/patches/qt/fix-macos-linker.patch (0 hunks)
  • depends/patches/qt/memory_resource.patch (0 hunks)
  • depends/patches/qt/zlib-timebits64.patch (0 hunks)
  • doc/dependencies.md (1 hunks)
💤 Files with no reviewable changes (5)
  • contrib/containers/guix/Dockerfile
  • contrib/guix/manifest.scm
  • depends/patches/qt/fix-macos-linker.patch
  • depends/patches/qt/memory_resource.patch
  • depends/patches/qt/zlib-timebits64.patch
🚧 Files skipped from review as they are similar to previous changes (18)
  • depends/hosts/netbsd.mk
  • depends/.gitignore
  • depends/packages/capnp.mk
  • depends/packages/libxcb_util_image.mk
  • depends/hosts/freebsd.mk
  • depends/packages/libXau.mk
  • depends/packages/boost.mk
  • depends/packages/gmp.mk
  • depends/packages/libxcb_util.mk
  • depends/packages/fontconfig.mk
  • depends/patches/libevent/netbsd_fixup.patch
  • depends/funcs.mk
  • depends/packages/libxcb_util_render.mk
  • depends/packages/libmultiprocess.mk
  • depends/packages/xproto.mk
  • depends/packages/libevent.mk
  • depends/packages/zeromq.mk
  • Makefile.am
🧰 Additional context used
📓 Path-based instructions (3)
doc/**

📄 CodeRabbit inference engine (CLAUDE.md)

Unless specifically prompted, avoid making changes to the doc directory (documentation)

Files:

  • doc/dependencies.md
depends/**

📄 CodeRabbit inference engine (CLAUDE.md)

Unless specifically prompted, avoid making changes to the depends directory (dependency build system)

Files:

  • depends/gen_id
  • depends/packages/libxcb_util_keysyms.mk
  • depends/packages/libxcb_util_wm.mk
  • depends/packages/native_capnp.mk
  • depends/packages/qrencode.mk
  • depends/packages/qt.mk
  • depends/Makefile
  • depends/hosts/openbsd.mk
contrib/**

📄 CodeRabbit inference engine (CLAUDE.md)

Unless specifically prompted, avoid making changes to the contrib directory (contributed scripts)

Files:

  • contrib/devtools/test-security-check.py
  • contrib/devtools/test-symbol-check.py
🧠 Learnings (3)
📓 Common learnings
Learnt from: knst
Repo: dashpay/dash PR: 6871
File: contrib/guix/libexec/build.sh:358-360
Timestamp: 2025-10-05T20:38:28.457Z
Learning: In the Dash repository, when backporting code from Bitcoin Core, typos and minor issues in comments should be kept as-is to reduce merge conflicts in future backports, even if they remain unfixed in Bitcoin Core's master branch.
Learnt from: knst
Repo: dashpay/dash PR: 6916
File: src/univalue/include/univalue.h:81-88
Timestamp: 2025-10-25T07:08:51.918Z
Learning: For backport PRs from bitcoin/bitcoin, bitcoin-core/gui, etc., backported changes should match the original upstream PRs even if they appear strange, modify vendored code, or seem to violate coding guidelines. Still flag genuine issues like bugs, undefined behavior, crashes, compilation errors, or linter failures.
Learnt from: PastaPastaPasta
Repo: dashpay/dash PR: 6804
File: src/qt/proposalwizard.cpp:40-42
Timestamp: 2025-08-11T17:16:36.654Z
Learning: In the Dash repository, when a PR adds new files that are not from Bitcoin backports, these files must be added to the list in test/util/data/non-backported.txt. This applies to newly created files like qt/proposalwizard.{h,cpp} and forms/proposalwizard.ui. Limited exemptions may exist for subtrees and similar cases.
Learnt from: kwvg
Repo: dashpay/dash PR: 6543
File: src/wallet/receive.cpp:240-251
Timestamp: 2025-02-06T14:34:30.466Z
Learning: Pull request #6543 is focused on move-only changes and refactoring, specifically backporting from Bitcoin. Behavior changes should be proposed in separate PRs.
Learnt from: UdjinM6
Repo: dashpay/dash PR: 6786
File: ci/test/04_install.sh:99-101
Timestamp: 2025-08-01T07:46:37.840Z
Learning: In backport PRs like #6786, UdjinM6 prefers to defer non-critical fixes (such as shell command expansion issues) to separate commits/PRs to maintain focus on the primary backport objectives, consistent with the project's pattern of avoiding scope creep.
Learnt from: knst
Repo: dashpay/dash PR: 6883
File: src/rpc/rawtransaction.cpp:1088-1125
Timestamp: 2025-10-13T12:37:12.357Z
Learning: In backport pull requests (especially from Bitcoin Core), treat "moved" or refactored code as out-of-scope for content-level review. Focus validation on verifying that code is moved correctly: no fields added, no fields removed, no fields reordered, and no unexpected changes beyond whitespace adjustments. Pre-existing issues in the upstream code should be preserved to maintain fidelity to the original implementation.
📚 Learning: 2025-01-06T09:51:03.167Z
Learnt from: kwvg
Repo: dashpay/dash PR: 6516
File: depends/patches/gmp/include_ldflags_in_configure.patch:557-621
Timestamp: 2025-01-06T09:51:03.167Z
Learning: The `GMP_GCC_ARM_UMODSI` macro checks only the compiler version, and `GMP_GCC_MIPS_O32` relies on the `-mabi=32` flag. Therefore, `$LDFLAGS` is irrelevant to these tests.

Applied to files:

  • depends/gen_id
📚 Learning: 2025-07-20T18:42:49.794Z
Learnt from: CR
Repo: dashpay/dash PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-07-20T18:42:49.794Z
Learning: Applies to guix-build* : Do not make changes under any circumstances to build system files in guix-build*

Applied to files:

  • depends/Makefile
🧬 Code graph analysis (2)
contrib/devtools/test-security-check.py (1)
contrib/devtools/test-symbol-check.py (3)
  • test_ELF (32-71)
  • test_PE (123-171)
  • test_MACHO (73-121)
contrib/devtools/test-symbol-check.py (1)
contrib/devtools/test-security-check.py (3)
  • env_flags (31-40)
  • test_ELF (55-91)
  • test_PE (93-114)
🪛 Flake8 (7.3.0)
contrib/devtools/test-security-check.py

[error] 64-64: continuation line under-indented for visual indent

(E128)


[error] 66-66: continuation line under-indented for visual indent

(E128)


[error] 68-68: continuation line under-indented for visual indent

(E128)


[error] 70-70: continuation line under-indented for visual indent

(E128)


[error] 72-72: continuation line under-indented for visual indent

(E128)


[error] 74-74: continuation line under-indented for visual indent

(E128)


[error] 76-76: continuation line under-indented for visual indent

(E128)


[error] 79-79: continuation line under-indented for visual indent

(E128)


[error] 81-81: continuation line under-indented for visual indent

(E128)


[error] 83-83: continuation line under-indented for visual indent

(E128)


[error] 85-85: continuation line under-indented for visual indent

(E128)


[error] 87-87: continuation line under-indented for visual indent

(E128)


[error] 89-89: continuation line under-indented for visual indent

(E128)


[error] 100-100: continuation line under-indented for visual indent

(E128)


[error] 102-102: continuation line under-indented for visual indent

(E128)


[error] 104-104: continuation line under-indented for visual indent

(E128)


[error] 106-106: continuation line under-indented for visual indent

(E128)


[error] 108-108: continuation line under-indented for visual indent

(E128)


[error] 110-110: continuation line under-indented for visual indent

(E128)


[error] 112-112: continuation line under-indented for visual indent

(E128)


[error] 125-125: continuation line under-indented for visual indent

(E128)


[error] 127-127: continuation line under-indented for visual indent

(E128)


[error] 129-129: continuation line under-indented for visual indent

(E128)


[error] 131-131: continuation line under-indented for visual indent

(E128)


[error] 133-133: continuation line under-indented for visual indent

(E128)


[error] 137-137: continuation line under-indented for visual indent

(E128)


[error] 139-139: continuation line under-indented for visual indent

(E128)


[error] 141-141: continuation line under-indented for visual indent

(E128)

contrib/devtools/test-symbol-check.py

[error] 53-53: continuation line under-indented for visual indent

(E128)


[error] 71-71: continuation line under-indented for visual indent

(E128)


[error] 91-91: continuation line under-indented for visual indent

(E128)


[error] 108-108: continuation line under-indented for visual indent

(E128)


[error] 121-121: continuation line under-indented for visual indent

(E128)


[error] 140-140: continuation line under-indented for visual indent

(E128)


[error] 141-141: continuation line over-indented for visual indent

(E127)


[error] 155-155: continuation line under-indented for visual indent

(E128)

🪛 markdownlint-cli2 (0.18.1)
doc/dependencies.md

36-36: Link text should be descriptive

(MD059, descriptive-link-text)

🪛 Ruff (0.14.3)
contrib/devtools/test-security-check.py

43-43: subprocess call: check for execution of untrusted input

(S603)


43-43: Consider iterable unpacking instead of concatenation

Replace with iterable unpacking

(RUF005)


44-44: subprocess call: check for execution of untrusted input

(S603)


48-48: subprocess call: check for execution of untrusted input

(S603)


48-48: Consider [*cxx, source, '-o', executable, *env_flags()] instead of concatenation

Replace with [*cxx, source, '-o', executable, *env_flags()]

(RUF005)

contrib/devtools/test-symbol-check.py

25-25: subprocess call: check for execution of untrusted input

(S603)


25-25: Consider iterable unpacking instead of concatenation

Replace with iterable unpacking

(RUF005)


26-26: subprocess call: check for execution of untrusted input

(S603)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Build container / Build container
🔇 Additional comments (12)
depends/packages/libxcb_util_wm.mk (1)

4-5: LGTM! Archive format updated correctly.

The file extension and SHA256 hash have been updated consistently to reflect the switch from .tar.bz2 to .tar.gz format.

depends/packages/libxcb_util_keysyms.mk (1)

4-5: LGTM! Archive format updated correctly.

The file extension and SHA256 hash have been updated consistently to reflect the switch from .tar.bz2 to .tar.gz format.

depends/packages/qrencode.mk (1)

3-6: LGTM! Source migration validated by successful builds.

The migration from fukuchi.org tar.bz2 to GitHub tar.gz aligns with the broader dependency standardization pattern in this PR. The successful Guix builds reported in the PR comments confirm the new download URL is accessible and the SHA256 hash is correct.

depends/Makefile (3)

150-154: LGTM! Build ID generation correctly expanded.

The addition of NM='$(build_NM)' to the build_id invocation is consistent with other tool variables (AR, RANLIB, STRIP) and aligns with the expanded diagnostics in depends/gen_id. The line-continuation formatting improves readability.


155-159: LGTM! Host ID generation correctly expanded.

The addition of CPPFLAGS/CFLAGS/CXXFLAGS/LDFLAGS and NM to the host_id invocation is correct and ensures these build parameters are properly captured in the cache key, which will invalidate the cache when toolchain flags or tools change.


242-242: LGTM! WINDRES substitution correctly added.

The WINDRES substitution follows the established pattern for other tool variables and ensures the Windows resource compiler is properly configured in the generated config.site file.

depends/gen_id (4)

4-6: LGTM! Usage documentation correctly updated.

The usage comment accurately reflects the new parameters (CPPFLAGS, CFLAGS, CXXFLAGS, LDFLAGS, NM) accepted by the script and the corrected script name (gen_id).


38-44: LGTM! FLAGS diagnostic block correctly added.

The new FLAGS block provides visibility into the preprocessor, compiler, and linker flags, which is essential for cache invalidation when these parameters change. The implementation is consistent with other diagnostic blocks in the script.


61-70: LGTM! Linker version diagnostics correctly added.

The lld and mold version blocks capture alternative linker information, which is important for build reproducibility (e.g., when cross-compiling for macOS with lld). The bash -c invocations are consistent with other tool version checks, and failures are acceptable per the script's opportunistic detection design (line 16-17).


77-81: LGTM! NM diagnostic block correctly added.

The NM block follows the established pattern for tool diagnostics (version output + environment variables), consistent with the existing AR/RANLIB/STRIP blocks. This ensures NM tool changes properly invalidate the build cache.

depends/packages/native_capnp.mk (2)

2-2: Version bump looks correct.

The version update from 1.0.1 to 1.1.0 is syntactically correct. The hash and download URL will be verified below.


6-11: SHA256 hash verified correctly.

The hash 07167580e563f5e821e3b2af1c238c16ec7181612650c5901330fa9a0da50939 matches the Cap'n Proto 1.1.0 release file downloaded from the official source. The configuration options to disable OpenSSL and zlib support are appropriate for the version update.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@UdjinM6 UdjinM6 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM c8fcd68, one suggestion

moreutils
;; Compression and archiving
tar
bzip2
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

29895: should drop it from Dockerfile-s too I guess

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Resolved in latest push

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missed one in contrib/guix/Dockerfile

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We have two Guix containers, one introduced by dash#5285 and the other introduced by dash#5449, I'm not aware of usage of the former (based on fanquake/core-review's container, source, hasn't been synced in a while) and I use the latter. @knst, can we drop the former container?

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The reference to INSTALL.md was introduced in f9508cb (source), upstream, it's an external link (see below)

## Option 3: Using fanquake's container image
Please refer to fanquake's instructions
[here](https://github.com/fanquake/core-review/tree/master/guix).

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not using contrib/guix/Dockerfile either. I guess we could point INSTALL.md to contrib/containers/guix/Dockerfile and drop contrib/guix/Dockerfile then. @knst @PastaPastaPasta ?

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can be done in a separate PR though

@kwvg kwvg requested a review from UdjinM6 November 3, 2025 21:21
@DashCoreAutoGuix
Copy link

Guix Automation has began to build this PR tagged as v23.0.0-devpr6918.8e07d338. A new comment will be made when the image is pushed.

@DashCoreAutoGuix
Copy link

Guix Automation has completed; a release should be present here: https://github.com/dashpay/dash-dev-branches/releases/tag/v23.0.0-devpr6918.8e07d338. The image should be on dockerhub soon.

Copy link

@UdjinM6 UdjinM6 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

utACK 8e07d33

@PastaPastaPasta PastaPastaPasta merged commit eea343b into dashpay:develop Nov 4, 2025
37 of 47 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants