Monday, March 16, 2026

Re: Problem with 3.10.12.0

Hi Elmore,

looks like you use Python to 3.13, but for some reason your pybind11 is linked against
Python 3.11. Well, that might have different reasons, but it looks like an issue of
inconsistent updates. It's not a GNU Radio bug!

Best regards,
Marcus

On 2026-03-14 10:13 PM, Elmore Family wrote:
> I recently upgraded to the subject version and am now missing some blocks.
> I tried to rebuild one of my blocks and the following was the result:
> cmake ../
> CMake Deprecation Warning at CMakeLists.txt:12 (cmake_minimum_required):
>   Compatibility with CMake < 3.10 will be removed from a future version of
>   CMake.
>   Update the VERSION argument <min> value.  Or, use the <min>...<max> syntax
>   to tell CMake that the project requires at least <min> but has been updated
>   to work with policies introduced by <max> or earlier.
> -- The CXX compiler identification is GNU 14.2.0
> -- The C compiler identification is GNU 14.2.0
> -- Detecting CXX compiler ABI info
> -- Detecting CXX compiler ABI info - done
> -- Check for working CXX compiler: /usr/bin/c++ - skipped
> -- Detecting CXX compile features
> -- Detecting CXX compile features - done
> -- Detecting C compiler ABI info
> -- Detecting C compiler ABI info - done
> -- Check for working C compiler: /usr/bin/cc - skipped
> -- Detecting C compile features
> -- Detecting C compile features - done
> -- Build type not specified: defaulting to release.
> -- Using GMP.
> CMake Warning (dev) at /usr/share/cmake-3.31/Modules/CMakeFindDependencyMacro.cmake:76
> (find_package):
>   Policy CMP0167 is not set: The FindBoost module is removed. Run "cmake
>   --help-policy CMP0167" for policy details.  Use the cmake_policy command to
>   set the policy and suppress this warning.
> Call Stack (most recent call first):
>   /usr/lib/aarch64-linux-gnu/cmake/gnuradio/GnuradioConfig.cmake:28 (find_dependency)
>   CMakeLists.txt:77 (find_package)
> This warning is for project developers.  Use -Wno-dev to suppress it.
> -- Found Boost: /usr/lib/aarch64-linux-gnu/cmake/Boost-1.83.0/BoostConfig.cmake (found
> suitable version "1.83.0", minimum required is "1.83.0") found components: date_time
> program_options system regex thread unit_test_framework
> -- User set python executable /usr/bin/python3
> CMake Warning (dev) at /usr/lib/aarch64-linux-gnu/cmake/gnuradio/GrPython.cmake:21
> (find_package):
>   Policy CMP0148 is not set: The FindPythonInterp and FindPythonLibs modules
>   are removed.  Run "cmake --help-policy CMP0148" for policy details.  Use
>   the cmake_policy command to set the policy and suppress this warning.
> Call Stack (most recent call first):
>   /usr/lib/aarch64-linux-gnu/cmake/gnuradio/GnuradioConfig.cmake:37 (include)
>   CMakeLists.txt:77 (find_package)
> This warning is for project developers.  Use -Wno-dev to suppress it.
> -- Found PythonInterp: /usr/bin/python3 (found version "3.13.5")
> CMake Warning (dev) at /usr/lib/aarch64-linux-gnu/cmake/gnuradio/GrPython.cmake:27
> (find_package):
>   Policy CMP0148 is not set: The FindPythonInterp and FindPythonLibs modules
>   are removed.  Run "cmake --help-policy CMP0148" for policy details.  Use
>   the cmake_policy command to set the policy and suppress this warning.
> Call Stack (most recent call first):
>   /usr/lib/aarch64-linux-gnu/cmake/gnuradio/GnuradioConfig.cmake:37 (include)
>   CMakeLists.txt:77 (find_package)
> This warning is for project developers.  Use -Wno-dev to suppress it.
> -- Found PythonLibs: /usr/lib/aarch64-linux-gnu/libpython3.11.so (Required is exact
> version "3.13")
> -- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)
> -- Found pybind11: /usr/include (found version "2.13.6")
> -- Using install prefix: /usr/local
> -- Building for version: v1.0-compat-xxx-xunknown / 1.0.0git
> -- No C++ unit tests... skipping
> -- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)
> -- PYTHON and GRC components are enabled
> -- Python checking for pygccxml - found
> -- Configuring done (10.5s)
> CMake Error in python/bindings/CMakeLists.txt:
>   Imported target "pybind11::module" includes non-existent path
>     "/usr/include/python3.11"
>   in its INTERFACE_INCLUDE_DIRECTORIES.  Possible reasons include:
>   * The path was deleted, renamed, or moved to another location.
>   * An install or uninstall procedure did not complete successfully.
>   * The installation package was faulty and references files it does not
>   provide.
> -- Generating done (0.2s)
> CMake Generate step failed.  Build files cannot be regenerated correctly.
> What is happening here?
> Jim
>
> <http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-
> email&utm_content=emailclient> Virus-free.www.avg.com <http://www.avg.com/email-signature?
> utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient>
>
> <#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>

Sunday, March 15, 2026

Multi Receiver sync blocks for GNU Radio: GSoC idea (2026)

Hi all,

I've been exploring a possible GSoC 2026 project idea around implementing a reusable multi-receiver synchronization toolkit as a GNU Radio OOT module, and I'd appreciate some feedback on whether this would be useful or if similar functionality already exists.

Many SDR applications (e.g. interferometry, beamforming, passive radar, distributed sensing) require phase-coherent sample streams from multiple receivers, but in practice this often ends up being solved through hardware pipelines or custom scripts.

The idea would be to implement two reusable GNU Radio blocks:

First, an Estimator block which estimates relative delay, frequency offset, and phase offset between two sample streams and a Corrector block which applies fractional delay and phase/frequency correction to align the streams

To keep the scope manageable, the initial target would be two channel synchronization, with the design structured so that it could later extend to n channel systems.

I've been discussing a preliminary version of this idea on Matrix and received helpful pointers to reduce scope for feasibility. My intention here is not to replicate a hardware specific system, but to repurpo the underlying synchronization algorithms as reusable GNU Radio DSP blocks that could work with different SDR hardware.

I also put together a short technical brief describing the architecture, math, and a small prototype flowgraph I built while experimenting with the concept: 

I'd really appreciate any feedback on whether something like this would fill a useful gap in GNU Radio, or if there are existing blocks or projects I should look at more closely.


Thanks and Regards,

Dron Pande

Saturday, March 14, 2026

Problem with 3.10.12.0

I recently upgraded to the subject version and am now missing some blocks.
 
I tried to rebuild one of my blocks and the following was the result:
 
cmake ../
CMake Deprecation Warning at CMakeLists.txt:12 (cmake_minimum_required):
  Compatibility with CMake < 3.10 will be removed from a future version of
  CMake.
 
  Update the VERSION argument <min> value.  Or, use the <min>...<max> syntax
  to tell CMake that the project requires at least <min> but has been updated
  to work with policies introduced by <max> or earlier.
 
 
-- The CXX compiler identification is GNU 14.2.0
-- The C compiler identification is GNU 14.2.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Build type not specified: defaulting to release.
-- Using GMP.
CMake Warning (dev) at /usr/share/cmake-3.31/Modules/CMakeFindDependencyMacro.cmake:76 (find_package):
  Policy CMP0167 is not set: The FindBoost module is removed.  Run "cmake
  --help-policy CMP0167" for policy details.  Use the cmake_policy command to
  set the policy and suppress this warning.
 
Call Stack (most recent call first):
  /usr/lib/aarch64-linux-gnu/cmake/gnuradio/GnuradioConfig.cmake:28 (find_dependency)
  CMakeLists.txt:77 (find_package)
This warning is for project developers.  Use -Wno-dev to suppress it.
 
-- Found Boost: /usr/lib/aarch64-linux-gnu/cmake/Boost-1.83.0/BoostConfig.cmake (found suitable version "1.83.0", minimum required is "1.83.0") found components: date_time program_options system regex thread unit_test_framework
-- User set python executable /usr/bin/python3
CMake Warning (dev) at /usr/lib/aarch64-linux-gnu/cmake/gnuradio/GrPython.cmake:21 (find_package):
  Policy CMP0148 is not set: The FindPythonInterp and FindPythonLibs modules
  are removed.  Run "cmake --help-policy CMP0148" for policy details.  Use
  the cmake_policy command to set the policy and suppress this warning.
 
Call Stack (most recent call first):
  /usr/lib/aarch64-linux-gnu/cmake/gnuradio/GnuradioConfig.cmake:37 (include)
  CMakeLists.txt:77 (find_package)
This warning is for project developers.  Use -Wno-dev to suppress it.
 
-- Found PythonInterp: /usr/bin/python3 (found version "3.13.5")
CMake Warning (dev) at /usr/lib/aarch64-linux-gnu/cmake/gnuradio/GrPython.cmake:27 (find_package):
  Policy CMP0148 is not set: The FindPythonInterp and FindPythonLibs modules
  are removed.  Run "cmake --help-policy CMP0148" for policy details.  Use
  the cmake_policy command to set the policy and suppress this warning.
 
Call Stack (most recent call first):
  /usr/lib/aarch64-linux-gnu/cmake/gnuradio/GnuradioConfig.cmake:37 (include)
  CMakeLists.txt:77 (find_package)
This warning is for project developers.  Use -Wno-dev to suppress it.
 
-- Found PythonLibs: /usr/lib/aarch64-linux-gnu/libpython3.11.so (Required is exact version "3.13")
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)
-- Found pybind11: /usr/include (found version "2.13.6")
-- Using install prefix: /usr/local
-- Building for version: v1.0-compat-xxx-xunknown / 1.0.0git
-- No C++ unit tests... skipping
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)
-- PYTHON and GRC components are enabled
-- Python checking for pygccxml - found
-- Configuring done (10.5s)
CMake Error in python/bindings/CMakeLists.txt:
  Imported target "pybind11::module" includes non-existent path
 
    "/usr/include/python3.11"
 
  in its INTERFACE_INCLUDE_DIRECTORIES.  Possible reasons include:
 
  * The path was deleted, renamed, or moved to another location.
 
  * An install or uninstall procedure did not complete successfully.
 
  * The installation package was faulty and references files it does not
  provide.
 
 
 
-- Generating done (0.2s)
CMake Generate step failed.  Build files cannot be regenerated correctly.
 
What is happening here?
 
Jim

Virus-free.www.avg.com

Re: gnuradio-digital build failure, newly appearing

Hi,
yep, latest version, I'm working on that.
But: already fixed in git, see the thread "Pybind11 ver 3.0.2 errors" on the mailing list.

Cheers,
Marcus

On 2026-03-14 3:07 PM, Greg Troxel wrote:
> 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
>
>
>

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

Thursday, March 12, 2026

GSoC 2026 Intro: SDR Developer interested in the 5G Cell Scanner Project

Hi everyone,

I'm Mujtaba Ahmed, a final-year Electrical Engineering student specializing in Embedded Systems. I am planning to apply for GSoC 2026 and am highly interested in contributing to the 5G Cell Scanner project.

I'm actively working in this exact domain right now. I am currently building a distributed system to detect and localize radio transmitters using TDOA algorithms, working directly with HackRF One and ADALM-PLUTO SDRs. Because I spend my time in Ubuntu bridging physical radio hardware with software-level signal processing, I am very comfortable with the exact challenges of passively detecting and capturing RF signals, and I want to bring that hands-on experience to GNU Radio.

I am setting up my development environment this weekend to compile GNU Radio from source. Are there any specific "good first issues," existing flowgraphs, or 5G protocol parsers the mentors recommend I tackle to demonstrate my skills before the formal application period opens?

Looking forward to learning from you all!

Wednesday, March 11, 2026

Re: Releasing the next 3.10.x soon – complain, please

I would like it and think I would benefit from it.

John

On Wed, Mar 11, 2026, 6:44 PM Marcus Müller <mmueller@gnuradio.org> wrote:

Hi Wael,

because I'd like to be careful about changing buffer infra on the released branch, I can do that, but would only do it if someone definitely benefits from it more than it just being included in a GNU Radio 3.11.0.0 some ~1 month in the future.

Would backporting this specifically help you / cascade? Then, it's totally doable! 

Best,
Marcus

On 2026-03-10 11:49 PM, Wael Farah wrote:
Hey Marcus,

That's awesome!

Might there be a chance to include the subclassing buffer_double_mapped and the gr::buffer::on_transfer_type to the release?
They're not technically API-breaking, but I understand and respect if you have other criteria you usually follow.

Best,
Wael

On Mar 10, 2026, at 2:57 AM, Marcus Müller <mmueller@gnuradio.org> wrote:

Dear Community,

this weekend, I finally have gotten around to backport all (but one) of the changes made to `main` to `maint-3.10`, as far as I've been keeping track of them [1], or decide that they can't and/or shan't be backported.

I might have missed something! If there's some feature that doesn't need an API-breaking change to be backported that I'm missing which you'd really like to see in 3.10.13.0, let me know. I'm aiming for a release candidate coming weekend.

Best regards,
Marcus


[1] https://github.com/orgs/gnuradio/projects/12/views/1