build: multiprocess compile failure on macOS #29248

issue fanquake opened this issue on January 15, 2024
  1. fanquake commented at 11:28 AM on January 15, 2024: member

    master @ 28ccc7003a4c3f198a255d6f55f5748d4fd8fd1a

    Apple clang version 15.0.0 (clang-1500.1.0.2.5)
    
    make -C depends -j12 MULTIPROCESS=1 NO_QT=1 NO_WALLET=1 NO_NATPMP=1 NO_UPNP=1 NO_ZMQ=1
    ./autogen.sh
    CONFIG_SITE=/bitcoin/depends/aarch64-apple-darwin23.2.0/share/config.site ./configure
    make
    
    In file included from ipc/capnp/echo.capnp.proxy-client.c++:3:
    In file included from ./ipc/capnp/echo.capnp.proxy-types.h:6:
    In file included from ./ipc/capnp/echo.capnp.proxy.h:9:
    In file included from /bitcoin/depends/aarch64-apple-darwin23.2.0/include/mp/proxy.h:8:
    /bitcoin/depends/aarch64-apple-darwin23.2.0/include/mp/util.h:128:23: error: no type named 'result_of' in namespace 'std'
            typename std::result_of<Base(BoundArgs&..., BindArg&, FreeArgs...)>::type
            ~~~~~~~~~~~~~~^~~~~~~~~
    /bitcoin/depends/aarch64-apple-darwin23.2.0/include/mp/util.h:128:32: error: expected ';' at end of declaration list
            typename std::result_of<Base(BoundArgs&..., BindArg&, FreeArgs...)>::type
                                   ^
                                   ;
    2 errors generated.
    

    std::result_of was removed in C++20, but we are still using it in multiprocess: https://github.com/chaincodelabs/libmultiprocess/blob/2cbbd09d8b9972a8f5c68b510c0dae9a9f7a22da/include/mp/util.h#L128.

    By the looks of it, we can probably remove most of the code in that file, given we now require C++20. cc @ryanofsky.

  2. fanquake added the label Build system on Jan 15, 2024
  3. edilmedeiros commented at 3:56 PM on January 18, 2024: contributor

    I confirm this. I installed libmutiprocess manually; I'm not using what's on depends, but it generates the same error.

    Moreover, I tried on the current master head (03c5b006) and build fails in more places.

      CXX      ipc/capnp/libbitcoin_ipc_a-echo.capnp.o
      CXX      ipc/capnp/libbitcoin_ipc_a-init.capnp.o
      CXX      ipc/capnp/libbitcoin_ipc_a-echo.capnp.proxy-client.o
      CXX      ipc/capnp/libbitcoin_ipc_a-init.capnp.proxy-client.o
      CXX      ipc/capnp/libbitcoin_ipc_a-echo.capnp.proxy-server.o
      CXX      ipc/capnp/libbitcoin_ipc_a-init.capnp.proxy-server.o
      CXX      ipc/capnp/libbitcoin_ipc_a-echo.capnp.proxy-types.o
      CXX      ipc/capnp/libbitcoin_ipc_a-init.capnp.proxy-types.o
    In file included from ipc/capnp/echo.capnp.proxy-client.c++:3:
    In file included from ./ipc/capnp/echo.capnp.proxy-types.h:6:
    In file included from ./ipc/capnp/echo.capnp.proxy.h:9:
    In file included from /usr/local/include/mp/proxy.h:8:
    /usr/local/include/mp/util.h:128:23: error: no type named 'result_of' in namespace 'std'
            typename std::result_of<Base(BoundArgs&..., BindArg&, FreeArgs...)>::type
            ~~~~~~~~~~~~~~^~~~~~~~~
    /usr/local/include/mp/util.h:128:32: error: expected ';' at end of declaration list
            typename std::result_of<Base(BoundArgs&..., BindArg&, FreeArgs...)>::type
                                   ^
                                   ;
    In file included from ipc/capnp/echo.capnp.proxy-server.c++:3:
    In file included from ./ipc/capnp/echo.capnp.proxy-types.h:6:
    In file included from ./ipc/capnp/echo.capnp.proxy.h:9:
    In file included from /usr/local/include/mp/proxy.h:8:
    /usr/local/include/mp/util.h:128:23: error: no type named 'result_of' in namespace 'std'
            typename std::result_of<Base(BoundArgs&..., BindArg&, FreeArgs...)>::type
            ~~~~~~~~~~~~~~^~~~~~~~~
    /usr/local/include/mp/util.h:128:32: error: expected ';' at end of declaration list
            typename std::result_of<Base(BoundArgs&..., BindArg&, FreeArgs...)>::type
                                   ^
                                   ;
    2 errors generated.
      CCLD     libsecp256k1_precomputed.la
    make[2]: *** [ipc/capnp/libbitcoin_ipc_a-echo.capnp.proxy-client.o] Error 1
    make[2]: *** Waiting for unfinished jobs....
    In file included from ipc/process.cpp:7:
    /usr/local/include/mp/util.h:128:23: error: no type named 'result_of' in namespace 'std'
            typename std::result_of<Base(BoundArgs&..., BindArg&, FreeArgs...)>::type
            ~~~~~~~~~~~~~~^~~~~~~~~
    /usr/local/include/mp/util.h:128:32: error: expected ';' at end of declaration list
            typename std::result_of<Base(BoundArgs&..., BindArg&, FreeArgs...)>::type
                                   ^
                                   ;
    In file included from ipc/capnp/echo.capnp.proxy-types.c++:3:
    In file included from ./ipc/capnp/echo.capnp.proxy-types.h:6:
    In file included from ./ipc/capnp/echo.capnp.proxy.h:9:
    In file included from /usr/local/include/mp/proxy.h:8:
    /usr/local/include/mp/util.h:128:23: error: no type named 'result_of' in namespace 'std'
            typename std::result_of<Base(BoundArgs&..., BindArg&, FreeArgs...)>::type
            ~~~~~~~~~~~~~~^~~~~~~~~
    /usr/local/include/mp/util.h:128:32: error: expected ';' at end of declaration list
            typename std::result_of<Base(BoundArgs&..., BindArg&, FreeArgs...)>::type
                                   ^
                                   ;
    2 errors generated.
    2 errors generated.
    make[2]: *** [ipc/libbitcoin_ipc_a-process.o] Error 1
    make[2]: *** [ipc/capnp/libbitcoin_ipc_a-echo.capnp.proxy-server.o] Error 1
    In file included from ipc/capnp/init.capnp.proxy-client.c++:3:
    In file included from ./ipc/capnp/init.capnp.proxy-types.h:6:
    In file included from ./ipc/capnp/init.capnp.proxy.h:9:
    In file included from /usr/local/include/mp/proxy.h:8:
    /usr/local/include/mp/util.h:128:23: error: no type named 'result_of' in namespace 'std'
            typename std::result_of<Base(BoundArgs&..., BindArg&, FreeArgs...)>::type
            ~~~~~~~~~~~~~~^~~~~~~~~
    /usr/local/include/mp/util.h:128:32: error: expected ';' at end of declaration list
            typename std::result_of<Base(BoundArgs&..., BindArg&, FreeArgs...)>::type
                                   ^
                                   ;
    2 errors generated.
    make[2]: *** [ipc/capnp/libbitcoin_ipc_a-echo.capnp.proxy-types.o] Error 1
    In file included from ipc/capnp/init.capnp.proxy-server.c++:3:
    In file included from ./ipc/capnp/init.capnp.proxy-types.h:6:
    In file included from ./ipc/capnp/init.capnp.proxy.h:9:
    In file included from /usr/local/include/mp/proxy.h:8:
    /usr/local/include/mp/util.h:128:23: error: no type named 'result_of' in namespace 'std'
            typename std::result_of<Base(BoundArgs&..., BindArg&, FreeArgs...)>::type
            ~~~~~~~~~~~~~~^~~~~~~~~
    /usr/local/include/mp/util.h:128:32: error: expected ';' at end of declaration list
            typename std::result_of<Base(BoundArgs&..., BindArg&, FreeArgs...)>::type
                                   ^
                                   ;
    2 errors generated.
    make[2]: *** [ipc/capnp/libbitcoin_ipc_a-init.capnp.proxy-client.o] Error 1
    In file included from ipc/capnp/init.capnp.proxy-types.c++:3:
    In file included from ./ipc/capnp/init.capnp.proxy-types.h:6:
    In file included from ./ipc/capnp/init.capnp.proxy.h:9:
    In file included from /usr/local/include/mp/proxy.h:8:
    /usr/local/include/mp/util.h:128:23: error: no type named 'result_of' in namespace 'std'
            typename std::result_of<Base(BoundArgs&..., BindArg&, FreeArgs...)>::type
            ~~~~~~~~~~~~~~^~~~~~~~~
    /usr/local/include/mp/util.h:128:32: error: expected ';' at end of declaration list
            typename std::result_of<Base(BoundArgs&..., BindArg&, FreeArgs...)>::type
                                   ^
                                   ;
    2 errors generated.
    make[2]: *** [ipc/capnp/libbitcoin_ipc_a-init.capnp.proxy-server.o] Error 1
    2 errors generated.
    make[2]: *** [ipc/capnp/libbitcoin_ipc_a-init.capnp.proxy-types.o] Error 1
      CCLD     libsecp256k1.la
    make[1]: *** [all-recursive] Error 1
    make: *** [all-recursive] Error 1
    

    Not using homebrew, but macports to install dependencies.

    CPPFLAGS="$CPPFLAGS -isystem /opt/local/include" LIBS="$LIBS -L/opt/local/lib" PKG_CONFIG_PATH="/usr/local/lib/pkgconfig" LIBMULTIPROCESS_CFLAGS="-I/usr/local/include" LIBMULTIPROCESS_LIBS="-L/usr/local/lib" EVENT_CFLAGS="-I/opt/local/include" EVENT_LIBS="-L/opt/local/lib -levent" ./configure --enable-multiprocess --without-dbd --without-miniupnpc --without-natpmp --without-gui --disable-zmq --disable-wallet --with-boost=/opt/local/libexec/boost/1.78
    
    make -j11
    
  4. ryanofsky commented at 6:55 PM on January 18, 2024: contributor

    Thanks for the reminder. Will try to implement a fix for this today!

  5. ryanofsky referenced this in commit 65260d1851 on Jan 18, 2024
  6. ryanofsky referenced this in commit 7d1fee06d6 on Jan 18, 2024
  7. ryanofsky referenced this in commit 5dfd24581a on Jan 18, 2024
  8. ryanofsky commented at 8:17 PM on January 18, 2024: contributor
  9. ryanofsky referenced this in commit b8105b3ed7 on Jan 22, 2024
  10. fanquake closed this on Jan 23, 2024

  11. fanquake referenced this in commit f1ab078ed7 on Jan 23, 2024
  12. 0xB10C referenced this in commit d9baf06506 on Jan 24, 2024
  13. PastaPastaPasta referenced this in commit fcb0d3ccf4 on Sep 27, 2024
  14. PastaPastaPasta referenced this in commit c7e42416ff on Sep 27, 2024
  15. PastaPastaPasta referenced this in commit 2758ba8cd9 on Sep 27, 2024
  16. PastaPastaPasta referenced this in commit 914582ecbd on Sep 28, 2024
  17. PastaPastaPasta referenced this in commit 7a63c20c47 on Oct 1, 2024
  18. bitcoin locked this on Jan 22, 2025

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: 2026-04-25 03:14 UTC

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