ci: Add NetBSD job #196

pull hebasto wants to merge 1 commits into bitcoin-core:master from hebasto:250823-ci-netbsd changing 2 files +62 −0
  1. hebasto commented at 1:19 pm on August 23, 2025: member

    The master branch @ 1b8d4a6f1e54b92708bd2ad627ec6d440a1daf3d fails to build on NetBSD.

    See: https://github.com/hebasto/libmultiprocess/actions/runs/17175941246/job/48731811650

  2. DrahtBot commented at 1:19 pm on August 23, 2025: none

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

    Reviews

    See the guideline for information on the review process. A summary of reviews will appear here.

  3. hebasto referenced this in commit ff81a4a623 on Aug 23, 2025
  4. hebasto referenced this in commit cc1420b806 on Aug 23, 2025
  5. in .github/workflows/ci.yml:28 in 4c0665854f outdated
    13+        shell: netbsd {0}
    14+    steps:
    15+      - uses: actions/checkout@v5
    16+
    17+      - name: Start NetBSD VM
    18+        uses: vmactions/netbsd-vm@v1
    


    hebasto commented at 1:34 pm on August 23, 2025:

    @ryanofsky

    Could you please enable this action in the repo settings?


    ryanofsky commented at 1:44 pm on August 23, 2025:

    @ryanofsky

    Could you please enable this action in the repo settings?

    Thanks! Should be enabled now


    hebasto commented at 1:52 pm on August 23, 2025:

    For some reason it still complains:

    0The action vmactions/netbsd-vm@v1 is not allowed in bitcoin-core/libmultiprocess because all actions must be from a repository owned by bitcoin-core or match one of the patterns: actions/checkout@*, cachix/install-nix-action@*, vmactions/openbsd-vm@*.
    

    ryanofsky commented at 4:19 pm on August 23, 2025:

    For some reason it still complains:

    Looks like the value was not updated, should be fixed now

  6. hebasto force-pushed on Aug 23, 2025
  7. ryanofsky commented at 1:48 pm on August 23, 2025: collaborator
    Errors all appear to be undefined reference to 'kj::getCaughtExceptionAsKj()' linker errors
  8. hebasto closed this on Aug 23, 2025

  9. hebasto reopened this on Aug 23, 2025

  10. ryanofsky commented at 2:01 pm on August 23, 2025: collaborator
    I noticed getCaughtExceptionAsKj doesn’t seem to be defined if KJ_NO_EXCEPTIONS is defined. Doesn’t look like netbsd is defining that though https://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc/devel/capnproto/
  11. ryanofsky closed this on Aug 23, 2025

  12. ryanofsky reopened this on Aug 23, 2025

  13. in .github/workflows/ci.yml:61 in 5852983f42 outdated
    22+          sync: 'rsync'
    23+          copyback: false
    24+
    25+      - name: Run CI script
    26+        run: |
    27+          cd ${{ github.workspace }}
    


    maflcko commented at 9:04 am on August 24, 2025:
    nit: Could address #195 (review) while touching this file?

    hebasto commented at 10:46 am on August 24, 2025:

    nit: Could address #195 (comment) while touching this file?

    Responded here.

    UPD. If this line is dropped, the job fails:

    0bash: ci/scripts/ci.sh: No such file or directory
    
  14. Sjors commented at 7:40 am on September 5, 2025: member
    Maybe rebase after #197 for easier review?
  15. hebasto force-pushed on Sep 5, 2025
  16. hebasto commented at 2:14 pm on September 5, 2025: member

    Maybe rebase after #197 for easier review?

    Sure! Rebased.

  17. ryanofsky commented at 2:35 pm on September 5, 2025: collaborator

    Assuming the netbsd job still fails, I guess there are different directions we may go with this issue:

    • If it’s possible to fix this with a change in libmultiprocess that would be ideal.
    • If that’s not possible, then maybe netbsd job could install from capnproto from source and we could report an issue to netbsd.
    • If installing capnproto from source doesn’t work, this will require a fix in capnproto.

    And regardless of these, we may want to add a try_compile test and error with suggested workarounds along the lines of #205

  18. hebasto commented at 2:42 pm on September 5, 2025: member

    Assuming the netbsd job still fails, I guess there are different directions we may go with this issue:

    • If it’s possible to fix this with a change in libmultiprocess that would be ideal.

    • If that’s not possible, then maybe netbsd job could install from capnproto from source and we could report an issue to netbsd.

    • If installing capnproto from source doesn’t work, this will require a fix in capnproto.

    And regardless of these, we may want to add a try_compile test and error with suggested workarounds along the lines of #205

    FWIW, build with depends succeeds: https://github.com/hebasto/bitcoin-core-nightly/actions/runs/17482518540/job/49655572035.

  19. maflcko commented at 8:09 am on December 22, 2025: contributor
    Could rebase for fresh CI logs?
  20. hebasto force-pushed on Dec 22, 2025
  21. hebasto commented at 11:55 am on December 22, 2025: member

    Could rebase for fresh CI logs?

    Sure thing! Done.

  22. hebasto force-pushed on Dec 22, 2025
  23. maflcko commented at 12:39 pm on December 22, 2025: contributor

    For reference, the full error is:

     0[7/7] Linking CXX executable test/mptest
     1FAILED: [code=1] test/mptest 
     2: && /usr/pkg/gcc14/bin/g++ -Werror -Wall -Wextra -Wpedantic -Wno-unused-parameter  test/CMakeFiles/mptest.dir/mp/test/test.cpp.o test/CMakeFiles/mptest.dir/mp/test/foo.capnp.c++.o test/CMakeFiles/mptest.dir/mp/test/foo.capnp.proxy-client.c++.o test/CMakeFiles/mptest.dir/mp/test/foo.capnp.proxy-server.c++.o test/CMakeFiles/mptest.dir/mp/test/foo.capnp.proxy-types.c++.o -o test/mptest  -Wl,-rpath,/usr/pkg/lib  libmultiprocess.a  /usr/pkg/lib/libkj-test-1.1.0.so  /usr/pkg/lib/libcapnp-rpc-1.1.0.so  /usr/pkg/lib/libcapnp-1.1.0.so  /usr/pkg/lib/libkj-async-1.1.0.so  /usr/pkg/lib/libkj-1.1.0.so  -lpthread  -Wl,-R/usr/pkg/lib  -pthread  -lpthread && :
     3/usr/bin/ld: warning: libstdc++.so.9, needed by /usr/pkg/lib/libkj-test-1.1.0.so, may conflict with libstdc++.so.7
     4/usr/bin/ld: test/CMakeFiles/mptest.dir/mp/test/foo.capnp.proxy-server.c++.o: in function `kj::Maybe<kj::Exception> kj::runCatchingExceptions<mp::PassField<mp::Accessor<mp::foo_fields::Context, 17>, mp::ServerInvokeContext<mp::ProxyServer<mp::test::messages::FooInterface>, capnp::CallContext<mp::test::messages::FooInterface::CallbackParams, mp::test::messages::FooInterface::CallbackResults> >, mp::ServerField<1, mp::Accessor<mp::foo_fields::Callback, 17>, mp::ServerField<1, mp::Accessor<mp::foo_fields::Arg, 1>, mp::ServerRet<mp::Accessor<mp::foo_fields::Result, 2>, mp::ServerCall> > >, mp::TypeList<mp::test::FooCallback&, int> >(mp::Priority<1>, mp::TypeList<>, mp::ServerInvokeContext<mp::ProxyServer<mp::test::messages::FooInterface>, capnp::CallContext<mp::test::messages::FooInterface::CallbackParams, mp::test::messages::FooInterface::CallbackResults> >&, mp::ServerField<1, mp::Accessor<mp::foo_fields::Callback, 17>, mp::ServerField<1, mp::Accessor<mp::foo_fields::Arg, 1>, mp::ServerRet<mp::Accessor<mp::foo_fields::Result, 2>, mp::ServerCall> > > const&, mp::TypeList<mp::test::FooCallback&, int>&&)::{lambda()#1}::operator()()::{lambda()#3}>(mp::PassField<mp::Accessor<mp::foo_fields::Context, 17>, mp::ServerInvokeContext<mp::ProxyServer<mp::test::messages::FooInterface>, capnp::CallContext<mp::test::messages::FooInterface::CallbackParams, mp::test::messages::FooInterface::CallbackResults> >, mp::ServerField<1, mp::Accessor<mp::foo_fields::Callback, 17>, mp::ServerField<1, mp::Accessor<mp::foo_fields::Arg, 1>, mp::ServerRet<mp::Accessor<mp::foo_fields::Result, 2>, mp::ServerCall> > >, mp::TypeList<mp::test::FooCallback&, int> >(mp::Priority<1>, mp::TypeList<>, mp::ServerInvokeContext<mp::ProxyServer<mp::test::messages::FooInterface>, capnp::CallContext<mp::test::messages::FooInterface::CallbackParams, mp::test::messages::FooInterface::CallbackResults> >&, mp::ServerField<1, mp::Accessor<mp::foo_fields::Callback, 17>, mp::ServerField<1, mp::Accessor<mp::foo_fields::Arg, 1>, mp::ServerRet<mp::Accessor<mp::foo_fields::Result, 2>, mp::ServerCall> > > const&, mp::TypeList<mp::test::FooCallback&, int>&&)::{lambda()#1}::operator()()::{lambda()#3}&&)':
     5foo.capnp.proxy-server.c++:(.text._ZN2kj21runCatchingExceptionsIZZN2mp9PassFieldINS1_8AccessorINS1_10foo_fields7ContextELi17EEENS1_19ServerInvokeContextINS1_11ProxyServerINS1_4test8messages12FooInterfaceEEEN5capnp11CallContextINSB_14CallbackParamsENSB_15CallbackResultsEEEEENS1_11ServerFieldILi1ENS3_INS4_8CallbackELi17EEENSJ_ILi1ENS3_INS4_3ArgELi1EEENS1_9ServerRetINS3_INS4_6ResultELi2EEENS1_10ServerCallEEEEEEEJNS1_8TypeListIJRNS9_11FooCallbackEiEEEEEENSt9enable_ifIXsrSt7is_sameIDTclsrT_3getcldtdtfp1_12call_context9getParamsEEENS1_7Context6ReaderEE5valueENS_7PromiseINT0_11CallContextEEEE4typeENS1_8PriorityILi1EEENSV_IJEEERS17_RKT1_DpOT2_ENUlvE_clEvEUlvE1_EENS_5MaybeINS_9ExceptionEEEOS11_[_ZN2kj21runCatchingExceptionsIZZN2mp9PassFieldINS1_8AccessorINS1_10foo_fields7ContextELi17EEENS1_19ServerInvokeContextINS1_11ProxyServerINS1_4test8messages12FooInterfaceEEEN5capnp11CallContextINSB_14CallbackParamsENSB_15CallbackResultsEEEEENS1_11ServerFieldILi1ENS3_INS4_8CallbackELi17EEENSJ_ILi1ENS3_INS4_3ArgELi1EEENS1_9ServerRetINS3_INS4_6ResultELi2EEENS1_10ServerCallEEEEEEEJNS1_8TypeListIJRNS9_11FooCallbackEiEEEEEENSt9enable_ifIXsrSt7is_sameIDTclsrT_3getcldtdtfp1_12call_context9getParamsEEENS1_7Context6ReaderEE5valueENS_7PromiseINT0_11CallContextEEEE4typeENS1_8PriorityILi1EEENSV_IJEEERS17_RKT1_DpOT2_ENUlvE_clEvEUlvE1_EENS_5MaybeINS_9ExceptionEEEOS11_]+0x52): undefined reference to `kj::getCaughtExceptionAsKj()'
     6/usr/bin/ld: test/CMakeFiles/mptest.dir/mp/test/foo.capnp.proxy-server.c++.o: in function `kj::Maybe<kj::Exception> kj::runCatchingExceptions<mp::PassField<mp::Accessor<mp::foo_fields::Context, 17>, mp::ServerInvokeContext<mp::ProxyServer<mp::test::messages::FooInterface>, capnp::CallContext<mp::test::messages::FooInterface::CallbackUniqueParams, mp::test::messages::FooInterface::CallbackUniqueResults> >, mp::ServerField<1, mp::Accessor<mp::foo_fields::Callback, 17>, mp::ServerField<1, mp::Accessor<mp::foo_fields::Arg, 1>, mp::ServerRet<mp::Accessor<mp::foo_fields::Result, 2>, mp::ServerCall> > >, mp::TypeList<std::unique_ptr<mp::test::FooCallback, std::default_delete<mp::test::FooCallback> >, int> >(mp::Priority<1>, mp::TypeList<>, mp::ServerInvokeContext<mp::ProxyServer<mp::test::messages::FooInterface>, capnp::CallContext<mp::test::messages::FooInterface::CallbackUniqueParams, mp::test::messages::FooInterface::CallbackUniqueResults> >&, mp::ServerField<1, mp::Accessor<mp::foo_fields::Callback, 17>, mp::ServerField<1, mp::Accessor<mp::foo_fields::Arg, 1>, mp::ServerRet<mp::Accessor<mp::foo_fields::Result, 2>, mp::ServerCall> > > const&, mp::TypeList<std::unique_ptr<mp::test::FooCallback, std::default_delete<mp::test::FooCallback> >, int>&&)::{lambda()#1}::operator()()::{lambda()#3}>(mp::PassField<mp::Accessor<mp::foo_fields::Context, 17>, mp::ServerInvokeContext<mp::ProxyServer<mp::test::messages::FooInterface>, capnp::CallContext<mp::test::messages::FooInterface::CallbackUniqueParams, mp::test::messages::FooInterface::CallbackUniqueResults> >, mp::ServerField<1, mp::Accessor<mp::foo_fields::Callback, 17>, mp::ServerField<1, mp::Accessor<mp::foo_fields::Arg, 1>, mp::ServerRet<mp::Accessor<mp::foo_fields::Result, 2>, mp::ServerCall> > >, mp::TypeList<std::unique_ptr<mp::test::FooCallback, std::default_delete<mp::test::FooCallback> >, int> >(mp::Priority<1>, mp::TypeList<>, mp::ServerInvokeContext<mp::ProxyServer<mp::test::messages::FooInterface>, capnp::CallContext<mp::test::messages::FooInterface::CallbackUniqueParams, mp::test::messages::FooInterface::CallbackUniqueResults> >&, mp::ServerField<1, mp::Accessor<mp::foo_fields::Callback, 17>, mp::ServerField<1, mp::Accessor<mp::foo_fields::Arg, 1>, mp::ServerRet<mp::Accessor<mp::foo_fields::Result, 2>, mp::ServerCall> > > const&, mp::TypeList<std::unique_ptr<mp::test::FooCallback, std::default_delete<mp::test::FooCallback> >, int>&&)::{lambda()#1}::operator()()::{lambda()#3}&&)':
     7foo.capnp.proxy-server.c++:(.text._ZN2kj21runCatchingExceptionsIZZN2mp9PassFieldINS1_8AccessorINS1_10foo_fields7ContextELi17EEENS1_19ServerInvokeContextINS1_11ProxyServerINS1_4test8messages12FooInterfaceEEEN5capnp11CallContextINSB_20CallbackUniqueParamsENSB_21CallbackUniqueResultsEEEEENS1_11ServerFieldILi1ENS3_INS4_8CallbackELi17EEENSJ_ILi1ENS3_INS4_3ArgELi1EEENS1_9ServerRetINS3_INS4_6ResultELi2EEENS1_10ServerCallEEEEEEEJNS1_8TypeListIJSt10unique_ptrINS9_11FooCallbackESt14default_deleteISX_EEiEEEEEENSt9enable_ifIXsrSt7is_sameIDTclsrT_3getcldtdtfp1_12call_context9getParamsEEENS1_7Context6ReaderEE5valueENS_7PromiseINT0_11CallContextEEEE4typeENS1_8PriorityILi1EEENSV_IJEEERS1A_RKT1_DpOT2_ENUlvE_clEvEUlvE1_EENS_5MaybeINS_9ExceptionEEEOS14_[_ZN2kj21runCatchingExceptionsIZZN2mp9PassFieldINS1_8AccessorINS1_10foo_fields7ContextELi17EEENS1_19ServerInvokeContextINS1_11ProxyServerINS1_4test8messages12FooInterfaceEEEN5capnp11CallContextINSB_20CallbackUniqueParamsENSB_21CallbackUniqueResultsEEEEENS1_11ServerFieldILi1ENS3_INS4_8CallbackELi17EEENSJ_ILi1ENS3_INS4_3ArgELi1EEENS1_9ServerRetINS3_INS4_6ResultELi2EEENS1_10ServerCallEEEEEEEJNS1_8TypeListIJSt10unique_ptrINS9_11FooCallbackESt14default_deleteISX_EEiEEEEEENSt9enable_ifIXsrSt7is_sameIDTclsrT_3getcldtdtfp1_12call_context9getParamsEEENS1_7Context6ReaderEE5valueENS_7PromiseINT0_11CallContextEEEE4typeENS1_8PriorityILi1EEENSV_IJEEERS1A_RKT1_DpOT2_ENUlvE_clEvEUlvE1_EENS_5MaybeINS_9ExceptionEEEOS14_]+0x52): undefined reference to `kj::getCaughtExceptionAsKj()'
     8/usr/bin/ld: test/CMakeFiles/mptest.dir/mp/test/foo.capnp.proxy-server.c++.o: in function `kj::Maybe<kj::Exception> kj::runCatchingExceptions<mp::PassField<mp::Accessor<mp::foo_fields::Context, 17>, mp::ServerInvokeContext<mp::ProxyServer<mp::test::messages::FooInterface>, capnp::CallContext<mp::test::messages::FooInterface::CallbackSharedParams, mp::test::messages::FooInterface::CallbackSharedResults> >, mp::ServerField<1, mp::Accessor<mp::foo_fields::Callback, 17>, mp::ServerField<1, mp::Accessor<mp::foo_fields::Arg, 1>, mp::ServerRet<mp::Accessor<mp::foo_fields::Result, 2>, mp::ServerCall> > >, mp::TypeList<std::shared_ptr<mp::test::FooCallback>, int> >(mp::Priority<1>, mp::TypeList<>, mp::ServerInvokeContext<mp::ProxyServer<mp::test::messages::FooInterface>, capnp::CallContext<mp::test::messages::FooInterface::CallbackSharedParams, mp::test::messages::FooInterface::CallbackSharedResults> >&, mp::ServerField<1, mp::Accessor<mp::foo_fields::Callback, 17>, mp::ServerField<1, mp::Accessor<mp::foo_fields::Arg, 1>, mp::ServerRet<mp::Accessor<mp::foo_fields::Result, 2>, mp::ServerCall> > > const&, mp::TypeList<std::shared_ptr<mp::test::FooCallback>, int>&&)::{lambda()#1}::operator()()::{lambda()#3}>(mp::PassField<mp::Accessor<mp::foo_fields::Context, 17>, mp::ServerInvokeContext<mp::ProxyServer<mp::test::messages::FooInterface>, capnp::CallContext<mp::test::messages::FooInterface::CallbackSharedParams, mp::test::messages::FooInterface::CallbackSharedResults> >, mp::ServerField<1, mp::Accessor<mp::foo_fields::Callback, 17>, mp::ServerField<1, mp::Accessor<mp::foo_fields::Arg, 1>, mp::ServerRet<mp::Accessor<mp::foo_fields::Result, 2>, mp::ServerCall> > >, mp::TypeList<std::shared_ptr<mp::test::FooCallback>, int> >(mp::Priority<1>, mp::TypeList<>, mp::ServerInvokeContext<mp::ProxyServer<mp::test::messages::FooInterface>, capnp::CallContext<mp::test::messages::FooInterface::CallbackSharedParams, mp::test::messages::FooInterface::CallbackSharedResults> >&, mp::ServerField<1, mp::Accessor<mp::foo_fields::Callback, 17>, mp::ServerField<1, mp::Accessor<mp::foo_fields::Arg, 1>, mp::ServerRet<mp::Accessor<mp::foo_fields::Result, 2>, mp::ServerCall> > > const&, mp::TypeList<std::shared_ptr<mp::test::FooCallback>, int>&&)::{lambda()#1}::operator()()::{lambda()#3}&&)':
     9foo.capnp.proxy-server.c++:(.text._ZN2kj21runCatchingExceptionsIZZN2mp9PassFieldINS1_8AccessorINS1_10foo_fields7ContextELi17EEENS1_19ServerInvokeContextINS1_11ProxyServerINS1_4test8messages12FooInterfaceEEEN5capnp11CallContextINSB_20CallbackSharedParamsENSB_21CallbackSharedResultsEEEEENS1_11ServerFieldILi1ENS3_INS4_8CallbackELi17EEENSJ_ILi1ENS3_INS4_3ArgELi1EEENS1_9ServerRetINS3_INS4_6ResultELi2EEENS1_10ServerCallEEEEEEEJNS1_8TypeListIJSt10shared_ptrINS9_11FooCallbackEEiEEEEEENSt9enable_ifIXsrSt7is_sameIDTclsrT_3getcldtdtfp1_12call_context9getParamsEEENS1_7Context6ReaderEE5valueENS_7PromiseINT0_11CallContextEEEE4typeENS1_8PriorityILi1EEENSV_IJEEERS18_RKT1_DpOT2_ENUlvE_clEvEUlvE1_EENS_5MaybeINS_9ExceptionEEEOS12_[_ZN2kj21runCatchingExceptionsIZZN2mp9PassFieldINS1_8AccessorINS1_10foo_fields7ContextELi17EEENS1_19ServerInvokeContextINS1_11ProxyServerINS1_4test8messages12FooInterfaceEEEN5capnp11CallContextINSB_20CallbackSharedParamsENSB_21CallbackSharedResultsEEEEENS1_11ServerFieldILi1ENS3_INS4_8CallbackELi17EEENSJ_ILi1ENS3_INS4_3ArgELi1EEENS1_9ServerRetINS3_INS4_6ResultELi2EEENS1_10ServerCallEEEEEEEJNS1_8TypeListIJSt10shared_ptrINS9_11FooCallbackEEiEEEEEENSt9enable_ifIXsrSt7is_sameIDTclsrT_3getcldtdtfp1_12call_context9getParamsEEENS1_7Context6ReaderEE5valueENS_7PromiseINT0_11CallContextEEEE4typeENS1_8PriorityILi1EEENSV_IJEEERS18_RKT1_DpOT2_ENUlvE_clEvEUlvE1_EENS_5MaybeINS_9ExceptionEEEOS12_]+0x52): undefined reference to `kj::getCaughtExceptionAsKj()'
    10/usr/bin/ld: test/CMakeFiles/mptest.dir/mp/test/foo.capnp.proxy-server.c++.o: in function `kj::Maybe<kj::Exception> kj::runCatchingExceptions<mp::PassField<mp::Accessor<mp::foo_fields::Context, 17>, mp::ServerInvokeContext<mp::ProxyServer<mp::test::messages::FooInterface>, capnp::CallContext<mp::test::messages::FooInterface::SaveCallbackParams, mp::test::messages::FooInterface::SaveCallbackResults> >, mp::ServerField<1, mp::Accessor<mp::foo_fields::Callback, 17>, mp::ServerCall>, mp::TypeList<std::shared_ptr<mp::test::FooCallback> > >(mp::Priority<1>, mp::TypeList<>, mp::ServerInvokeContext<mp::ProxyServer<mp::test::messages::FooInterface>, capnp::CallContext<mp::test::messages::FooInterface::SaveCallbackParams, mp::test::messages::FooInterface::SaveCallbackResults> >&, mp::ServerField<1, mp::Accessor<mp::foo_fields::Callback, 17>, mp::ServerCall> const&, mp::TypeList<std::shared_ptr<mp::test::FooCallback> >&&)::{lambda()#1}::operator()()::{lambda()#3}>(mp::PassField<mp::Accessor<mp::foo_fields::Context, 17>, mp::ServerInvokeContext<mp::ProxyServer<mp::test::messages::FooInterface>, capnp::CallContext<mp::test::messages::FooInterface::SaveCallbackParams, mp::test::messages::FooInterface::SaveCallbackResults> >, mp::ServerField<1, mp::Accessor<mp::foo_fields::Callback, 17>, mp::ServerCall>, mp::TypeList<std::shared_ptr<mp::test::FooCallback> > >(mp::Priority<1>, mp::TypeList<>, mp::ServerInvokeContext<mp::ProxyServer<mp::test::messages::FooInterface>, capnp::CallContext<mp::test::messages::FooInterface::SaveCallbackParams, mp::test::messages::FooInterface::SaveCallbackResults> >&, mp::ServerField<1, mp::Accessor<mp::foo_fields::Callback, 17>, mp::ServerCall> const&, mp::TypeList<std::shared_ptr<mp::test::FooCallback> >&&)::{lambda()#1}::operator()()::{lambda()#3}&&)':
    11foo.capnp.proxy-server.c++:(.text._ZN2kj21runCatchingExceptionsIZZN2mp9PassFieldINS1_8AccessorINS1_10foo_fields7ContextELi17EEENS1_19ServerInvokeContextINS1_11ProxyServerINS1_4test8messages12FooInterfaceEEEN5capnp11CallContextINSB_18SaveCallbackParamsENSB_19SaveCallbackResultsEEEEENS1_11ServerFieldILi1ENS3_INS4_8CallbackELi17EEENS1_10ServerCallEEEJNS1_8TypeListIJSt10shared_ptrINS9_11FooCallbackEEEEEEEENSt9enable_ifIXsrSt7is_sameIDTclsrT_3getcldtdtfp1_12call_context9getParamsEEENS1_7Context6ReaderEE5valueENS_7PromiseINT0_11CallContextEEEE4typeENS1_8PriorityILi1EEENSO_IJEEERS11_RKT1_DpOT2_ENUlvE_clEvEUlvE1_EENS_5MaybeINS_9ExceptionEEEOSV_[_ZN2kj21runCatchingExceptionsIZZN2mp9PassFieldINS1_8AccessorINS1_10foo_fields7ContextELi17EEENS1_19ServerInvokeContextINS1_11ProxyServerINS1_4test8messages12FooInterfaceEEEN5capnp11CallContextINSB_18SaveCallbackParamsENSB_19SaveCallbackResultsEEEEENS1_11ServerFieldILi1ENS3_INS4_8CallbackELi17EEENS1_10ServerCallEEEJNS1_8TypeListIJSt10shared_ptrINS9_11FooCallbackEEEEEEEENSt9enable_ifIXsrSt7is_sameIDTclsrT_3getcldtdtfp1_12call_context9getParamsEEENS1_7Context6ReaderEE5valueENS_7PromiseINT0_11CallContextEEEE4typeENS1_8PriorityILi1EEENSO_IJEEERS11_RKT1_DpOT2_ENUlvE_clEvEUlvE1_EENS_5MaybeINS_9ExceptionEEEOSV_]+0x52): undefined reference to `kj::getCaughtExceptionAsKj()'
    12/usr/bin/ld: test/CMakeFiles/mptest.dir/mp/test/foo.capnp.proxy-server.c++.o: in function `kj::Maybe<kj::Exception> kj::runCatchingExceptions<mp::PassField<mp::Accessor<mp::foo_fields::Context, 17>, mp::ServerInvokeContext<mp::ProxyServer<mp::test::messages::FooInterface>, capnp::CallContext<mp::test::messages::FooInterface::CallbackSavedParams, mp::test::messages::FooInterface::CallbackSavedResults> >, mp::ServerField<1, mp::Accessor<mp::foo_fields::Arg, 1>, mp::ServerRet<mp::Accessor<mp::foo_fields::Result, 2>, mp::ServerCall> >, mp::TypeList<int> >(mp::Priority<1>, mp::TypeList<>, mp::ServerInvokeContext<mp::ProxyServer<mp::test::messages::FooInterface>, capnp::CallContext<mp::test::messages::FooInterface::CallbackSavedParams, mp::test::messages::FooInterface::CallbackSavedResults> >&, mp::ServerField<1, mp::Accessor<mp::foo_fields::Arg, 1>, mp::ServerRet<mp::Accessor<mp::foo_fields::Result, 2>, mp::ServerCall> > const&, mp::TypeList<int>&&)::{lambda()#1}::operator()()::{lambda()#3}>(mp::PassField<mp::Accessor<mp::foo_fields::Context, 17>, mp::ServerInvokeContext<mp::ProxyServer<mp::test::messages::FooInterface>, capnp::CallContext<mp::test::messages::FooInterface::CallbackSavedParams, mp::test::messages::FooInterface::CallbackSavedResults> >, mp::ServerField<1, mp::Accessor<mp::foo_fields::Arg, 1>, mp::ServerRet<mp::Accessor<mp::foo_fields::Result, 2>, mp::ServerCall> >, mp::TypeList<int> >(mp::Priority<1>, mp::TypeList<>, mp::ServerInvokeContext<mp::ProxyServer<mp::test::messages::FooInterface>, capnp::CallContext<mp::test::messages::FooInterface::CallbackSavedParams, mp::test::messages::FooInterface::CallbackSavedResults> >&, mp::ServerField<1, mp::Accessor<mp::foo_fields::Arg, 1>, mp::ServerRet<mp::Accessor<mp::foo_fields::Result, 2>, mp::ServerCall> > const&, mp::TypeList<int>&&)::{lambda()#1}::operator()()::{lambda()#3}&&)':
    13foo.capnp.proxy-server.c++:(.text._ZN2kj21runCatchingExceptionsIZZN2mp9PassFieldINS1_8AccessorINS1_10foo_fields7ContextELi17EEENS1_19ServerInvokeContextINS1_11ProxyServerINS1_4test8messages12FooInterfaceEEEN5capnp11CallContextINSB_19CallbackSavedParamsENSB_20CallbackSavedResultsEEEEENS1_11ServerFieldILi1ENS3_INS4_3ArgELi1EEENS1_9ServerRetINS3_INS4_6ResultELi2EEENS1_10ServerCallEEEEEJNS1_8TypeListIJiEEEEEENSt9enable_ifIXsrSt7is_sameIDTclsrT_3getcldtdtfp1_12call_context9getParamsEEENS1_7Context6ReaderEE5valueENS_7PromiseINT0_11CallContextEEEE4typeENS1_8PriorityILi1EEENSS_IJEEERS12_RKT1_DpOT2_ENUlvE_clEvEUlvE1_EENS_5MaybeINS_9ExceptionEEEOSW_[_ZN2kj21runCatchingExceptionsIZZN2mp9PassFieldINS1_8AccessorINS1_10foo_fields7ContextELi17EEENS1_19ServerInvokeContextINS1_11ProxyServerINS1_4test8messages12FooInterfaceEEEN5capnp11CallContextINSB_19CallbackSavedParamsENSB_20CallbackSavedResultsEEEEENS1_11ServerFieldILi1ENS3_INS4_3ArgELi1EEENS1_9ServerRetINS3_INS4_6ResultELi2EEENS1_10ServerCallEEEEEJNS1_8TypeListIJiEEEEEENSt9enable_ifIXsrSt7is_sameIDTclsrT_3getcldtdtfp1_12call_context9getParamsEEENS1_7Context6ReaderEE5valueENS_7PromiseINT0_11CallContextEEEE4typeENS1_8PriorityILi1EEENSS_IJEEERS12_RKT1_DpOT2_ENUlvE_clEvEUlvE1_EENS_5MaybeINS_9ExceptionEEEOSW_]+0x52): undefined reference to `kj::getCaughtExceptionAsKj()'
    14/usr/bin/ld: test/CMakeFiles/mptest.dir/mp/test/foo.capnp.proxy-server.c++.o:foo.capnp.proxy-server.c++:(.text._ZN2kj21runCatchingExceptionsIZZN2mp9PassFieldINS1_8AccessorINS1_10foo_fields7ContextELi17EEENS1_19ServerInvokeContextINS1_11ProxyServerINS1_4test8messages12FooInterfaceEEEN5capnp11CallContextINSB_22CallbackExtendedParamsENSB_23CallbackExtendedResultsEEEEENS1_11ServerFieldILi1ENS3_INS4_8CallbackELi17EEENSJ_ILi1ENS3_INS4_3ArgELi1EEENS1_9ServerRetINS3_INS4_6ResultELi2EEENS1_10ServerCallEEEEEEEJNS1_8TypeListIJRNS9_16ExtendedCallbackEiEEEEEENSt9enable_ifIXsrSt7is_sameIDTclsrT_3getcldtdtfp1_12call_context9getParamsEEENS1_7Context6ReaderEE5valueENS_7PromiseINT0_11CallContextEEEE4typeENS1_8PriorityILi1EEENSV_IJEEERS17_RKT1_DpOT2_ENUlvE_clEvEUlvE1_EENS_5MaybeINS_9ExceptionEEEOS11_[_ZN2kj21runCatchingExceptionsIZZN2mp9PassFieldINS1_8AccessorINS1_10foo_fields7ContextELi17EEENS1_19ServerInvokeContextINS1_11ProxyServerINS1_4test8messages12FooInterfaceEEEN5capnp11CallContextINSB_22CallbackExtendedParamsENSB_23CallbackExtendedResultsEEEEENS1_11ServerFieldILi1ENS3_INS4_8CallbackELi17EEENSJ_ILi1ENS3_INS4_3ArgELi1EEENS1_9ServerRetINS3_INS4_6ResultELi2EEENS1_10ServerCallEEEEEEEJNS1_8TypeListIJRNS9_16ExtendedCallbackEiEEEEEENSt9enable_ifIXsrSt7is_sameIDTclsrT_3getcldtdtfp1_12call_context9getParamsEEENS1_7Context6ReaderEE5valueENS_7PromiseINT0_11CallContextEEEE4typeENS1_8PriorityILi1EEENSV_IJEEERS17_RKT1_DpOT2_ENUlvE_clEvEUlvE1_EENS_5MaybeINS_9ExceptionEEEOS11_]+0x52): more undefined references to `kj::getCaughtExceptionAsKj()' follow
    15collect2: error: ld returned 1 exit status
    
  24. hebasto commented at 1:58 pm on December 22, 2025: member
    I built the updated devel/capnproto-1.2.0 from source and am still encountering the same errors.
  25. hebasto force-pushed on Dec 22, 2025
  26. hebasto force-pushed on Dec 22, 2025
  27. hebasto force-pushed on Dec 22, 2025
  28. hebasto force-pushed on Dec 22, 2025
  29. hebasto marked this as ready for review on Dec 22, 2025
  30. hebasto commented at 9:24 pm on December 22, 2025: member
    CI is green now. Undrafted.
  31. hebasto commented at 9:54 pm on December 22, 2025: member

    Assuming the netbsd job still fails, I guess there are different directions we may go with this issue:

    • If it’s possible to fix this with a change in libmultiprocess that would be ideal.

    • If that’s not possible, then maybe netbsd job could install from capnproto from source and we could report an issue to netbsd.

    • If installing capnproto from source doesn’t work, this will require a fix in capnproto.

    And regardless of these, we may want to add a try_compile test and error with suggested workarounds along the lines of #205

    Officially, GCC has supported the __has_feature extension since version 14. On NetBSD, however, GCC 10.5.0, which is used to build binary packages, already implements __has_feature, but __has_feature(cxx_exceptions) evaluates to false for some reason. This makes the following code problematic:https://github.com/capnproto/capnproto/blob/584db417ecf8377c7d8cd1099bf5fbccd57d68aa/c%2B%2B/src/kj/common.h#L154-L175

    As a result, KJ_NO_EXCEPTIONS is defined to 1 by default. This behaviour is overridden in this PR.

  32. hebasto referenced this in commit 25304975d9 on Dec 23, 2025
  33. hebasto force-pushed on Dec 30, 2025
  34. hebasto commented at 2:19 pm on December 30, 2025: member

    The implementation of the vmactions/*-vm actions has been significantly reworked recently, so this PR has been adjusted accordingly.

    A side note: all vmactions/*-vm actions are now unconditionally cached using the repository’s GHA quota.

  35. ci: Add NetBSD job d6f80caf35
  36. hebasto force-pushed on Dec 31, 2025
  37. hebasto commented at 0:22 am on December 31, 2025: member
    Reworked to test all supported NetBSD releases.

github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin-core/libmultiprocess. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2026-01-07 07:30 UTC

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