cmake: Move internal binaries from bin/ to libexec/ #31679

pull ryanofsky wants to merge 5 commits into bitcoin:master from ryanofsky:pr/libexec changing 13 files +94 −36
  1. ryanofsky commented at 5:01 pm on January 17, 2025: contributor

    This change moves binaries that are not typically invoked directly by users from the bin/ directory to the libexec/ directory in CMake installs and binary releases. The goal is to simplify the contents of bin/ for end users while still making all binaries available when needed. The table below shows the install location and availability of each binary after this change:

    Binary Location Availability Change
    bitcoin bin/ 📦 Binary release (since #31375) Unchanged
    bitcoin-cli bin/ 📦 Binary release Unchanged
    bitcoind bin/ 📦 Binary release Unchanged
    bitcoin-qt bin/ 📦 Binary release Unchanged
    bitcoin-tx bin/ 📦 Binary release Unchanged
    bitcoin-util bin/ 📦 Binary release Unchanged
    bitcoin-wallet bin/ 📦 Binary release Unchanged
    bench_bitcoin libexec/ 🛠 Source build only Moved from bin/
    bitcoin-chainstate libexec/ 🛠 Source build only Newly installed (was built)
    bitcoin-gui libexec/ 🛠 Source build only (until #31802) Moved from bin/
    bitcoin-node libexec/ 🛠 Source build only (until #31802) Moved from bin/
    test_bitcoin libexec/ 📦 Binary release Moved from bin/
    test_bitcoin-qt libexec/ 🛠 Source build only Moved from bin/

    This change helps reduce clutter in bin/ and the system PATH, making it easier for users to find the commands they need.

    Advanced users can still run all the binaries in libexec/ and the bitcoin wrapper executable introduced in #31375 is also able to locate binaries regardless of whether they are installed in bin/ or libexec/.


    This PR is part of the process separation project.

  2. DrahtBot commented at 5:01 pm on January 17, 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/31679.

    Reviews

    See the guideline for information on the review process.

    Type Reviewers
    ACK janb84, l0rinc, Sjors, BrandonOdiwuor
    Concept ACK TheCharlatan, jonatack
    Stale ACK hodlinator, ismaelsadeeq

    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:

    • #31453 (util: detect and warn when using exFAT on MacOS by willcl-ark)
    • #31349 (ci: detect outbound internet traffic generated while running tests by vasild)
    • #30437 (ipc: add bitcoin-mine test program by ryanofsky)

    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.

  3. DrahtBot added the label Build system on Jan 17, 2025
  4. DrahtBot added the label CI failed on Jan 17, 2025
  5. DrahtBot commented at 7:52 am on January 18, 2025: contributor
    CI failed with [17:52:38.033] /ci_container_base/ci/test/03_test_script.sh: line 154: /ci_container_base/ci/scratch/out/bin/test_bitcoin: No such file or directory
  6. luke-jr commented at 3:25 pm on January 23, 2025: member
    libexec is usually used for binaries run by programs rather than people. I don’t think most of the ones you’re moving fit that, and should remain in bin.
  7. Sjors commented at 7:46 am on January 24, 2025: member

    Run by people is a higher bar than “not typically useful”, but could make sense.

    If there are no binaries for which it currently makes sense to put them in libexec, since they’re all called by people, then it seems this PR has be based on #31375.

  8. ryanofsky commented at 5:57 pm on January 28, 2025: contributor

    The idea that an executable placed in libexec/ should be called by other executables is a good rule of thumb but not a requirement of some kind. (And if it were a requirement, it would be satisfied by #31375.)

    The technical difference between binaries installed to bin/ and binaries installed to libexec/ is that binaries in bin/ get exposed on the PATH while binaries in libexec/ don’t.

    There is nothing wrong with binaries in libexec/ being documented and called used by users and packagers and other tools and scripts. Not every executable that a user could conceivably call needs to be present in PATH.

    Packages like postfix have manpages for internal executables installed in libexec/ (anvil, bounce, smtpd, etc). Git subcommands can be called manually from libexec and have manpages of their own, too. I would say postfix and git are pretty much archetypes of packages designed around unix principles and there is nothing novel about installing low-level executables in libexec/.

    With this PR, two sets of binaries are installed to libexec/ if they have been enabled in cmake:

    1. multiprocess binaries bitcoin-node and bitcoin-gui
    2. testing binaries bench_bitcoin test_bitcoin test_bitcoin-qt.

    I can’t think of a reason why multiprocess binaries should be installed on PATH, but if someone wants to make that case I’m ready to hear it. As an alternative to this PR, they could be installed in bin/ with different names like bitoin-node-multiprocess or to a completely new folder.

    For the test and bench binaries I just think it’s confusing and not useful to install these on the PATH. I think this is true today and will be especially true after #31375.

  9. ryanofsky force-pushed on Jan 30, 2025
  10. ryanofsky commented at 3:05 am on January 30, 2025: contributor
    Updated 2a952710661a1990ed1c24b0ebd16de8ac0df87c -> 47a872236e070814ad74922d3f8a653e1c6af968 (pr/libexec.1 -> pr/libexec.2, compare) to fix CI error
  11. DrahtBot removed the label CI failed on Jan 30, 2025
  12. DrahtBot added the label Needs rebase on Feb 12, 2025
  13. ryanofsky force-pushed on Feb 13, 2025
  14. ryanofsky commented at 6:48 pm on February 13, 2025: contributor
    Rebased 47a872236e070814ad74922d3f8a653e1c6af968 -> d2ceb2e0735a2c8343f8316b55fac55323aba62c (pr/libexec.2 -> pr/libexec.3, compare) due to conflict with #31834
  15. DrahtBot removed the label Needs rebase on Feb 13, 2025
  16. DrahtBot added the label Needs rebase on Feb 14, 2025
  17. ryanofsky force-pushed on Feb 14, 2025
  18. ryanofsky commented at 3:19 pm on February 14, 2025: contributor
    Rebased d2ceb2e0735a2c8343f8316b55fac55323aba62c -> 45bfd97ec7c9991f41673d79b01277bfd940e64e (pr/libexec.3 -> pr/libexec.4, compare) due to conflict with #31844
  19. DrahtBot removed the label Needs rebase on Feb 14, 2025
  20. TheCharlatan commented at 7:14 pm on April 8, 2025: contributor
    Concept ACK
  21. jonatack commented at 4:37 am on April 9, 2025: member

    Concept ACK

    Would need a release note?

  22. ryanofsky commented at 1:34 pm on April 14, 2025: contributor

    Would need a release note?

    Thanks! Added release note and files.md documention in new commits.


    Added 2 commits 45bfd97ec7c9991f41673d79b01277bfd940e64e -> bda7626e987ce3d7287f72e6989dedde2c4ab666 (pr/libexec.4 -> pr/libexec.5, compare) with release notes and documentation

  23. TheCharlatan commented at 9:16 pm on April 15, 2025: contributor

    I think some installation packagers run test_bitcoin as part of their installation recipes, or at least I found one such example: https://github.com/epiccurious/bitcoin-core-node-builder/pull/164/files. @hebasto also polled usage of test_bitcoin on social media: https://x.com/hhebasto/status/1729879307768738070. Clearly there aren’t many people doing this, but are we ok with breaking the workflows of the few people that are? You mention that:

    For the test and bench binaries I just think it’s confusing and not useful to install these on the PATH. I think this is true today and will be especially true after #31375.

    What is confusing about keeping them where they are for now? Maybe there is some utility in testing your platform before actually running bitcoin on it.

  24. DrahtBot added the label Needs rebase on May 7, 2025
  25. cmake: Move internal binaries from bin/ to libexec/
    This change moves binaries that are not typically invoked directly by users
    from the `bin/` directory to the `libexec/` directory in CMake installs and
    binary releases. The goal is to simplify the contents of `bin/` for end users
    while still making all binaries available when needed. After this change, the
    binaries remaining in `bin/` are:
    
    - bitcoin
    - bitcoin-cli
    - bitcoind
    - bitcoin-qt
    - bitcoin-tx
    - bitcoin-util
    - bitcoin-wallet
    
    And the binaries that are moved to `libexec/` are:
    
    - bench_bitcoin
    - bitcoin-chainstate(*)
    - bitcoin-gui(***)
    - bitcoin-node(***)
    - test_bitcoin(**)
    - test_bitcoin-qt
    
    (*) bitcoin-chainstate was previously missing an install rule and was actually
    not installed even when it was enabled.
    
    (**) test_bitcoin is the only libexec/ binary that is currently included in
    bitcoin binary releases. The others are only installed when building from
    source with relevant cmake options enabled.
    
    (***) bitcoin-node and bitcoin-gui are not currently built by default or
    included in binary releases but both of these changes are planned and
    implemented in #31802
    cd97905ebc
  26. doc: Add release notes describing libexec/ binaries 94ffd01a02
  27. doc: Add description of installed files to files.md c810b168b8
  28. ryanofsky force-pushed on May 29, 2025
  29. ryanofsky commented at 9:45 pm on May 29, 2025: contributor
    Rebased bda7626e987ce3d7287f72e6989dedde2c4ab666 -> d253fa9ebe4305118417a02aa72cc06810662ac6 (pr/libexec.5 -> pr/libexec.6, compare) due to conflict with #28710
  30. DrahtBot removed the label Needs rebase on May 29, 2025
  31. Sjors commented at 5:49 am on May 30, 2025: member

    Just #28710, no conflict with #31375?

    Concept ACK

  32. ismaelsadeeq commented at 11:17 am on May 30, 2025: member
    Concept ACK
  33. Sjors commented at 4:04 pm on May 30, 2025: member

    tACK d253fa9ebe4305118417a02aa72cc06810662ac6

    I tested on top of af227a0e7d9754623d36925c56599f9b921f5cb3 from #31802 on macOS 15.5 and 13.7.6, as well as Windows 11 (not impacted).

    The bitcoin test command is perhaps a bit too well hidden. Maybe it’s better to drop the help command and put a bit more emphasis on the --all option:

    0Commands:
    1  gui [ARGS]     Start GUI, equivalent to running 'bitcoin-qt [ARGS]' or 'bitcoin-gui [ARGS]'
    2  ...
    3  tx ...
    4
    5Use 'bitcoin --help --all' for additional commands, e.g. for running tests.
    

    That last “e.g.” might address @TheCharlatan’s concern:

    Maybe there is some utility in testing your platform before actually running bitcoin on it.

  34. DrahtBot requested review from TheCharlatan on May 30, 2025
  35. DrahtBot requested review from jonatack on May 30, 2025
  36. DrahtBot requested review from ismaelsadeeq on May 30, 2025
  37. in doc/release-notes-31679.md:8 in d253fa9ebe outdated
    0@@ -0,0 +1,11 @@
    1+Install changes
    2+---------------
    3+
    4+The `test_bitcoin`, `test_bitcoin-qt`, `bench_bitcoin`, `bitcoin-chainstate`,
    5+`bitcoin-node`, and `bitcoin-wallet` binaries are now installed in
    6+`$PREFIX/libexec` rather than `$PREFIX/bin`. If you are using a binary release
    7+or building from source with default build options, most of these programs are
    8+not built by default anyway so these changes may not be noticable.
    


    maflcko commented at 7:25 am on June 2, 2025:
    noticable -> noticeable [correct spelling]
    

    ryanofsky commented at 2:29 pm on July 2, 2025:

    re: #31679 (review)

    Thanks, fixed

  38. in doc/files.md:161 in d253fa9ebe outdated
    157+| share/rpcauth/                      | Documentation and scripts for RPC authentication setup |
    158+
    159+### Notes
    160+
    161+- *Italicized* files are installed in source builds but not included in binary releases.
    162+- README and bitcoin.conf files included in binary releases but not installed in source builds.
    


    hodlinator commented at 2:44 pm on June 3, 2025:

    nit:

    0- README and bitcoin.conf files are included in binary releases but not installed in source builds.
    

    ryanofsky commented at 2:29 pm on July 2, 2025:

    re: #31679 (review)

    Thanks, fixed


    l0rinc commented at 11:07 am on July 4, 2025:

    nit: there’s a similar one in the PR description:

    The table below shows the install location and availability of each binary after this change


    ryanofsky commented at 1:05 pm on July 7, 2025:

    re: #31679 (review)

    The table below shows the install location and availability of each binary after this change

    Makes sense, fixed this too

  39. in src/CMakeLists.txt:472 in d253fa9ebe outdated
    468@@ -469,6 +469,7 @@ if(BUILD_UTIL_CHAINSTATE)
    469       core_interface
    470       bitcoinkernel
    471   )
    472+  install_binary_component(bitcoin-chainstate INTERNAL)
    


    hodlinator commented at 7:52 pm on June 4, 2025:
    Do we want to introduce installation of this binary? Should be called out in PR description and/or commit message if kept.

    Sjors commented at 8:30 am on June 5, 2025:
    I think it’s fine, but indeed should be in the description.

    TheCharlatan commented at 8:45 am on June 5, 2025:
    If so, it should also get a note that its command line interface is not expected to be stable.

    fanquake commented at 9:56 am on July 2, 2025:

    I think it’s fine,

    Not sure I agree that we should start installing this. It’s an experimental, demo binary, not built by default, that nobody is using; other than a handful of developers working on the kernel (also experimental). There’s every likelyhood it could just be removed tommorow.


    ryanofsky commented at 2:28 pm on July 2, 2025:

    re: #31679 (review)

    Rewrote the PR description to hopefully make this clearer, but this change is just adding a missing install rule. If you don’t go out of your way to enable the BUILD_UTIL_CHAINSTATE option, the binary won’t be installed, but if you do enable it, it will be installed. This is consistent with how we treat other build options like BUILD_GUI_TESTS with test_bitcoin-qt and BUILD_BENCH with bench_bitcoin.

  40. hodlinator commented at 7:59 pm on June 4, 2025: contributor

    Concept ACK d253fa9ebe4305118417a02aa72cc06810662ac6

    Concept

    Would be nice (but not critical) to get this done in the same release where we introduce the now merged wrapper, bitcoin(.exe).

    Tested

     0 cmake --install build --prefix $PWD/install |sort
     1-- Install configuration: "RelWithDebInfo"
     2-- Installing: /home/hodlinator/bc/b2/install/bin/bitcoin
     3-- Installing: /home/hodlinator/bc/b2/install/bin/bitcoin-cli
     4-- Installing: /home/hodlinator/bc/b2/install/bin/bitcoind
     5-- Installing: /home/hodlinator/bc/b2/install/bin/bitcoin-qt
     6-- Installing: /home/hodlinator/bc/b2/install/bin/bitcoin-tx
     7-- Installing: /home/hodlinator/bc/b2/install/bin/bitcoin-util
     8-- Installing: /home/hodlinator/bc/b2/install/bin/bitcoin-wallet
     9-- Installing: /home/hodlinator/bc/b2/install/lib64/libbitcoinkernel.so
    10-- Installing: /home/hodlinator/bc/b2/install/lib64/pkgconfig/libbitcoinkernel.pc
    11-- Installing: /home/hodlinator/bc/b2/install/libexec/bench_bitcoin
    12-- Installing: /home/hodlinator/bc/b2/install/libexec/bitcoin-chainstate
    13-- Installing: /home/hodlinator/bc/b2/install/libexec/bitcoin-gui
    14-- Installing: /home/hodlinator/bc/b2/install/libexec/bitcoin-node
    15-- Installing: /home/hodlinator/bc/b2/install/libexec/test_bitcoin
    16-- Installing: /home/hodlinator/bc/b2/install/libexec/test_bitcoin-qt
    17-- Installing: /home/hodlinator/bc/b2/install/share/man/man1/bitcoin-cli.1
    18-- Installing: /home/hodlinator/bc/b2/install/share/man/man1/bitcoind.1
    19-- Installing: /home/hodlinator/bc/b2/install/share/man/man1/bitcoin-qt.1
    20-- Installing: /home/hodlinator/bc/b2/install/share/man/man1/bitcoin-tx.1
    21-- Installing: /home/hodlinator/bc/b2/install/share/man/man1/bitcoin-util.1
    22-- Installing: /home/hodlinator/bc/b2/install/share/man/man1/bitcoin-wallet.1
    23-- Set non-toolchain portion of runtime path of "/home/hodlinator/bc/b2/install/libexec/bitcoin-chainstate" to ""
    
    0./install/bin/bitcoin node (bin)
    1./install/bin/bitcoin test (libexec)
    
  41. DrahtBot added the label CI failed on Jun 15, 2025
  42. DrahtBot removed the label CI failed on Jun 16, 2025
  43. ismaelsadeeq commented at 2:40 pm on June 16, 2025: member

    Tested ACK d253fa9ebe4305118417a02aa72cc06810662ac6

    By building with bench in a release build

    0-- Installing: /Users/abubakarismail/Desktop/Work/bitcoin-dev/bitcoin/install/bin/bitcoin
    1-- Installing: /Users/abubakarismail/Desktop/Work/bitcoin-dev/bitcoin/install/bin/bitcoin-cli
    2-- Installing: /Users/abubakarismail/Desktop/Work/bitcoin-dev/bitcoin/install/bin/bitcoin-tx
    3-- Installing: /Users/abubakarismail/Desktop/Work/bitcoin-dev/bitcoin/install/bin/bitcoin-util
    4-- Installing: /Users/abubakarismail/Desktop/Work/bitcoin-dev/bitcoin/install/bin/bitcoin-wallet
    5-- Installing: /Users/abubakarismail/Desktop/Work/bitcoin-dev/bitcoin/install/bin/bitcoind
    6-- Installing: /Users/abubakarismail/Desktop/Work/bitcoin-dev/bitcoin/install/libexec/bench_bitcoin
    7-- Installing: /Users/abubakarismail/Desktop/Work/bitcoin-dev/bitcoin/install/libexec/test_bitcoin
    
  44. DrahtBot requested review from hodlinator on Jun 16, 2025
  45. fanquake commented at 9:58 am on July 2, 2025: member

    Removing these esoteric and not generally useful binaries from bin/ and from the system PATH should make it easier for typical users to find and identify the binaries which are actually useful.

    I don’t really agree that bench_bitcoin and particularly test_bitcoin are “esoteric and not generally useful”, and agree with @TheCharlatan’s comment: Maybe there is some utility in testing your platform before actually running bitcoin on it.. If we do think that test_bitcoin is not useful, then we should probably stop shipping it in the release tarball, otherwise I think it’s odd to ship binaries we consider somwwhat useless, to end-users. At some point I had considered adding bench_bitcoin to the release tarball. We occasionally see performance regressions, and having it on-hand in the tarball could be useful for debugging.

    I don’t think there was ever any followup to this comment: #31679 (comment)?

  46. Sjors commented at 10:39 am on July 2, 2025: member

    Now that the wrapper binary landed in #31375 I think it’s fine to ask users to use bitcoin test instead of test_bitcoin.

    I agree test_bitcoin (and maybe bench_bitcoin) are useful enough to have them in the release.

    But I doubt there are many automated deployments out there that obtain the release binaries and run the tests. That’s the only thing this PR would break. Automated deployments that build from source have to be modified anyway in the next release because of cmake. (oh no, that was v29, time flies)

  47. janb84 commented at 12:07 pm on July 2, 2025: contributor

    Concept ACK d253fa9ebe4305118417a02aa72cc06810662ac6

    This PR changes the target of some executables on install (different folder). This achieves that not all the executables are added to the PATH (which I agree with)

    Result of install ✅

     0cmake --install build --prefix $PWD/install
     1-- Install configuration: "RelWithDebInfo"
     2-- Installing: /Users/jan/Projects/bitcoin/install/bin/bitcoin-wallet
     3-- Installing: /Users/jan/Projects/bitcoin/install/share/man/man1/bitcoin-wallet.1
     4-- Installing: /Users/jan/Projects/bitcoin/install/bin/bitcoin
     5-- Installing: /Users/jan/Projects/bitcoin/install/bin/bitcoind
     6-- Installing: /Users/jan/Projects/bitcoin/install/share/man/man1/bitcoind.1
     7-- Installing: /Users/jan/Projects/bitcoin/install/libexec/bitcoin-node
     8-- Installing: /Users/jan/Projects/bitcoin/install/bin/bitcoin-cli
     9-- Installing: /Users/jan/Projects/bitcoin/install/share/man/man1/bitcoin-cli.1
    10-- Installing: /Users/jan/Projects/bitcoin/install/bin/bitcoin-tx
    11-- Installing: /Users/jan/Projects/bitcoin/install/share/man/man1/bitcoin-tx.1
    12-- Installing: /Users/jan/Projects/bitcoin/install/bin/bitcoin-util
    13-- Installing: /Users/jan/Projects/bitcoin/install/share/man/man1/bitcoin-util.1
    14-- Installing: /Users/jan/Projects/bitcoin/install/libexec/test_bitcoin
    

    NIT; would change the wording of this sentence in the PR description, imho it’s overly harsh for no reason:

    “Removing these esoteric and not generally useful binaries from bin/ and from the system PATH should make it easier for typical users to find and identify the binaries which are actually useful.”

  48. ryanofsky force-pushed on Jul 2, 2025
  49. ryanofsky commented at 2:57 pm on July 2, 2025: contributor

    Thanks for the reviews!

    Updated d253fa9ebe4305118417a02aa72cc06810662ac6 -> 705791cd436f237fe9bbac2cf52d63ab4b2a41c7 (pr/libexec.6 -> pr/libexec.7, compare) just fixing typos pointed out in reviews.


    re: TheCharlatan #31679 (comment)

    I agree it is nice to distribute tests and I imagine in future we may want to distribute other diagnostic tools like this as well (especially if we start using the kernel as originally anticipated and writing specialized utilities with it, maybe even in other languages like rust.)

    I just think it is good to make a distinction between common, everyday commands and more specialized ones, and only install the common commands we think will be used on a regular basis in bin/ and in the system PATH, so they are discoverable and not mixed in with a list of more obscure functions. As mentioned previously I think git and postfix are good examples of unix packages that have a lot of internal binaries, and document them well, and allow them to be called freely, but are selective about what gets installed in bin/ on the system PATH.

    As far as breaking workflows, this change does include release notes, and I feel like it should be pretty easy for anyone with a custom verification script to update it to call bitcoin test or use libexec/ instead of bin/. I don’t think it should be a big deal to move a binary that wasn’t previously documented to a new location, especially if it’s part of a larger effort to organize and document all the binaries better and provide a more accessible interface in the form of the bitcoin command.

    I could tweak the PR to leave test_bitcoin in bin/ instead of libexec/ or leave everything except bitcoin-node and bitcoin-gui in bin/. It just seemed nicer draw a distinction between bin/ and libexec/ based on what a good command line interface would look like, not based on idiosyncracies of previous releases.


    re: Sjors #31679 (comment)

    Seems like a good suggestion to improve bitcoin help output. I will try implementing that


    re: fanquake #31679 (comment)

    Yes, sorry, removed that comment about not being generally useful. I think they are useful and think we should add more utilities like this, I think they just don’t really make sense being top level commands on the system PATH instead of internal binaries and bitcoin subcommands.


    re: janb84 #31679#pullrequestreview-2978891971

    Thank you! Followed up on your suggestion and rewrote the PR description.

  50. hodlinator approved
  51. hodlinator commented at 7:08 pm on July 2, 2025: contributor

    ACK 705791cd436f237fe9bbac2cf52d63ab4b2a41c7

    Fixed typos and improved PR description since my first (concept & test) review (https://github.com/bitcoin/bitcoin/pull/31679#pullrequestreview-2892807188).

  52. DrahtBot requested review from janb84 on Jul 2, 2025
  53. DrahtBot requested review from Sjors on Jul 2, 2025
  54. DrahtBot requested review from ismaelsadeeq on Jul 2, 2025
  55. janb84 commented at 7:16 pm on July 2, 2025: contributor

    re ACK 705791cd436f237fe9bbac2cf52d63ab4b2a41c7

    Changes sinds last review:

    • Fixed typos
    • Changed PR description (thanks! )
  56. in doc/release-notes-31679.md:8 in 04e51ba111 outdated
    0@@ -0,0 +1,11 @@
    1+Install changes
    2+---------------
    3+
    4+The `test_bitcoin`, `test_bitcoin-qt`, `bench_bitcoin`, `bitcoin-chainstate`,
    5+`bitcoin-node`, and `bitcoin-wallet` binaries are now installed in
    6+`$PREFIX/libexec` rather than `$PREFIX/bin`. If you are using a binary release
    7+or building from source with default build options, most of these programs are
    8+not built by default anyway so these changes may not be noticeable.
    


    Sjors commented at 6:55 am on July 3, 2025:
    04e51ba1110e13598e0b11a35ce5abf4a1789f53: now that the wrapper binary is available, the release note could enumerate how to call these now: bitcoin test, etc.

    ryanofsky commented at 9:20 pm on July 3, 2025:

    re: #31679 (review)

    04e51ba: now that the wrapper binary is available, the release note could enumerate how to call these now: bitcoin test, etc.

    Good idea. Latest push now integrates the release notes from the other PR and describes the changes as a whole

  57. Sjors approved
  58. Sjors commented at 6:55 am on July 3, 2025: member

    re-ACK 705791cd436f237fe9bbac2cf52d63ab4b2a41c7

    Left a suggestion for the release note.

  59. ismaelsadeeq commented at 3:01 pm on July 3, 2025: member

    reACK 705791cd and tested it again by building with release config.

     0-- Install configuration: "Release"
     1-- Installing: /Users/abubakarismail/Desktop/Work/bitcoin-dev/bitcoin/install/bin/bitcoin-wallet
     2-- Installing: /Users/abubakarismail/Desktop/Work/bitcoin-dev/bitcoin/install/share/man/man1/bitcoin-wallet.1
     3-- Installing: /Users/abubakarismail/Desktop/Work/bitcoin-dev/bitcoin/install/bin/bitcoin
     4-- Installing: /Users/abubakarismail/Desktop/Work/bitcoin-dev/bitcoin/install/bin/bitcoind
     5-- Installing: /Users/abubakarismail/Desktop/Work/bitcoin-dev/bitcoin/install/share/man/man1/bitcoind.1
     6-- Installing: /Users/abubakarismail/Desktop/Work/bitcoin-dev/bitcoin/install/bin/bitcoin-cli
     7-- Installing: /Users/abubakarismail/Desktop/Work/bitcoin-dev/bitcoin/install/share/man/man1/bitcoin-cli.1
     8-- Installing: /Users/abubakarismail/Desktop/Work/bitcoin-dev/bitcoin/install/bin/bitcoin-tx
     9-- Installing: /Users/abubakarismail/Desktop/Work/bitcoin-dev/bitcoin/install/share/man/man1/bitcoin-tx.1
    10-- Installing: /Users/abubakarismail/Desktop/Work/bitcoin-dev/bitcoin/install/bin/bitcoin-util
    11-- Installing: /Users/abubakarismail/Desktop/Work/bitcoin-dev/bitcoin/install/share/man/man1/bitcoin-util.1
    12-- Installing: /Users/abubakarismail/Desktop/Work/bitcoin-dev/bitcoin/install/libexec/test_bitcoin
    

    I agree with the reply in #31679#pullrequestreview-2979400065

    Also nice PR description update that makes it explicit thattest_bitcoin is still available in release build but in libexec directory I also verify it in my build.

  60. bitcoin wrapper: improve help output
    Try to make extra commands more obvious based on a suggestion from Sjors:
    https://github.com/bitcoin/bitcoin/pull/31679#issuecomment-2922787970i
    
    When `bitcoin` is invoked with no arguments, still show short help output, but
    now explicitly state that more commands are available and `bitcoin help` will
    list them.
    
    Also:
    
    - Get rid of -a/--all option. Just show all commands when `bitcoin help` or
      `bitcoin --help` is used. It maybe a helpful to add an option like this if
      more commands are added in the future, but right now there are not very many.
    
    - Just show name of executable, not full path of executable in help output. This
      can be a little easier to read if the path is long.
    f5cf0b1ccc
  61. ryanofsky referenced this in commit 05de8bc173 on Jul 3, 2025
  62. ryanofsky force-pushed on Jul 3, 2025
  63. ryanofsky commented at 9:24 pm on July 3, 2025: contributor

    Thanks for the reviews!

    Updated 705791cd436f237fe9bbac2cf52d63ab4b2a41c7 -> 05de8bc1735accc494291e22da718bebab163547 (pr/libexec.7 -> pr/libexec.8, compare) updating commit message to match release description, and implementing Sjors bitcoin help suggestion #31679 (comment) and release note suggestion #31679 (review) Updated 05de8bc1735accc494291e22da718bebab163547 -> 03f585d58ccf4d5c02d621c5b6046d45807b3201 (pr/libexec.8 -> pr/libexec.9, compare) fixing mistake in release notes

  64. ryanofsky referenced this in commit 03f585d58c on Jul 3, 2025
  65. ryanofsky force-pushed on Jul 3, 2025
  66. in src/bitcoin.cpp:36 in 03f585d58c outdated
    30@@ -31,22 +31,25 @@ static constexpr auto HELP_USAGE = R"(Usage: %s [OPTIONS] COMMAND...
    31   rpc [ARGS]     Call RPC method, equivalent to running 'bitcoin-cli -named [ARGS]'.
    32   wallet [ARGS]  Call wallet command, equivalent to running 'bitcoin-wallet [ARGS]'.
    33   tx [ARGS]      Manipulate hex-encoded transactions, equivalent to running 'bitcoin-tx [ARGS]'.
    34-  help [-a]      Show this help message. Include -a or --all to show additional commands.
    35 )";
    36 
    37-static constexpr auto HELP_EXTRA = R"(
    38+static constexpr auto HELP_EXTRA = R"(  help           Show this help message.
    


    Sjors commented at 6:53 am on July 4, 2025:

    In 03f585d58ccf4d5c02d621c5b6046d45807b3201 bitcoin wrapper: improve help output: users might be confused by the distinction between no command, --help and help.

    That’s because if a user starts with “bitcoin” then “this help message” implies there’s nothing additional to see. Hopefully they’ll still be encouraged to try by the sentence at the end (“Run ‘bitcoin help’ to see additional commands”).

    But maybe a better phrasing here is: “List all available commands.”


    ryanofsky commented at 3:31 pm on July 4, 2025:

    re: #31679 (review)

    That’s because if a user starts with “bitcoin” then “this help message” implies there’s nothing additional to see.

    To be sure, the “show this help message” does not appear when you just run bitcoin with no arguments since I wanted “show this help message” to mean “show this exact help message”. Happy to apply any changes, but I think this should already avoid the concern you described.


    Sjors commented at 7:17 am on July 7, 2025:

    To be sure, the “show this help message” does not appear when you just run bitcoin with no arguments

    That would be great, but it doesn’t for me:

    0% build/bin/bitcoin
    1Usage: bitcoin [OPTIONS] COMMAND...
    2
    3Options:
    4...
    5  -h, --help             Show this help message
    

    It looks like the help variant of “Show this help message” is suppressed, but for --help it’s not.


    ryanofsky commented at 1:04 pm on July 7, 2025:

    re: #31679 (review)

    Oops, you’re right. I forgot the --help help and only updated the help help. Should be fixed now, thanks!

  67. in src/bitcoin.cpp:69 in 03f585d58c outdated
    65@@ -63,11 +66,17 @@ int main(int argc, char* argv[])
    66             return EXIT_SUCCESS;
    67         }
    68 
    69+        std::string exe_name{fs::PathToString(fs::PathFromString(argv[0]).filename())};
    


    Sjors commented at 7:13 am on July 4, 2025:

    In 03f585d58ccf4d5c02d621c5b6046d45807b3201 bitcoin wrapper: improve help output: this is a nice improvement.

    Before:

    0bitcoin --help
    1Usage: bitcoin [OPTIONS] COMMAND..
    2
    3which bitcoin
    4/usr/local/bin/bitcoin
    5
    6/usr/local/bin/bitcoin --help
    7Usage: /usr/local/bin/bitcoin [OPTIONS] COMMAND...
    

    After:

    0/usr/local/bin/bitcoin --help
    1Usage: bitcoin [OPTIONS] COMMAND..
    

    Only tested on macOS


    l0rinc commented at 11:23 am on July 4, 2025:

    Tested on Linux:

    0# cmake -B build -G Ninja && ninja -C build install && install/bin/bitcoin --help | head -1
    1...
    2Usage: bitcoin [OPTIONS] COMMAND...
    
  68. Sjors approved
  69. Sjors commented at 7:14 am on July 4, 2025: member

    re-ACK 03f585d58ccf4d5c02d621c5b6046d45807b3201

    Left a suggestion for slightly improved wording.

  70. DrahtBot requested review from hodlinator on Jul 4, 2025
  71. DrahtBot requested review from janb84 on Jul 4, 2025
  72. in cmake/module/InstallBinaryComponent.cmake:11 in 03f585d58c outdated
     7@@ -8,13 +8,18 @@ include(GNUInstallDirs)
     8 function(install_binary_component component)
     9   cmake_parse_arguments(PARSE_ARGV 1
    10     IC                # prefix
    11-    "HAS_MANPAGE"     # options
    12+    "HAS_MANPAGE;INTERNAL" # options
    


    l0rinc commented at 9:13 am on July 4, 2025:
    nit: we might want to realign the comments after the change

    ryanofsky commented at 1:05 pm on July 7, 2025:

    re: #31679 (review)

    nit: we might want to realign the comments after the change

    Thanks! Updated now

  73. in ci/test/03_test_script.sh:148 in 1e9cf763fb outdated
    144@@ -145,7 +145,7 @@ if [ "$RUN_UNIT_TESTS" = "true" ]; then
    145 fi
    146 
    147 if [ "$RUN_UNIT_TESTS_SEQUENTIAL" = "true" ]; then
    148-  DIR_UNIT_TEST_DATA="${DIR_UNIT_TEST_DATA}" LD_LIBRARY_PATH="${DEPENDS_DIR}/${HOST}/lib" "${BASE_OUTDIR}"/bin/test_bitcoin --catch_system_errors=no -l test_suite
    149+  DIR_UNIT_TEST_DATA="${DIR_UNIT_TEST_DATA}" LD_LIBRARY_PATH="${DEPENDS_DIR}/${HOST}/lib" "${BASE_OUTDIR}"/libexec/test_bitcoin --catch_system_errors=no -l test_suite
    


    l0rinc commented at 10:02 am on July 4, 2025:

    I understand the reason for wanting to clean up the install layout, but was wondering why the build layout doesn’t mirror the production layout, given that reducing clutter in bin might apply to the development environment as well. I think it’s best if devs get used to the final layout and don’t have to think about the exact environment when deciding if https://github.com/bitcoin/bitcoin/blob/fa900bb2dce8ef3ee11d5980f008995d66877155/contrib/devtools/deterministic-unittest-coverage/src/main.rs#L64 is in bin or libexec.

    It seems to me this inconsistency adds complexity and makes it unclear what path external tooling should rely on.

    And it could also simplify CI, since it may not be immediately obvious why https://github.com/bitcoin/bitcoin/blob/e3f416dbf7633b2fb19c933e5508bd231cc7e9cf/ci/test/03_test_script.sh#L148 should be run from libexec, but why it’s okay to still have bin here: https://github.com/bitcoin/bitcoin/blob/ce000c8ee02af77cb404527cb7ed408289865665/.github/workflows/ci.yml#L377


    maflcko commented at 12:23 pm on July 4, 2025:
    not sure what your question/suggestion is, but it should be possible to replace outdir/libexec with "${BASE_BUILD_DIR}"/bin/ here. Either should be fine and equivalent.

    l0rinc commented at 12:44 pm on July 4, 2025:
    Sure, but why do we have to keep both layouts, why isn’t "${BASE_BUILD_DIR}"/libexec/test_bitcoin the equivalent of "${BASE_OUTDIR}"/libexec/test_bitcoin? Edit: And how do we know if the last example can be ./bin/test_bitcoin.exe or also ./libexec/test_bitcoin.exe? Unifying the two layouts would eliminate this confusion.

    ryanofsky commented at 3:19 pm on July 4, 2025:

    re: #31679 (review)

    Thanks! I implemented maflcko’s suggestion:

    0-  DIR_UNIT_TEST_DATA="${DIR_UNIT_TEST_DATA}" LD_LIBRARY_PATH="${DEPENDS_DIR}/${HOST}/lib" "${BASE_OUTDIR}"/libexec/test_bitcoin --catch_system_errors=no -l test_suite
    1+  DIR_UNIT_TEST_DATA="${DIR_UNIT_TEST_DATA}" LD_LIBRARY_PATH="${DEPENDS_DIR}/${HOST}/lib" "${BASE_BUILD_DIR}"/bin/test_bitcoin --catch_system_errors=no -l test_suite
    

    But I am wondering if maybe it is actually good to run test_bitcoin from the install directory instead of the build directory, since maybe this could detect problems if unit test didn’t work when installed? But happy to do anything here.

    On the layout question, I agree it’s nice for the build layout to mirror the install layout (even though this is unusual—usually build layout mirrors the source layout) and I implemented https://github.com/ryanofsky/bitcoin/commit/6e3bfb2b6df4774c1009d9210bc38f6db1a83c6d as a followup to support that.

    I do think this PR should be focused on installation and packaging and not make changes that affect developers because concerns are different in the build and install cases.

    For example, the install bin/ directory usually contains binaries from dozens of packages, while build/bin/ only contains bitcoin binaries. And the install bin/ directory rarely needs to be referenced directly since it is in the PATH, while build/bin/ is something developers will frequently type and using in scripts.

    So I want to address packaging only here and avoid changes that could impact developers. But I am interested in https://github.com/ryanofsky/bitcoin/commit/6e3bfb2b6df4774c1009d9210bc38f6db1a83c6d as a followup and happy to discuss it since I would like to keep build and install layouts consistent if it makes sense, even though they are controlled separately and used differently.

  74. in doc/release-notes-31375-31679.md:18 in 7904d10437 outdated
    13+Install changes
    14+---------------
    15+
    16+The `test_bitcoin` executable is now located in `libexec/` rather than `bin/`.
    17+It can still be executed directly, or accessed through the new `bitcoin` command
    18+line tool as `bitcoin test`.
    


    l0rinc commented at 10:09 am on July 4, 2025:

    ryanofsky commented at 3:21 pm on July 4, 2025:

    re: #31679 (review)

    Good catch! Updated these as well

  75. in doc/files.md:156 in b8be00f416 outdated
    152+| *libexec/bitcoin-gui*               | IPC-enabled alternative to `bitcoin-qt` |
    153+| *libexec/bitcoin-node*              | IPC-enabled alternative to `bitcoind` |
    154+| libexec/test_bitcoin                | Unit test binary |
    155+| *libexec/test_bitcoin-qt*           | GUI-specific unit tests |
    156+| share/man/man1/                     | Man pages for command-line tools like `bitcoin-cli`, `bitcoind`, and others |
    157+| share/rpcauth/                      | Documentation and scripts for RPC authentication setup |
    


    l0rinc commented at 10:11 am on July 4, 2025:

    nit: not everyone views the rendered view, we might want to align the source view as well:

     0| **Path**                                                   | **Description**                                                             |
     1|------------------------------------------------------------|-----------------------------------------------------------------------------|
     2| [README.md](README.md) or [readme.txt](README_windows.txt) | Project information and instructions                                        |
     3| bitcoin.conf                                               | [Generated](../contrib/devtools/gen-bitcoin-conf.sh) configuration file     |
     4| bin/bitcoin                                                | Command-line tool for interacting with Bitcoin. Calls other binaries below. |
     5| bin/bitcoin-cli                                            | Tool for making node and wallet RPC calls.                                  |
     6| bin/bitcoin-qt                                             | Bitcoin node and wallet GUI                                                 |
     7| bin/bitcoin-tx                                             | Tool for creating and modifying transactions                                |
     8| bin/bitcoin-util                                           | Miscellaneous utilities                                                     |
     9| bin/bitcoin-wallet                                         | Bitcoin wallet tool                                                         |
    10| bin/bitcoind                                               | Bitcoin node and wallet daemon                                              |
    11| *lib/libbitcoinkernel.so*                                  | Shared library containing core consensus and validation code                |
    12| *lib/pkgconfig/libbitcoinkernel.pc*                        | Pkg-config metadata for linking to `libbitcoinkernel`                       |
    13| *libexec/bench_bitcoin*                                    | Benchmarking tool for measuring node performance                            |
    14| *libexec/bitcoin-chainstate*                               | Tool to validate and connect blocks                                         |
    15| *libexec/bitcoin-gui*                                      | IPC-enabled alternative to `bitcoin-qt`                                     |
    16| *libexec/bitcoin-node*                                     | IPC-enabled alternative to `bitcoind`                                       |
    17| libexec/test_bitcoin                                       | Unit test binary                                                            |
    18| *libexec/test_bitcoin-qt*                                  | GUI-specific unit tests                                                     |
    19| share/man/man1/                                            | Man pages for command-line tools like `bitcoin-cli`, `bitcoind`, and others |
    20| share/rpcauth/                                             | Documentation and scripts for RPC authentication setup                      |
    

    ryanofsky commented at 3:20 pm on July 4, 2025:

    re: #31679 (review)

    nit: not everyone views the rendered view, we might want to align the source view as well:

    Thanks! Updated


    Sjors commented at 7:45 am on July 8, 2025:
    Looks great with mdcat :-)
  76. in ci/test/03_test_script.sh:1 in 1e9cf763fb outdated


    l0rinc commented at 10:13 am on July 4, 2025:
    Q: slightly unrelated, but if testing should be available for the installed version, how come fuzzing isn’t? Seems it should be mentioned with a 🛠 at least…

    ryanofsky commented at 3:15 pm on July 4, 2025:

    re: #31679 (review)

    Q: slightly unrelated, but if testing should be available for the installed version, how come fuzzing isn’t? Seems it should be mentioned with a 🛠 at least…

    The table doesn’t mention the fuzz binary just because the table is a list of installed files, and the fuzz binary is not installed before or after this change.

    Installing the fuzz binary would seem to make sense for consistency. But one problem with installing it as-is is that unlike test_bitcoin, bench_bitcoin, etc it has a generic name fuzz so I felt it would be better to leave alone here.

  77. l0rinc referenced this in commit 494005ccf2 on Jul 4, 2025
  78. in doc/files.md:134 in 03f585d58c outdated
    130 
    131 <a name="note2">2</a>. `NNNNN` matches `[0-9]{5}` regex.
    132+
    133+## Installed Files
    134+
    135+This table describes the files installed by Bitcoin across different platforms.
    


    l0rinc commented at 11:05 am on July 4, 2025:
    0This table describes the files installed by Bitcoin Core across different platforms.
    

    ryanofsky commented at 3:20 pm on July 4, 2025:

    re: #31679 (review)

    Thanks! Updated

  79. in doc/files.md:19 in 03f585d58c outdated
    15@@ -16,7 +16,7 @@
    16 
    17   - [Berkeley DB database based wallets](#berkeley-db-database-based-wallets)
    18 
    19-- [Notes](#notes)
    20+- [Installed Files](#installed-files)
    


    l0rinc commented at 11:12 am on July 4, 2025:

    nit: if you’re already editing this file consider fixing line 86:

    … double-spends due to the lack of synchronization


    ryanofsky commented at 3:20 pm on July 4, 2025:

    re: #31679 (review)

    nit: if you’re already editing this file consider fixing line 86:

    … double-spends due to the lack of synchronization

    Thanks, added commit to fix

  80. in doc/release-notes-31375-31679.md:22 in 03f585d58c outdated
    17+It can still be executed directly, or accessed through the new `bitcoin` command
    18+line tool as `bitcoin test`.
    19+
    20+Other executables which are only part of source releases and not built by
    21+default: `test_bitcoin-qt`, `bench_bitcoin`, `bitcoin-chainstate`,
    22+`bitcoin-node`, and `bitcoin-wallet`  are also now installed in `libexec/`
    


    l0rinc commented at 11:15 am on July 4, 2025:

    bitcoin-wallet should still be in bin as far as I can tell, not libexec (nit: + double space):

    0`bitcoin-node` are also now installed in `libexec/`
    

    ryanofsky commented at 3:21 pm on July 4, 2025:

    re: #31679 (review)

    bitcoin-wallet should still be in bin as far as I can tell, not libexec (nit: + double space):

    Good catch! I did mean to write bitcoin-gui not bitcoin-wallet

  81. l0rinc approved
  82. l0rinc commented at 11:34 am on July 4, 2025: contributor

    Concept ACK, tested on Mac and Linux, it works as expected.

     0rm -rfd build install && \
     1cmake -B build -G Ninja \
     2  -DCMAKE_BUILD_TYPE=RelWithDebInfo \
     3  -DCMAKE_INSTALL_PREFIX="$PWD/install" \
     4  -DBUILD_TESTS=ON \
     5  -DBUILD_BENCH=ON \
     6  -DBUILD_FUZZ_BINARY=ON \
     7  -DBUILD_UTIL_CHAINSTATE=ON \
     8  -DBUILD_GUI=ON \
     9  -DBUILD_GUI_TESTS=ON && \
    10ninja -C build install && \
    11tree -L 3 install/{bin,libexec}
    

    – Installing: bitcoin/install/bin/bitcoin-wallet – Installing: bitcoin/install/share/man/man1/bitcoin-wallet.1 – Installing: bitcoin/install/bin/bitcoin – Installing: bitcoin/install/bin/bitcoind – Installing: bitcoin/install/share/man/man1/bitcoind.1 – Installing: bitcoin/install/bin/bitcoin-cli – Installing: bitcoin/install/share/man/man1/bitcoin-cli.1 – Installing: bitcoin/install/bin/bitcoin-tx – Installing: bitcoin/install/share/man/man1/bitcoin-tx.1 – Installing: bitcoin/install/bin/bitcoin-util – Installing: bitcoin/install/share/man/man1/bitcoin-util.1 – Installing: bitcoin/install/bin/bitcoin-qt – Installing: bitcoin/install/share/man/man1/bitcoin-qt.1 – Installing: bitcoin/install/libexec/test_bitcoin-qt – Installing: bitcoin/install/lib/pkgconfig/libbitcoinkernel.pc – Installing: bitcoin/install/lib/libbitcoinkernel.dylib – Installing: bitcoin/install/libexec/bitcoin-chainstate – Installing: bitcoin/install/libexec/bench_bitcoin – Installing: bitcoin/install/libexec/test_bitcoin

    install/bin ├── bitcoin ├── bitcoin-cli ├── bitcoin-qt ├── bitcoin-tx ├── bitcoin-util ├── bitcoin-wallet └── bitcoind install/libexec ├── bench_bitcoin ├── bitcoin-chainstate ├── test_bitcoin └── test_bitcoin-qt

    – Installing: bitcoin/install/bin/bitcoin-wallet – Installing: bitcoin/install/share/man/man1/bitcoin-wallet.1 – Installing: bitcoin/install/bin/bitcoin – Installing: bitcoin/install/bin/bitcoind – Installing: bitcoin/install/share/man/man1/bitcoind.1 – Installing: bitcoin/install/bin/bitcoin-cli – Installing: bitcoin/install/share/man/man1/bitcoin-cli.1 – Installing: bitcoin/install/bin/bitcoin-tx – Installing: bitcoin/install/share/man/man1/bitcoin-tx.1 – Installing: bitcoin/install/bin/bitcoin-util – Installing: bitcoin/install/share/man/man1/bitcoin-util.1 – Installing: bitcoin/install/bin/bitcoin-qt – Installing: bitcoin/install/share/man/man1/bitcoin-qt.1 – Installing: bitcoin/install/libexec/test_bitcoin-qt – Installing: bitcoin/install/lib/pkgconfig/libbitcoinkernel.pc – Installing: bitcoin/install/lib/libbitcoinkernel.so – Installing: bitcoin/install/libexec/bitcoin-chainstate – Installing: bitcoin/install/libexec/bench_bitcoin – Installing: bitcoin/install/libexec/test_bitcoin

    install/bin ├── bitcoin ├── bitcoin-cli ├── bitcoind ├── bitcoin-qt ├── bitcoin-tx ├── bitcoin-util └── bitcoin-wallet install/libexec ├── bench_bitcoin ├── bitcoin-chainstate ├── test_bitcoin └── test_bitcoin-qt

    (only the bitcoin order and libbitcoinkernel.dylibvslibbitcoinkernel.so differ)

  83. doc: Fix typo in files.md
    Suggested by l0rinc https://github.com/bitcoin/bitcoin/pull/31679#discussion_r2185083314
    f49840dd90
  84. ryanofsky referenced this in commit fcb3678bcf on Jul 4, 2025
  85. ryanofsky referenced this in commit c83980035a on Jul 4, 2025
  86. ryanofsky referenced this in commit 6e3bfb2b6d on Jul 4, 2025
  87. ryanofsky referenced this in commit acf06a69f8 on Jul 4, 2025
  88. ryanofsky referenced this in commit 6a6b6f9093 on Jul 4, 2025
  89. ryanofsky force-pushed on Jul 4, 2025
  90. ryanofsky commented at 3:44 pm on July 4, 2025: contributor
    Updated 03f585d58ccf4d5c02d621c5b6046d45807b3201 -> 6a6b6f9093c1f82b8ea05ad87f421eabc8849738 (pr/libexec.9 -> pr/libexec.10, compare) with various suggestions updating signing & CI scripts and documentation
  91. l0rinc commented at 7:27 pm on July 4, 2025: contributor

    Tested ACK #31679 (review)

    Two remaining nits:

  92. ryanofsky force-pushed on Jul 7, 2025
  93. ryanofsky commented at 1:12 pm on July 7, 2025: contributor
    Updated 6a6b6f9093c1f82b8ea05ad87f421eabc8849738 -> f49840dd902cd9b14b6aadb431b16a4aeb719c3f (pr/libexec.10 -> pr/libexec.11, compare) addressing remaining comments and making bitcoin help output more consistent
  94. janb84 commented at 6:17 pm on July 7, 2025: contributor

    re ACK f49840dd902cd9b14b6aadb431b16a4aeb719c3f

    Changes since last ACK:

    • changes related to various suggestions
    • help output improvements:
     0$  ./build/bin/bitcoin
     1Usage: bitcoin [OPTIONS] COMMAND...
     2
     3Options:
     4  -m, --multiprocess     Run multiprocess binaries bitcoin-node, bitcoin-gui.
     5  -M, --monolithic       Run monolithic binaries bitcoind, bitcoin-qt. (Default behavior)
     6  -v, --version          Show version information
     7  -h, --help             Show full help message
     8
     9Commands:
    10  gui [ARGS]     Start GUI, equivalent to running 'bitcoin-qt [ARGS]' or 'bitcoin-gui [ARGS]'.
    11  node [ARGS]    Start node, equivalent to running 'bitcoind [ARGS]' or 'bitcoin-node [ARGS]'.
    12  rpc [ARGS]     Call RPC method, equivalent to running 'bitcoin-cli -named [ARGS]'.
    13  wallet [ARGS]  Call wallet command, equivalent to running 'bitcoin-wallet [ARGS]'.
    14  tx [ARGS]      Manipulate hex-encoded transactions, equivalent to running 'bitcoin-tx [ARGS]'.
    15  help           Show full help message.
    16
    17Run 'bitcoin help' to see additional commands (e.g. for testing and debugging).
    
     0$  ./build/bin/bitcoin help
     1Usage: bitcoin [OPTIONS] COMMAND...
     2
     3Options:
     4  -m, --multiprocess     Run multiprocess binaries bitcoin-node, bitcoin-gui.
     5  -M, --monolithic       Run monolithic binaries bitcoind, bitcoin-qt. (Default behavior)
     6  -v, --version          Show version information
     7  -h, --help             Show full help message
     8
     9Commands:
    10  gui [ARGS]     Start GUI, equivalent to running 'bitcoin-qt [ARGS]' or 'bitcoin-gui [ARGS]'.
    11  node [ARGS]    Start node, equivalent to running 'bitcoind [ARGS]' or 'bitcoin-node [ARGS]'.
    12  rpc [ARGS]     Call RPC method, equivalent to running 'bitcoin-cli -named [ARGS]'.
    13  wallet [ARGS]  Call wallet command, equivalent to running 'bitcoin-wallet [ARGS]'.
    14  tx [ARGS]      Manipulate hex-encoded transactions, equivalent to running 'bitcoin-tx [ARGS]'.
    15  help           Show full help message.
    16
    17Additional less commonly used commands:
    18  bench [ARGS]      Run bench command, equivalent to running 'bench_bitcoin [ARGS]'.
    19  chainstate [ARGS] Run bitcoin kernel chainstate util, equivalent to running 'bitcoin-chainstate [ARGS]'.
    20  test [ARGS]       Run unit tests, equivalent to running 'test_bitcoin [ARGS]'.
    21  test-gui [ARGS]   Run GUI unit tests, equivalent to running 'test_bitcoin-qt [ARGS]'.
    
  95. DrahtBot requested review from l0rinc on Jul 7, 2025
  96. DrahtBot requested review from Sjors on Jul 7, 2025
  97. l0rinc commented at 7:14 pm on July 7, 2025: contributor
    re-ACK f49840dd902cd9b14b6aadb431b16a4aeb719c3f
  98. Sjors commented at 7:43 am on July 8, 2025: member

    re-ACK f49840dd902cd9b14b6aadb431b16a4aeb719c3f @achow101 can you make a detached signature for either macOS or Windows for the current commit? It seems like a good precaution to test that given: https://github.com/bitcoin/bitcoin/commit/03f585d58ccf4d5c02d621c5b6046d45807b3201

    My non code-signed guix build: https://github.com/bitcoin-core/guix.sigs/pull/1708

  99. BrandonOdiwuor commented at 4:05 pm on July 10, 2025: contributor

    Tested ACK f49840dd902cd9b14b6aadb431b16a4aeb719c3f

    Tested on macOS 15.5 that bitcoin-node and test_bitcoin have been correctly moved from bin/ to libexec/


    Update: Also tested that bench_bitcoin, bitcoin_gui and test_bitcoin-qt are also moved to libexec/


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-07-11 06:13 UTC

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