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