ci: Use optimized Debug build type in test-each-commit #32888

pull maflcko wants to merge 2 commits into bitcoin:master from maflcko:2507-ci-each-commit-debug changing 2 files +9 −3
  1. maflcko commented at 8:25 am on July 7, 2025: member
    An optimized debug build is mostly as fast as a release build, because hot loops of heavy debug-only code are rare. So use that setting in the test-each-commit CI, to enable more checks almost “for free”.
  2. DrahtBot added the label Tests on Jul 7, 2025
  3. DrahtBot commented at 8:25 am on July 7, 2025: contributor

    The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.

    Code Coverage & Benchmarks

    For details see: https://corecheck.dev/bitcoin/bitcoin/pulls/32888.

    Reviews

    See the guideline for information on the review process.

    Type Reviewers
    ACK Prabhat1308, willcl-ark

    If your review is incorrectly listed, please react with 👎 to this comment and the bot will ignore it on the next update.

    Conflicts

    Reviewers, this pull request conflicts with the following ones:

    • #31802 (Add bitcoin-{node,gui} to release binaries for IPC by Sjors)

    If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first.

  4. maflcko force-pushed on Jul 7, 2025
  5. Prabhat1308 commented at 12:04 pm on July 7, 2025: contributor

    ACK fa21d3c

    changes seem good as discussed in #32829 . Can we use mold as a linker in other Linux based system workflows ? dependencies we have seem to satisfy the deps here https://github.com/rui314/mold?tab=readme-ov-file#how-to-build

  6. maflcko commented at 12:12 pm on July 7, 2025: member

    Can we use mold as a linker in other Linux based system workflows ?

    Sure, happy to review a follow-up. Only place to avoid it would probably the ci tasks that mirror the guix build (win-cross, mac-cross)

  7. theuni commented at 2:43 pm on July 7, 2025: member
    Is it necessary to use -g here? The output in #32829, for ex, doesn’t show a backtrace. So at least in that case the debug symbols are just taking up space.
  8. maflcko commented at 2:50 pm on July 7, 2025: member
    No, -g isn’t needed for the CI itself. It is only there for developers who happen to run this locally in a container and want to reproduce something in a debugger without having to modify the script and re-compile. Storage is cheap/free, so I thought it can’t hurt to have it, but no strong opinion. Anything should be fine for the setting.
  9. maflcko commented at 8:51 am on July 8, 2025: member

    To provide some numbers that the new checks really are roughly for free:

    This ci run took 30min7sec (https://github.com/bitcoin/bitcoin/actions/runs/16112781421/job/45459901801?pr=32888)

    Previously (randomly last month) it took 30min14sec (https://github.com/bitcoin/bitcoin/pull/32680/checks)

  10. DrahtBot added the label Needs rebase on Jul 11, 2025
  11. ci: [doc] reword debug log message fa21c3401e
  12. ci: Use optimized Debug build type in test-each-commit faa3171ff2
  13. maflcko force-pushed on Jul 14, 2025
  14. Prabhat1308 commented at 7:46 am on July 14, 2025: contributor
    re-ACK faa3171
  15. DrahtBot removed the label Needs rebase on Jul 14, 2025
  16. maflcko requested review from willcl-ark on Jul 18, 2025
  17. in .github/ci-test-each-commit-exec.py:38 in faa3171ff2
    35+        # Use mold, because it is faster than the default linker
    36+        "-DCMAKE_EXE_LINKER_FLAGS=-fuse-ld=mold",
    37+        # Use Debug build type for more debug checks, but enable optimizations
    38+        "-DAPPEND_CXXFLAGS='-O3 -g2'",
    39+        "-DAPPEND_CFLAGS='-O3 -g2'",
    40+        "-DCMAKE_BUILD_TYPE=Debug",
    


    willcl-ark commented at 2:24 pm on July 18, 2025:

    Is -03 chosen here to try and counteract the slow-down from Debug as opposed to using -02?

    IIRC I did some tests of -02 vs -03 and didn’t find much/any speedup, so just curious if that was the reason. If it’s been chosen to expose new classes of bugs not found by -03, then seems fine to me.

    How does -03 actually play with -g2? Do the agressive optimisations play OK with debugging? (I’ve never tried this combination I don’t think.)


    maflcko commented at 2:31 pm on July 18, 2025:

    Probably doesn’t matter much if this is O2 or O3. Maybe O3 is 1% - 4% faster, according to #31491 (comment) ? Any of those can probably be changed, if there is a reason or need.

    The main goal here is to add Debug (and the checks it ships with)

  18. willcl-ark approved
  19. willcl-ark commented at 2:25 pm on July 18, 2025: member

    crACK faa3171ff22fea1c001e5a9b01d964aa425a3387

    We can’t see this in action in the CI here as test-each-commit job omits the top commit (with the meaningful changes in in this case), but I did run locally and tested that the flags were being correctly appended.

    Left a few questions regarding the flag selections, but ACK running these checks in this job.

  20. maflcko requested review from fanquake on Jul 24, 2025
  21. in .github/ci-test-each-commit-exec.py:34 in faa3171ff2
    31         "-Werror=dev",
    32+        # Use clang++, because it is a bit faster and uses less memory than g++
    33         "-DCMAKE_C_COMPILER=clang",
    34         "-DCMAKE_CXX_COMPILER=clang++",
    35+        # Use mold, because it is faster than the default linker
    36+        "-DCMAKE_EXE_LINKER_FLAGS=-fuse-ld=mold",
    


    fanquake commented at 11:32 am on July 24, 2025:
    The CMake here is one version too old, otherwise we could also have used CMAKE_LINKER_TYPE=MOLD
  22. fanquake commented at 11:43 am on July 24, 2025: member

    Seems fine to add this and be using mold in one job.

    This ci run took 30min7sec (https://github.com/bitcoin/bitcoin/actions/runs/16112781421/job/45459901801?pr=32888)

    This doesn’t actually show the new changes here right?

  23. fanquake merged this on Jul 24, 2025
  24. fanquake closed this on Jul 24, 2025

  25. maflcko deleted the branch on Jul 24, 2025
  26. fanquake commented at 1:23 pm on July 24, 2025: member

github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2025-08-08 12:13 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me