Saturday, March 14, 2026

gnuradio-digital build failure, newly appearing

I help with packaging gnuradio in pkgsrc. We have 3.10.12.0 which
seems to be the latest, even though it's from February 2025.

Sometime after December 2025, the gnuradio-digital package started
having build errors - except perhaps on aarch64.

The problem is a compiler objection to casting pointers:
cannot convert from pointer to base class 'gr::basic_block' to pointer to derived class 'gr::digital::ofdm_carrier_allocator_cvc' via virtual base 'gr::tagged_stream_block'

I have pybind11 3.0.2 installed. After downgrading to 3.0.1, it builds
ok. (I am not running it; this is just building.)

I wonder:
- is 3.10.12.0 really the latest release?
- might this be fixed already?
- is anyone else running into this?



=> Bootstrap dependency digest>=20211023: found digest-20220214
===> Checking for vulnerabilities in gnuradio-digital-3.10.12.0nb9
===> Building for gnuradio-digital-3.10.12.0nb9
[1/2] Building CXX object gr-digital/python/digital/bindings/CMakeFiles/digital_python.dir/ofdm_serializer_vcc_python.cc.o
FAILED: [code=1] gr-digital/python/digital/bindings/CMakeFiles/digital_python.dir/ofdm_serializer_vcc_python.cc.o
/tmp/work/ham/gnuradio-digital/work/.cwrapper/bin/c++ -DBOOST_ATOMIC_DYN_LINK -DBOOST_ATOMIC_NO_LIB -DBOOST_CHRONO_DYN_LINK -DBOOST_CHRONO_NO_LIB -DBOOST_CONTAINER_DYN_LINK -DBOOST_CONTAINER_NO_LIB -DBOOST_DATE_TIME_DYN_LINK -DBOOST_DATE_TIME_NO_LIB -DBOOST_PROGRAM_OPTIONS_DYN_LINK -DBOOST_PROGRAM_OPTIONS_NO_LIB -DBOOST_REGEX_DYN_LINK -DBOOST_REGEX_NO_LIB -DBOOST_THREAD_DYN_LINK -DBOOST_THREAD_NO_LIB -DBOOST_UNIT_TEST_FRAMEWORK_DYN_LINK -DBOOST_UNIT_TEST_FRAMEWORK_NO_LIB -DHAVE_BUILTIN_PARITYL -Ddigital_python_EXPORTS -I/tmp/work/ham/gnuradio-digital/work/gnuradio-3.10.12.0/cmake-pkgsrc-build/gr-digital/python/digital/bindings -I/tmp/work/ham/gnuradio-digital/work/gnuradio-3.10.12.0/gr-digital/python/digital/bindings/../../../lib -I/tmp/work/ham/gnuradio-digital/work/gnuradio-3.10.12.0/gr-digital/python/digital/bindings/../../../include -I/tmp/work/ham/gnuradio-digital/work/gnuradio-3.10.12.0/gr-digital/lib/../include -isystem /usr/pkg/lib/python3.13/site-packages/pybind11/include -isystem /usr/pkg/include/python3.13 -isystem /tmp/work/ham/gnuradio-digital/work/.buildlink/include -isystem /tmp/work/ham/gnuradio-digital/work/.buildlink/include/python3.13 -isystem /usr/pkg/lib/python3.13/site-packages/numpy/_core/include -O2 -pthread -I/usr/pkg/include -I/usr/include -I/usr/pkg/include/portaudio2 -I/usr/pkg/include/cppunit -DSPDLOG_FMT_EXTERNAL -I/usr/pkg/include/python3.13 -I/usr/X11R7/include -I/usr/pkg/include/glib-2.0 -I/usr/pkg/include/gio-unix-2.0 -I/usr/pkg/lib/glib-2.0/include -Dz_off_t=long -I/usr/pkg/include/freetype2 -I/usr/pkg/include/harfbuzz -I/usr/X11R7/include/libdrm -pthread -fvisibility=hidden -Wsign-compare -Wall -Wno-uninitialized -Wignored-qualifiers -Wcast-qual -fcx-limited-range -Wno-unused-command-line-argument -DNDEBUG -std=c++17 -fPIC -fvisibility=hidden -Wno-unused-variable -flto=auto -fno-fat-lto-objects -MD -MT gr-digital/python/digital/bindings/CMakeFiles/digital_python.dir/ofdm_serializer_vcc_python.cc.o -MF gr-digital/python/digital/bindings/CMakeFiles/digital_python.dir/ofdm_serializer_vcc_python.cc.o.d -o gr-digital/python/digital/bindings/CMakeFiles/digital_python.dir/ofdm_serializer_vcc_python.cc.o -c /tmp/work/ham/gnuradio-digital/work/gnuradio-3.10.12.0/gr-digital/python/digital/bindings/ofdm_serializer_vcc_python.cc
In file included from /usr/include/g++/memory:84,
from /usr/pkg/lib/python3.13/site-packages/pybind11/include/pybind11/detail/common.h:225,
from /usr/pkg/lib/python3.13/site-packages/pybind11/include/pybind11/attr.h:13,
from /usr/pkg/lib/python3.13/site-packages/pybind11/include/pybind11/detail/class.h:12,
from /usr/pkg/lib/python3.13/site-packages/pybind11/include/pybind11/pybind11.h:12,
from /usr/pkg/lib/python3.13/site-packages/pybind11/include/pybind11/complex.h:12,
from /tmp/work/ham/gnuradio-digital/work/gnuradio-3.10.12.0/gr-digital/python/digital/bindings/ofdm_serializer_vcc_python.cc:20:
/usr/include/g++/bits/shared_ptr.h: In instantiation of 'std::shared_ptr<_Tp> std::static_pointer_cast(const std::shared_ptr<_Tp>&) [with _Tp = gr::digital::ofdm_carrier_allocator_cvc; _Up = gr::basic_block]':
/usr/pkg/lib/python3.13/site-packages/pybind11/include/pybind11/detail/holder_caster_foreign_helpers.h:40:57: required from 'static decltype ((value->shared_from_this(), bool())) pybind11::detail::holder_caster_foreign_helpers::set_via_shared_from_this(type*, std::shared_ptr<_Tp>*) [with type = gr::digital::ofdm_carrier_allocator_cvc; decltype ((value->shared_from_this(), bool())) = bool]'
/usr/pkg/lib/python3.13/site-packages/pybind11/include/pybind11/detail/holder_caster_foreign_helpers.h:60:37: required from 'static bool pybind11::detail::holder_caster_foreign_helpers::set_foreign_holder(pybind11::handle, type*, std::shared_ptr<_Tp>*) [with type = gr::digital::ofdm_carrier_allocator_cvc]'
/usr/pkg/lib/python3.13/site-packages/pybind11/include/pybind11/cast.h:1051:65: required from 'bool pybind11::detail::copyable_holder_caster<type, std::shared_ptr<_Tp>, typename std::enable_if<pybind11::detail::copyable_holder_caster_shared_ptr_with_smart_holder_support_enabled<type>::value, void>::type>::set_foreign_holder(pybind11::handle) [with type = gr::digital::ofdm_carrier_allocator_cvc; typename std::enable_if<pybind11::detail::copyable_holder_caster_shared_ptr_with_smart_holder_support_enabled<type>::value, void>::type = void]'
/usr/pkg/lib/python3.13/site-packages/pybind11/include/pybind11/detail/type_caster_base.h:1207:82: required from 'bool pybind11::detail::type_caster_generic::load_impl(pybind11::handle, bool) [with ThisT = pybind11::detail::copyable_holder_caster<gr::digital::ofdm_carrier_allocator_cvc, std::shared_ptr<gr::digital::ofdm_carrier_allocator_cvc>, void>]'
/usr/pkg/lib/python3.13/site-packages/pybind11/include/pybind11/cast.h:980:90: required from 'bool pybind11::detail::copyable_holder_caster<type, std::shared_ptr<_Tp>, typename std::enable_if<pybind11::detail::copyable_holder_caster_shared_ptr_with_smart_holder_support_enabled<type>::value, void>::type>::load(pybind11::handle, bool) [with type = gr::digital::ofdm_carrier_allocator_cvc; typename std::enable_if<pybind11::detail::copyable_holder_caster_shared_ptr_with_smart_holder_support_enabled<type>::value, void>::type = void]'
/usr/pkg/lib/python3.13/site-packages/pybind11/include/pybind11/cast.h:2171:51: [ skipping 2 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
/usr/pkg/lib/python3.13/site-packages/pybind11/include/pybind11/pybind11.h:454:42: required from 'void pybind11::cpp_function::initialize(Func&&, Return (*)(Args ...), const Extra& ...) [with Func = pybind11::detail::initimpl::factory<Func, pybind11::detail::void_type (*)(), Return(Args ...)>::execute<pybind11::class_<gr::digital::ofdm_serializer_vcc, gr::tagged_stream_block, std::shared_ptr<gr::digital::ofdm_serializer_vcc> >, {pybind11::arg, pybind11::arg_v, pybind11::arg_v, pybind11::arg_v, pybind11::arg_v, const char*}>::<lambda(pybind11::detail::value_and_holder&, const std::shared_ptr<gr::digital::ofdm_carrier_allocator_cvc>&, const std::__cxx11::basic_string<char>&, int, const std::__cxx11::basic_string<char>&, bool)>; Return = void; Args = {pybind11::detail::value_and_holder&, const std::shared_ptr<gr::digital::ofdm_carrier_allocator_cvc>&, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, int, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, bool}; Extra = {pybind11::name, pybind11::is_method, pybind11::sibling, pybind11::detail::is_new_style_constructor, pybind11::arg, pybind11::arg_v, pybind11::arg_v, pybind11::arg_v, pybind11::arg_v, const char*}]'
/usr/pkg/lib/python3.13/site-packages/pybind11/include/pybind11/pybind11.h:324:19: required from 'pybind11::cpp_function::cpp_function(Func&&, const Extra& ...) [with Func = pybind11::detail::initimpl::factory<Func, pybind11::detail::void_type (*)(), Return(Args ...)>::execute<pybind11::class_<gr::digital::ofdm_serializer_vcc, gr::tagged_stream_block, std::shared_ptr<gr::digital::ofdm_serializer_vcc> >, {pybind11::arg, pybind11::arg_v, pybind11::arg_v, pybind11::arg_v, pybind11::arg_v, const char*}>::<lambda(pybind11::detail::value_and_holder&, const std::shared_ptr<gr::digital::ofdm_carrier_allocator_cvc>&, const std::__cxx11::basic_string<char>&, int, const std::__cxx11::basic_string<char>&, bool)>; Extra = {pybind11::name, pybind11::is_method, pybind11::sibling, pybind11::detail::is_new_style_constructor, pybind11::arg, pybind11::arg_v, pybind11::arg_v, pybind11::arg_v, pybind11::arg_v, const char*}; <template-parameter-1-3> = void]'
/usr/pkg/lib/python3.13/site-packages/pybind11/include/pybind11/pybind11.h:2249:22: required from 'pybind11::class_<type_, options>& pybind11::class_<type_, options>::def(const char*, Func&&, const Extra& ...) [with Func = pybind11::detail::initimpl::factory<Func, pybind11::detail::void_type (*)(), Return(Args ...)>::execute<pybind11::class_<gr::digital::ofdm_serializer_vcc, gr::tagged_stream_block, std::shared_ptr<gr::digital::ofdm_serializer_vcc> >, {pybind11::arg, pybind11::arg_v, pybind11::arg_v, pybind11::arg_v, pybind11::arg_v, const char*}>::<lambda(pybind11::detail::value_and_holder&, const std::shared_ptr<gr::digital::ofdm_carrier_allocator_cvc>&, const std::__cxx11::basic_string<char>&, int, const std::__cxx11::basic_string<char>&, bool)>; Extra = {pybind11::detail::is_new_style_constructor, pybind11::arg, pybind11::arg_v, pybind11::arg_v, pybind11::arg_v, pybind11::arg_v, const char*}; type_ = gr::digital::ofdm_serializer_vcc; options = {gr::tagged_stream_block, std::shared_ptr<gr::digital::ofdm_serializer_vcc>}]'
/usr/pkg/lib/python3.13/site-packages/pybind11/include/pybind11/detail/init.h:388:15: required from 'void pybind11::detail::initimpl::factory<Func, pybind11::detail::void_type (*)(), Return(Args ...)>::execute(Class&, const Extra& ...) && [with Class = pybind11::class_<gr::digital::ofdm_serializer_vcc, gr::tagged_stream_block, std::shared_ptr<gr::digital::ofdm_serializer_vcc> >; Extra = {pybind11::arg, pybind11::arg_v, pybind11::arg_v, pybind11::arg_v, pybind11::arg_v, const char*}; Func = std::shared_ptr<gr::digital::ofdm_serializer_vcc> (*)(const std::shared_ptr<gr::digital::ofdm_carrier_allocator_cvc>&, const std::__cxx11::basic_string<char>&, int, const std::__cxx11::basic_string<char>&, bool); Return = std::shared_ptr<gr::digital::ofdm_serializer_vcc>; Args = {const std::shared_ptr<gr::digital::ofdm_carrier_allocator_cvc>&, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, int, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, bool}]'
/usr/pkg/lib/python3.13/site-packages/pybind11/include/pybind11/pybind11.h:2300:32: required from 'pybind11::class_<type_, options>& pybind11::class_<type_, options>::def(pybind11::detail::initimpl::factory<Args ...>&&, const Extra& ...) [with Args = {std::shared_ptr<gr::digital::ofdm_serializer_vcc> (*)(const std::shared_ptr<gr::digital::ofdm_carrier_allocator_cvc>&, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, int, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, bool), pybind11::detail::void_type (*)(), std::shared_ptr<gr::digital::ofdm_serializer_vcc>(const std::shared_ptr<gr::digital::ofdm_carrier_allocator_cvc>&, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, int, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, bool), pybind11::detail::void_type()}; Extra = {pybind11::arg, pybind11::arg_v, pybind11::arg_v, pybind11::arg_v, pybind11::arg_v, const char*}; type_ = gr::digital::ofdm_serializer_vcc; options = {gr::tagged_stream_block, std::shared_ptr<gr::digital::ofdm_serializer_vcc>}]'
/tmp/work/ham/gnuradio-digital/work/gnuradio-3.10.12.0/gr-digital/python/digital/bindings/ofdm_serializer_vcc_python.cc:69:45: required from here
/usr/include/g++/bits/shared_ptr.h:584:23: error: cannot convert from pointer to base class 'gr::basic_block' to pointer to derived class 'gr::digital::ofdm_carrier_allocator_cvc' via virtual base 'gr::tagged_stream_block'
584 | return _Sp(__r, static_cast<typename _Sp::element_type*>(__r.get()));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1plus: note: unrecognized command-line option '-Wno-unused-command-line-argument' may have been intended to silence earlier diagnostics
ninja: build stopped: subcommand failed.
*** Error code 1

Stop.
make[1]: stopped in /n0/gdt/pkgsrc-current/pkgsrc/ham/gnuradio-digital
*** Error code 1

Stop.
make: stopped in /usr/pkgsrc/ham/gnuradio-digital

No comments:

Post a Comment