The master branch @ 1b8d4a6f1e54b92708bd2ad627ec6d440a1daf3d fails to build on NetBSD.
See: https://github.com/hebasto/libmultiprocess/actions/runs/17175941246/job/48731811650
The master branch @ 1b8d4a6f1e54b92708bd2ad627ec6d440a1daf3d fails to build on NetBSD.
See: https://github.com/hebasto/libmultiprocess/actions/runs/17175941246/job/48731811650
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.
See the guideline for information on the review process. A summary of reviews will appear here.
13+ shell: netbsd {0}
14+ steps:
15+ - uses: actions/checkout@v5
16+
17+ - name: Start NetBSD VM
18+ uses: vmactions/netbsd-vm@v1
Could you please enable this action in the repo settings?
Could you please enable this action in the repo settings?
Thanks! Should be enabled now
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@*.
undefined reference to 'kj::getCaughtExceptionAsKj()' linker errors
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/
22+ sync: 'rsync'
23+ copyback: false
24+
25+ - name: Run CI script
26+ run: |
27+ cd ${{ github.workspace }}
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
Assuming the netbsd job still fails, I guess there are different directions we may go with this issue:
And regardless of these, we may want to add a try_compile test and error with suggested workarounds along the lines of #205
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.
Could rebase for fresh CI logs?
Sure thing! Done.
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
devel/capnproto-1.2.0 from source and am still encountering the same errors.
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.
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.