Add bitcoin-{node,gui} to release binaries for IPC #31802

pull Sjors wants to merge 5 commits into bitcoin:master from Sjors:2025/02/ipc-yea changing 16 files +51 −30
  1. Sjors commented at 4:04 pm on February 5, 2025: member

    Have depends make libmultiprocess by default, which has the effect of including it in the release binaries. Except for Windows and OpenBSD which are not supported yet, the latter due to a fairly trivial upstream issue.

    The initial main use case is to enable experimental support for the Mining IPC interface. A working example of a Stratum v2 Template Provider client using this interface can be found here: https://github.com/Sjors/bitcoin/pull/48.

    Additionally the bitcoin-node and bitcoin-gui are added to Maintenance.cmake.

    See #31756 for discussion of when this should happen. Supersedes #30975.

    Guix hashes:

     074bcff488ba5ba49ceec5db51edeb0cacabac25ceda3c723f9f1b9f627e61344  guix-build-5d96e656d72a/output/aarch64-linux-gnu/SHA256SUMS.part
     15f9d78dd79964edd161ef0f242ace5c7f56e9dfce30c08aa6c804f1357abc29c  guix-build-5d96e656d72a/output/aarch64-linux-gnu/bitcoin-5d96e656d72a-aarch64-linux-gnu-debug.tar.gz
     2450c474451c766eea6f678d75a7a5d5e6af9316388c4fd9ba588d1e452edaf94  guix-build-5d96e656d72a/output/aarch64-linux-gnu/bitcoin-5d96e656d72a-aarch64-linux-gnu.tar.gz
     38a3a1c69d06d7b29521208310365233f06f708453bef372aefac66a162130edc  guix-build-5d96e656d72a/output/arm-linux-gnueabihf/SHA256SUMS.part
     40aaf20416bb62b2ca3e5f5bc3578d53526dfe30f41074deaffd969b56dc5d968  guix-build-5d96e656d72a/output/arm-linux-gnueabihf/bitcoin-5d96e656d72a-arm-linux-gnueabihf-debug.tar.gz
     5abe4e238f90a9746068eb66ebbf044e7d62ee5febdac8fa783000a7d0a73769c  guix-build-5d96e656d72a/output/arm-linux-gnueabihf/bitcoin-5d96e656d72a-arm-linux-gnueabihf.tar.gz
     69ed230bcbe16d60e9c7e06774b0c89201c641ed93efbb398737b86a35cf99c5c  guix-build-5d96e656d72a/output/arm64-apple-darwin/SHA256SUMS.part
     7e89953a5c5055c0630be8304d47a5387de6754bc39243309a8b12507554b4097  guix-build-5d96e656d72a/output/arm64-apple-darwin/bitcoin-5d96e656d72a-arm64-apple-darwin-codesigning.tar.gz
     8e48edc37541e988a607defbbf5afc6f481e05a6cdebe9ceeb81dbd1844609d45  guix-build-5d96e656d72a/output/arm64-apple-darwin/bitcoin-5d96e656d72a-arm64-apple-darwin-unsigned.tar.gz
     93a2c2553b9afb84c03e50d420a463eec72a48526cd3b0a452d776dfaa8ba69e6  guix-build-5d96e656d72a/output/arm64-apple-darwin/bitcoin-5d96e656d72a-arm64-apple-darwin-unsigned.zip
    1010fb0320a1923d0fc7d7c6a8dc68391b2fda9a2450bde25fd741047b27f5637a  guix-build-5d96e656d72a/output/dist-archive/bitcoin-5d96e656d72a.tar.gz
    1161c5f144ffe9e8884cc4f8a4642872249f5290d34aabee15be565681f922011d  guix-build-5d96e656d72a/output/powerpc64-linux-gnu/SHA256SUMS.part
    12d466a0c5e585ee77e900c08614b842957ab7854341eac1f62940609a37bede67  guix-build-5d96e656d72a/output/powerpc64-linux-gnu/bitcoin-5d96e656d72a-powerpc64-linux-gnu-debug.tar.gz
    13bed3f8ce66eea3001fa8189f2268f23c10a984177f840f73dabb6715b9aaf6c6  guix-build-5d96e656d72a/output/powerpc64-linux-gnu/bitcoin-5d96e656d72a-powerpc64-linux-gnu.tar.gz
    147e149167ba4a0e1074bd7794aa6b295a4723ebb8b1de728fe93f90d5dfbddbbd  guix-build-5d96e656d72a/output/riscv64-linux-gnu/SHA256SUMS.part
    150575509699d056a05c3377d4123b2ce39d1af0a5c5749a7707e49546b7b44564  guix-build-5d96e656d72a/output/riscv64-linux-gnu/bitcoin-5d96e656d72a-riscv64-linux-gnu-debug.tar.gz
    16540e27a90974bb32f2908b4f366a85535764d18ec3516587c78007bd54ef244c  guix-build-5d96e656d72a/output/riscv64-linux-gnu/bitcoin-5d96e656d72a-riscv64-linux-gnu.tar.gz
    17d648fc4fc555d54e393a6866fe332bd38dd54178fa1b4d641725641409d1b4d7  guix-build-5d96e656d72a/output/x86_64-apple-darwin/SHA256SUMS.part
    18aee2a1835b8aca22b573016a69cf7a58fedb51e2b79feb10a99c99bc11b1ffdc  guix-build-5d96e656d72a/output/x86_64-apple-darwin/bitcoin-5d96e656d72a-x86_64-apple-darwin-codesigning.tar.gz
    19e4e341a7390a162505dcb9484d27d9cd5bba35d3530ab58be0d8bc0ad8afe56f  guix-build-5d96e656d72a/output/x86_64-apple-darwin/bitcoin-5d96e656d72a-x86_64-apple-darwin-unsigned.tar.gz
    20739c4c7839ee7c517e37899fe06c819cfbe566f51bd6d898528aa182ce2082c5  guix-build-5d96e656d72a/output/x86_64-apple-darwin/bitcoin-5d96e656d72a-x86_64-apple-darwin-unsigned.zip
    210caa16e1b1da9890558756857f75ea13e4fda1fca8f4aebff10fc676c716664f  guix-build-5d96e656d72a/output/x86_64-linux-gnu/SHA256SUMS.part
    229899f5ea6b35059b152920b68de4059b66a56e6f7a48bbeb3038fd424c604f7c  guix-build-5d96e656d72a/output/x86_64-linux-gnu/bitcoin-5d96e656d72a-x86_64-linux-gnu-debug.tar.gz
    239f915723dc006824fb11c301925a64b2fd3687b8393ed9a0b04f3bab0df7d730  guix-build-5d96e656d72a/output/x86_64-linux-gnu/bitcoin-5d96e656d72a-x86_64-linux-gnu.tar.gz
    240612dea7d8cae3f369ddb1eb8b99b7a968275575f4968a5728556121ca21d847  guix-build-5d96e656d72a/output/x86_64-w64-mingw32/SHA256SUMS.part
    255dc093eb1a88659dcfa5dee67d3b3f78c810b7b2bb9b5534af9304b7823c0775  guix-build-5d96e656d72a/output/x86_64-w64-mingw32/bitcoin-5d96e656d72a-win64-codesigning.tar.gz
    2620f43ef3eab0c392e82f0f823ac89192679dae929d5a76ad04d091aca65d37d2  guix-build-5d96e656d72a/output/x86_64-w64-mingw32/bitcoin-5d96e656d72a-win64-debug.zip
    275b427424d0e58477c09f989f741d6fa13b51e6c76149a1b4e0d4da2af4e75b3e  guix-build-5d96e656d72a/output/x86_64-w64-mingw32/bitcoin-5d96e656d72a-win64-setup-unsigned.exe
    28b48aefec04d7b57f563dc7b61026ef9cda54d4b853bf7a170b2eb5cc4237bb5d  guix-build-5d96e656d72a/output/x86_64-w64-mingw32/bitcoin-5d96e656d72a-win64-unsigned.zip
    
  2. DrahtBot commented at 4:04 pm on February 5, 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/31802.

    Reviews

    See the guideline for information on the review process.

    Type Reviewers
    ACK ryanofsky

    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:

    • #32271 (doc: Document WITH_EXTERNAL_LIBMULTIPROCESS build option better by ryanofsky)
    • #32262 (build: Restore cross-compilation for Android by hebasto)
    • #32162 (depends: Switch from multilib to platform-specific toolchains by hebasto)
    • #32086 (Shuffle depends instructions and recommend modern make for macOS by Sjors)
    • #31375 (multiprocess: Add bitcoin wrapper executable by ryanofsky)
    • #31349 (ci: detect outbound internet traffic generated while running tests by vasild)
    • #30595 (kernel: Introduce initial C header API by TheCharlatan)
    • #28710 (Remove the legacy wallet and BDB dependency by achow101)

    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 Needs rebase on Feb 6, 2025
  4. Sjors force-pushed on Feb 7, 2025
  5. Sjors force-pushed on Feb 7, 2025
  6. sipa commented at 9:03 pm on February 7, 2025: member

    Some chatter from IRC:

     017:21:41 < darosior> It might be confusing to release both a bitcoin-wallet utility and a bitcoin-wallet binary as part of multiprocess?
     117:24:08 < darosior> We could rename the utility, but then it would be nice to at least have one deprecation cycle. Given recent momentum i estimate it's possible we might release multiprocess in 
     2                     30.0, which means if we want to deprecate the bitcoin-wallet utility name we should do it.. now?
     317:33:31 < sipa> bitcoin-wallet-util ?
     4...
     523:38:57 < _aj_> darosior: bitcoin-wallet-process, bitcoin-gui-process, etc? it's multi *-process!
     603:04:34 < Sjors[m]> darosior: at the moment there is no wallet binary if were to enable multiprocess. That won't happen until [#19460](/bitcoin-bitcoin/19460/).
     7...
     803:05:18 < Sjors[m]> Or maybe already in [#10102](/bitcoin-bitcoin/10102/)
     9...
    1003:05:50 < Sjors[m]> In any case [#31802](/bitcoin-bitcoin/31802/) only adds bitcoin-node and bitcoin-gui.
    11...
    1203:07:19 < Sjors[m]> Though if we want to rename the utility eventually, it's always better to do it early.
    
  7. Sjors commented at 10:58 am on February 8, 2025: member
    @sipa I opened #31827
  8. onlinesipahimithu commented at 1:26 am on February 9, 2025: none
    GOOD lesson from
  9. bitcoin deleted a comment on Feb 9, 2025
  10. Sjors force-pushed on Feb 10, 2025
  11. Sjors force-pushed on Feb 13, 2025
  12. DrahtBot removed the label Needs rebase on Feb 13, 2025
  13. Sjors force-pushed on Feb 17, 2025
  14. Sjors force-pushed on Feb 17, 2025
  15. DrahtBot added the label Needs rebase on Feb 20, 2025
  16. ryanofsky referenced this in commit 83e40d3b52 on Feb 24, 2025
  17. ryanofsky referenced this in commit 8619f03ec2 on Feb 24, 2025
  18. ryanofsky referenced this in commit cbb7b41c20 on Feb 24, 2025
  19. fanquake referenced this in commit 01f7715766 on Feb 25, 2025
  20. fanquake referenced this in commit ba0a4391ff on Feb 25, 2025
  21. pablomartin4btc referenced this in commit bd2453d134 on Feb 26, 2025
  22. pablomartin4btc referenced this in commit 75d5d235a6 on Feb 26, 2025
  23. Sjors force-pushed on Feb 27, 2025
  24. DrahtBot removed the label Needs rebase on Feb 27, 2025
  25. ngn999 referenced this in commit fd12bfb763 on Feb 27, 2025
  26. DrahtBot added the label Needs rebase on Mar 5, 2025
  27. Sjors force-pushed on Mar 11, 2025
  28. DrahtBot removed the label Needs rebase on Mar 11, 2025
  29. DrahtBot added the label Needs rebase on Mar 12, 2025
  30. Sjors force-pushed on Mar 12, 2025
  31. DrahtBot removed the label Needs rebase on Mar 12, 2025
  32. DrahtBot added the label Needs rebase on Mar 14, 2025
  33. Sjors force-pushed on Mar 17, 2025
  34. DrahtBot removed the label Needs rebase on Mar 17, 2025
  35. DrahtBot added the label Needs rebase on Mar 18, 2025
  36. Sjors force-pushed on Mar 18, 2025
  37. DrahtBot removed the label Needs rebase on Mar 18, 2025
  38. DrahtBot added the label Needs rebase on Mar 29, 2025
  39. Sjors force-pushed on Mar 31, 2025
  40. DrahtBot removed the label Needs rebase on Mar 31, 2025
  41. Sjors force-pushed on Mar 31, 2025
  42. DrahtBot added the label Needs rebase on Apr 2, 2025
  43. Sjors force-pushed on Apr 2, 2025
  44. DrahtBot removed the label Needs rebase on Apr 2, 2025
  45. DrahtBot added the label Needs rebase on Apr 4, 2025
  46. Sjors commented at 4:32 pm on April 10, 2025: member
    As discussed in IRC, I’ll turn on IPC in the default cmake build (not just the dev preset). Either here on in the previous PR.
  47. ryanofsky commented at 5:53 pm on April 10, 2025: contributor

    As discussed in IRC, I’ll turn on IPC in the default cmake build (not just the dev preset). Either here on in the previous PR.

    In case it helps I actually have an old commit implementing this: a6d9db48249d5d9bd63ea0d99e15066a1299e5c3 (branch) since I was originally thinking of including it in #31741

  48. Sjors force-pushed on Apr 11, 2025
  49. DrahtBot removed the label Needs rebase on Apr 11, 2025
  50. Sjors marked this as ready for review on Apr 11, 2025
  51. Sjors commented at 7:32 pm on April 11, 2025: member
    Marked this as ready for review, but see discussion here: #30975 (comment)
  52. ryanofsky commented at 8:49 pm on April 11, 2025: contributor

    Code review 1ed02d5bf4a4bcf58cad0addaaaf9c171e29d8c6

    • It seems like there are some MULTIPROCESS=1 settings added earlier in this PR that are not removed later and become ignored, so these would be good to clean up
    • It could be good to simplify this PR and avoid churn by moving the two CI commits last (if they are still needed) after changing the cmake and depends ENABLE_IPC defaults from true to false.
    • It could make sense to rename the NO_MULTIPROCESS depends option to NO_IPC to be consistent with the cmake ENABLE_IPC option. There are some other depends/cmake options that seem to share the same names like NO_WALLET/ENABLE_WALLET, NO_ZMQ/WITH_ZMQ, NO_USDT/WITH_USDT, etc
  53. Sjors force-pushed on Apr 11, 2025
  54. Sjors commented at 9:58 pm on April 11, 2025: member

    I moved the ci commits last and removed the unneeded stuff. So this PR is now independent of #30975, although it overlaps.

    Hopefully didn’t break anything…


    Does anyone have a strong preference which CI job(s) should build without multiprocess? Right now the Windows and one i686 cirrus job are.

    Any which CI job(s) should use bitcoin-node in the functional tests? I picked CentOS (depends) and macOS native (no depends).

    Except for Windows, these choices are fairly arbitrary.

  55. Sjors force-pushed on Apr 11, 2025
  56. DrahtBot added the label Needs rebase on Apr 14, 2025
  57. build: add bitcoin-{node,gui} to Maintenance.cmake 384c700f74
  58. build: depends makes libmultiprocess by default
    Except for Windows and OpenBSD.
    9b46b7d582
  59. ci: build one depends job without multiprocess 4f6d6a0ec4
  60. ci: use bitcoin-node for one depends job
    The bitcoin-node binary is built on all platforms which have
    multiprocess enabled, but for functional tests it's only used in
    CentOS native (depends) job. The next commit will also add a
    non-depends job.
    f4c39a8864
  61. cmake: enable ENABLE_IPC option by default
    Install capnp on non-depends CI jobs.
    
    Use the bitcoin-node binary in the macOS native non-depends job.
    
    Co-authored-by: Ryan Ofsky <ryan@ofsky.org>
    5d96e656d7
  62. Sjors force-pushed on Apr 15, 2025
  63. DrahtBot removed the label Needs rebase on Apr 15, 2025
  64. in depends/README.md:121 in 9b46b7d582 outdated
    117@@ -118,7 +118,7 @@ The following can be set when running make: `make FOO=bar`
    118 - `NO_WALLET`: Don't download/build/cache libs needed to enable the wallet (SQLite)
    119 - `NO_BDB`: Don't download/build/cache BerkeleyDB
    120 - `NO_USDT`: Don't download/build/cache packages needed for enabling USDT tracepoints
    121-- `MULTIPROCESS`: Build libmultiprocess (experimental)
    122+- `NO_IPC`: Don't build experimental libmultiprocess (default on Windows and OpenBSD)
    


    ryanofsky commented at 5:17 pm on April 15, 2025:

    In commit “build: depends makes libmultiprocess by default” (9b46b7d582edcf61bbec5b01c8e661af804e22d6)

    Think it would be good if this description described the full effects of this option. Would maybe say “NO_IPC: don’t build Cap’n Proto and libmultiprocess packages, and disable building IPC binaries (bitcoin-node, bitcoin-gui)”

    Also, since this is the most significant commit in the PR, which controls whether IPC binaries are included in releases, it would be good to mention the effect this has on releases in the commit description.

    Commit description could also mention effect this has on CI builds: it cause more depends builds to build IPC binaries, but still the only build running functional tests with them is the i686_multiprocess one.

  65. ryanofsky approved
  66. ryanofsky commented at 5:35 pm on April 15, 2025: contributor

    Code review ACK 5d96e656d72abee468f5f49759b1b08eab445d4d. Changes seem pretty clean and simple now. I think it might be good for PR to clearly mention the 3 changes in behavior it causes:

    1 - Causes bitcoin-node and bitcoin-gui binaries to be included in releases and ENABLE_IPC option to be switched on by default in depends builds. 2 - Also causes ENABLE_IPC option to be switched on by default in both non-depends builds 3 - Makes various changes to CI: switching on ENABLE_IPC on in most configurations and using bitcoin-node binary for functional tests in two of them.

    It would also be good to point out that that this PR doesn’t need to do all of 3 things at once. It is simpler and probably less confusing to make all these changes in the same PR, but if we want to isolate any of these things and make them separate, that’s possible.


    re: #31802 (comment)

    All the choices you made about CI jobs options seem reasonable, and seem to test everything we would want. But @maflcko has best understanding of CI jobs and might have input.


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-04-17 09:12 UTC

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