package/gnuradio: bump version to 3.10.4.0

- remove all no more required patches
- backport 2 patches to fix failures induces by missing headers
- add dependency to SPDLOG
- add pybind dependency where python is set

Note:
- Since gnuradio 3.10 swig was replaced by pybind. Now python libraries,
  bindings and python wrappers are produces using pybind: this
  why python-pybind is a buildtime dependency. As mentionned in [1], this one
  is a stagging only package: headers must be into staging directory, so it
  can't be host and at the same time since this package provides only headers
  and .cmake files nothing has to be installed into the target directory. A
  select is required because it's not an host package and
  GNURADIO_DEPENDENCIES is updated with python-pybind to have pybind present
  before gnuradio's build.
- host-python-numpy is now required since some cpp bindings uses numpy's
  functions directly. python-numpy (target package) is left required because
  python blocks and wrappers needs this library at runtime.

[1] http://lists.busybox.net/pipermail/buildroot/2022-October/653030.html

Signed-off-by: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
This commit is contained in:
Gwenhael Goavec-Merou 2022-10-19 15:43:28 +02:00 committed by Thomas Petazzoni
parent 3d8b6e9e25
commit e37c110bea
10 changed files with 84 additions and 1338 deletions

View File

@ -0,0 +1,42 @@
From 45fe4ac55ad88b6793d225e676205c30388ec138 Mon Sep 17 00:00:00 2001
From: Ryan Volz <ryan.volz@gmail.com>
Date: Fri, 16 Sep 2022 21:05:51 -0400
Subject: [PATCH 1/2] blocks: Including missing <vector> in blockinterleaver.
Signed-off-by: Ryan Volz <ryan.volz@gmail.com>
[Retrieved (and backported) from:
https://github.com/gnuradio/gnuradio/commit/463c3477549b26b32d9b73eef30044e97c4eee64]
Signed-off-by: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>
---
gr-blocks/include/gnuradio/blocks/blockinterleaving.h | 2 +-
gr-blocks/lib/blockinterleaving.cc | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/gr-blocks/include/gnuradio/blocks/blockinterleaving.h b/gr-blocks/include/gnuradio/blocks/blockinterleaving.h
index 9d4e0f249..df831fe5a 100644
--- a/gr-blocks/include/gnuradio/blocks/blockinterleaving.h
+++ b/gr-blocks/include/gnuradio/blocks/blockinterleaving.h
@@ -12,7 +12,7 @@
#define INCLUDED_GR_BLOCKS_BLOCKINTERLEAVING_H
#include <gnuradio/blocks/api.h>
-
+#include <vector>
namespace gr {
namespace blocks {
diff --git a/gr-blocks/lib/blockinterleaving.cc b/gr-blocks/lib/blockinterleaving.cc
index fc5873e11..768ad9ea7 100644
--- a/gr-blocks/lib/blockinterleaving.cc
+++ b/gr-blocks/lib/blockinterleaving.cc
@@ -12,6 +12,7 @@
#include <spdlog/fmt/fmt.h>
#include <algorithm>
#include <numeric>
+#include <vector>
namespace gr {
namespace blocks {
--
2.35.1

View File

@ -1,39 +0,0 @@
From f643bc12100c67288adda3699a9e61d6a66fb529 Mon Sep 17 00:00:00 2001
From: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>
Date: Fri, 7 Feb 2020 16:49:30 +0100
Subject: [PATCH] gr-digital:glfsr.h: drop boost/cstdint.hpp and use cstdint
gr-digital/glfsr.h include boost/cstdint.hpp to have uintxx_t.
These types are in boost namespace but nor using namespace xxx, nor boost:: are used.
The result is :
In file included from /home/buildroot/autobuild/instance-0/output-1/build/gnuradio-3.8.0.0/gr-digital/lib/glfsr.cc:23:
/home/buildroot/autobuild/instance-0/output-1/build/gnuradio-3.8.0.0/gr-digital/lib/../include/gnuradio/digital/glfsr.h:42:5: error: 'uint32_t' does not name a type; did you mean 'u_int32_t'?
uint32_t d_shift_register;
^~~~~~~~
u_int32_t
Since Gnuradio policy is Less boost == better and C++11 is used, use cstdint
instead of boost/cstdint.hpp.
[backported from 475e4a156b516c089175afb998acdc80b740b437]
Signed-off-by: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>
---
gr-digital/include/gnuradio/digital/glfsr.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gr-digital/include/gnuradio/digital/glfsr.h b/gr-digital/include/gnuradio/digital/glfsr.h
index 0b5141f1f..1003bcd01 100644
--- a/gr-digital/include/gnuradio/digital/glfsr.h
+++ b/gr-digital/include/gnuradio/digital/glfsr.h
@@ -24,7 +24,7 @@
#define INCLUDED_DIGITAL_GLFSR_H
#include <gnuradio/digital/api.h>
-#include <boost/cstdint.hpp>
+#include <cstdint>
namespace gr {
namespace digital {
--
2.24.1

View File

@ -0,0 +1,33 @@
From 901c2ad1ac88908a2e6db5615d5af39a218d826d Mon Sep 17 00:00:00 2001
From: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>
Date: Fri, 23 Sep 2022 08:41:26 +0200
Subject: [PATCH 2/2] blocks/blockinterleaving.h: add missing cstddef header
(required for size_t)
Fix build failure like:
gnuradio/gr-blocks/lib/../include/gnuradio/blocks/blockinterleaving.h:25:36: error: size_t was not declared in this scope
This failure is due to the miss of cstddef include
Signed-off-by: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>
[Upstream status: https://github.com/gnuradio/gnuradio/pull/6188]
---
gr-blocks/include/gnuradio/blocks/blockinterleaving.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/gr-blocks/include/gnuradio/blocks/blockinterleaving.h b/gr-blocks/include/gnuradio/blocks/blockinterleaving.h
index df831fe5a..33c59e35b 100644
--- a/gr-blocks/include/gnuradio/blocks/blockinterleaving.h
+++ b/gr-blocks/include/gnuradio/blocks/blockinterleaving.h
@@ -13,6 +13,7 @@
#include <gnuradio/blocks/api.h>
#include <vector>
+#include <cstddef>
namespace gr {
namespace blocks {
--
2.35.1

View File

@ -1,57 +0,0 @@
From 84dea8284c521f08508bb2dcbc99db3b5d3438fd Mon Sep 17 00:00:00 2001
From: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>
Date: Thu, 27 Aug 2020 17:32:09 +0200
Subject: [PATCH] gnuradio-runtime_pmt: dont hardcode
INTERFACE_INCLUDE_DIRECTORIES
gnuradio-runtimeTargets.cmake and gnuradio-pmtTargets.cmake are filled
using CMAKE_INSTALL_PREFIX for INSTALL_INTERFACE.
Since CMAKE_INSTALL_PREFIX, in buildroot, is set to /usr, these files contains
path to host system.
With BR2_COMPILER_PARANOID_UNSAFE_PATH package using gnuradio fails with:
arm-linux-gnueabihf-g++: ERROR: unsafe header/library path used in cross-compilation: '-isystem' '/usr/include'
By simply providing 'include', produced .cmake contains:
INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include"
instead of
INTERFACE_INCLUDE_DIRECTORIES "/usr/include"
[Upstream status: https://github.com/gnuradio/gnuradio/pull/3737]
Signed-off-by: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>
---
gnuradio-runtime/lib/CMakeLists.txt | 2 +-
gnuradio-runtime/lib/pmt/CMakeLists.txt | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/gnuradio-runtime/lib/CMakeLists.txt b/gnuradio-runtime/lib/CMakeLists.txt
index 5aa90a5e1..fc32f473b 100644
--- a/gnuradio-runtime/lib/CMakeLists.txt
+++ b/gnuradio-runtime/lib/CMakeLists.txt
@@ -214,7 +214,7 @@ target_link_libraries(gnuradio-runtime PUBLIC
target_include_directories(gnuradio-runtime
PUBLIC
- $<INSTALL_INTERFACE:${CMAKE_INSTALL_PREFIX}/include>
+ $<INSTALL_INTERFACE:include>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../include>
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/../include>
PRIVATE
diff --git a/gnuradio-runtime/lib/pmt/CMakeLists.txt b/gnuradio-runtime/lib/pmt/CMakeLists.txt
index 9fb98d0fc..6dfcd945c 100644
--- a/gnuradio-runtime/lib/pmt/CMakeLists.txt
+++ b/gnuradio-runtime/lib/pmt/CMakeLists.txt
@@ -33,7 +33,7 @@ target_link_libraries(gnuradio-pmt
target_include_directories(gnuradio-pmt
PUBLIC
- $<INSTALL_INTERFACE:${CMAKE_INSTALL_PREFIX}/include>
+ $<INSTALL_INTERFACE:include>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../../include>
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/
)
--
2.26.2

View File

@ -1,55 +0,0 @@
From 268b1a599304f58bd56c86ff09041b5912c24a0c Mon Sep 17 00:00:00 2001
From: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>
Date: Sun, 1 Nov 2020 17:24:36 +0100
Subject: [PATCH] gr-qtgui: dont't add examples/c++ subdirectory when gr-analog
is disabled
gr-qtgui examples needs to have gr-analog enabled, without this dependency
compile crash with:
In file included from
/x/output/build/gnuradio-3.8.1.0/gr-qtgui/examples/c++/display_qt.cc:22:
/x/output/build/gnuradio-3.8.1.0/gr-qtgui/examples/c++/display_qt.h:24:10:
fatal error: gnuradio/analog/noise_source.h: No such file or directory
24 | #include <gnuradio/analog/noise_source.h>
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[3]: *** [gr-qtgui/examples/c++/CMakeFiles/display_qt.dir/build.make:67:
gr-qtgui/examples/c++/CMakeFiles/display_qt.dir/display_qt.cc.o] Error 1
make[3]: *** Waiting for unfinished jobs....
In file included from
/somewhere/gnuradio/build/gr-qtgui/examples/c++/moc_display_qt.cpp:10:
/somewhere/gnuradio/build/gr-qtgui/examples/c++/../../../../gr-qtgui/examples/c++/display_qt.h:24:10:
fatal error: gnuradio/analog/noise_source.h: No such file or directory
24 | #include <gnuradio/analog/noise_source.h>
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
GR_ANALOG is not an explicit dependency of GR_QTGUI, so disable c++ examples if
user has not selected this option.
[backported from 7470a7a3771dd90defb826b464dfe62977cb1eb6]
Signed-off-by: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>
---
gr-qtgui/CMakeLists.txt | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/gr-qtgui/CMakeLists.txt b/gr-qtgui/CMakeLists.txt
index 8831f3ad9..561186fbd 100644
--- a/gr-qtgui/CMakeLists.txt
+++ b/gr-qtgui/CMakeLists.txt
@@ -68,7 +68,9 @@ if(ENABLE_GR_QTGUI)
add_subdirectory(include/gnuradio/qtgui)
add_subdirectory(lib)
add_subdirectory(docs)
-add_subdirectory(examples/c++)
+if (ENABLE_GR_ANALOG)
+ add_subdirectory(examples/c++)
+endif(ENABLE_GR_ANALOG)
if(ENABLE_PYTHON)
add_subdirectory(swig)
add_subdirectory(python/qtgui)
--
2.26.2

View File

@ -1,165 +0,0 @@
From 2c767bb260a25b415e8c9c4b3ea37280b2127cec Mon Sep 17 00:00:00 2001
From: japm48 <japm48@users.noreply.github.com>
Date: Fri, 10 Apr 2020 23:35:30 +0200
Subject: [PATCH] boost: remove deprecated math/common_factor.hpp
Remove deprecation warning and prefer using std::{lcm,gcd} to Boost.
Fixes #2712.
[Retrieved from:
https://github.com/gnuradio/gnuradio/commit/2c767bb260a25b415e8c9c4b3ea37280b2127cec]
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
---
.../include/gnuradio/CMakeLists.txt | 1 +
.../include/gnuradio/integer_math.h | 35 +++++++++++++++++++
gnuradio-runtime/lib/buffer.cc | 19 ++--------
gr-digital/lib/symbol_sync_cc_impl.cc | 4 +--
gr-digital/lib/symbol_sync_ff_impl.cc | 4 +--
5 files changed, 43 insertions(+), 20 deletions(-)
create mode 100644 gnuradio-runtime/include/gnuradio/integer_math.h
diff --git a/gnuradio-runtime/include/gnuradio/CMakeLists.txt b/gnuradio-runtime/include/gnuradio/CMakeLists.txt
index 8d718e87b5b..056af5d6f48 100644
--- a/gnuradio-runtime/include/gnuradio/CMakeLists.txt
+++ b/gnuradio-runtime/include/gnuradio/CMakeLists.txt
@@ -31,6 +31,7 @@ install(FILES
gr_complex.h
hier_block2.h
high_res_timer.h
+ integer_math.h
io_signature.h
logger.h
math.h
diff --git a/gnuradio-runtime/include/gnuradio/integer_math.h b/gnuradio-runtime/include/gnuradio/integer_math.h
new file mode 100644
index 00000000000..15141049fa4
--- /dev/null
+++ b/gnuradio-runtime/include/gnuradio/integer_math.h
@@ -0,0 +1,35 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+#ifndef INCLUDED_GR_INTEGER_MATH_H
+#define INCLUDED_GR_INTEGER_MATH_H
+
+#if (__cplusplus >= 201703L)
+
+// Prefer C++17 goodness.
+#include <numeric>
+#define GR_GCD std::gcd
+#define GR_LCM std::lcm
+
+#elif (BOOST_VERSION >= 105800)
+
+// Fallback: newer boost API (introduced in Boost 1.58.0).
+#include <boost/integer/common_factor_rt.hpp>
+#define GR_GCD boost::integer::gcd
+#define GR_LCM boost::integer::lcm
+
+#else
+
+// Last resort: old deprecated boost API.
+#include <boost/math/common_factor_rt.hpp>
+#define GR_GCD boost::math::gcd
+#define GR_LCM boost::math::lcm
+
+#endif /* __cplusplus >= 201703L */
+#endif /* INCLUDED_GR_INTEGER_MATH_H */
diff --git a/gnuradio-runtime/lib/buffer.cc b/gnuradio-runtime/lib/buffer.cc
index 720c72c4ee8..46d704542b1 100644
--- a/gnuradio-runtime/lib/buffer.cc
+++ b/gnuradio-runtime/lib/buffer.cc
@@ -13,22 +13,13 @@
#endif
#include "vmcircbuf.h"
#include <gnuradio/buffer.h>
+#include <gnuradio/integer_math.h>
#include <gnuradio/math.h>
#include <assert.h>
#include <algorithm>
#include <iostream>
#include <stdexcept>
-// the following header is deprecated as of Boost 1.66.0, and the
-// other API was introduced in Boost 1.58.0. Since we still support
-// Boost back to 1.54.0, use the older API if pre-1.5.80 and otherwise
-// use the newer API.
-#if (BOOST_VERSION < 105800)
-#include <boost/math/common_factor_rt.hpp>
-#else
-#include <boost/integer/common_factor_rt.hpp>
-#endif
-
namespace gr {
static long s_buffer_count = 0; // counts for debugging storage mgmt
@@ -68,13 +59,9 @@ static long s_buffer_reader_count = 0;
*
* type_size * nitems == k * page_size
*/
-static long minimum_buffer_items(long type_size, long page_size)
+static inline long minimum_buffer_items(long type_size, long page_size)
{
-#if (BOOST_VERSION < 105800)
- return page_size / boost::math::gcd(type_size, page_size);
-#else
- return page_size / boost::integer::gcd(type_size, page_size);
-#endif
+ return page_size / GR_GCD(type_size, page_size);
}
diff --git a/gr-digital/lib/symbol_sync_cc_impl.cc b/gr-digital/lib/symbol_sync_cc_impl.cc
index 55f85e7c6a7..55f162dc727 100644
--- a/gr-digital/lib/symbol_sync_cc_impl.cc
+++ b/gr-digital/lib/symbol_sync_cc_impl.cc
@@ -13,9 +13,9 @@
#endif
#include "symbol_sync_cc_impl.h"
+#include <gnuradio/integer_math.h>
#include <gnuradio/io_signature.h>
#include <gnuradio/math.h>
-#include <boost/math/common_factor.hpp>
#include <stdexcept>
namespace gr {
@@ -95,7 +95,7 @@ symbol_sync_cc_impl::symbol_sync_cc_impl(enum ted_type detector_type,
throw std::runtime_error("unable to create interpolating_resampler_ccf");
// Block Internal Clocks
- d_interps_per_symbol_n = boost::math::lcm(d_ted->inputs_per_symbol(), d_osps_n);
+ d_interps_per_symbol_n = GR_LCM(d_ted->inputs_per_symbol(), d_osps_n);
d_interps_per_ted_input_n = d_interps_per_symbol_n / d_ted->inputs_per_symbol();
d_interps_per_output_sample_n = d_interps_per_symbol_n / d_osps_n;
diff --git a/gr-digital/lib/symbol_sync_ff_impl.cc b/gr-digital/lib/symbol_sync_ff_impl.cc
index d0ec32ab192..1172c1b4f8a 100644
--- a/gr-digital/lib/symbol_sync_ff_impl.cc
+++ b/gr-digital/lib/symbol_sync_ff_impl.cc
@@ -13,9 +13,9 @@
#endif
#include "symbol_sync_ff_impl.h"
+#include <gnuradio/integer_math.h>
#include <gnuradio/io_signature.h>
#include <gnuradio/math.h>
-#include <boost/math/common_factor.hpp>
#include <stdexcept>
namespace gr {
@@ -97,7 +97,7 @@ symbol_sync_ff_impl::symbol_sync_ff_impl(enum ted_type detector_type,
throw std::runtime_error("unable to create interpolating_resampler_fff");
// Block Internal Clocks
- d_interps_per_symbol_n = boost::math::lcm(d_ted->inputs_per_symbol(), d_osps_n);
+ d_interps_per_symbol_n = GR_LCM(d_ted->inputs_per_symbol(), d_osps_n);
d_interps_per_ted_input_n = d_interps_per_symbol_n / d_ted->inputs_per_symbol();
d_interps_per_output_sample_n = d_interps_per_symbol_n / d_osps_n;

View File

@ -15,19 +15,19 @@ config BR2_PACKAGE_GNURADIO
depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL
depends on BR2_USE_MMU # use fork()
depends on BR2_USE_WCHAR # boost
depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-atomic, boost-filesystem
depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-atomic, boost-thread
depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_43744
depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # boost-thread
select BR2_PACKAGE_BOOST
select BR2_PACKAGE_BOOST_ATOMIC
select BR2_PACKAGE_BOOST_DATE_TIME
select BR2_PACKAGE_BOOST_FILESYSTEM
select BR2_PACKAGE_BOOST_PROGRAM_OPTIONS
select BR2_PACKAGE_BOOST_REGEX
select BR2_PACKAGE_BOOST_SYSTEM
select BR2_PACKAGE_BOOST_THREAD
select BR2_PACKAGE_LOG4CPP
select BR2_PACKAGE_GMP
select BR2_PACKAGE_SPDLOG
select BR2_PACKAGE_VOLK
help
GNU Radio is a free & open-source software development
@ -81,6 +81,7 @@ config BR2_PACKAGE_GNURADIO_PYTHON
depends on BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL # python-numpy
select BR2_PACKAGE_BOOST_PYTHON
select BR2_PACKAGE_PYTHON_NUMPY # runtime
select BR2_PACKAGE_PYTHON_PYBIND
select BR2_PACKAGE_PYTHON_SIX # runtime
help
Enable python component

View File

@ -1,3 +1,3 @@
# Locally computed
sha256 3e293541a9ac8d78660762bae8b80c0f6195b3494e1c50c01a9fd79cc60bb624 gnuradio-3.8.2.0.tar.gz
sha256 c6b9f59447a842559b00b3a67b4ca1186e9adb8db742b25400507fedc747f2bd gnuradio-3.10.4.0.tar.gz
sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING

View File

@ -4,22 +4,19 @@
#
################################################################################
GNURADIO_VERSION = 3.8.2.0
GNURADIO_SITE = https://github.com/gnuradio/gnuradio/releases/download/v$(GNURADIO_VERSION)
GNURADIO_VERSION = 3.10.4.0
GNURADIO_SITE = $(call github,gnuradio,gnuradio,v$(GNURADIO_VERSION))
GNURADIO_LICENSE = GPL-3.0+
GNURADIO_LICENSE_FILES = COPYING
GNURADIO_SUPPORTS_IN_SOURCE_BUILD = NO
# host-python-mako and host-python-six are needed for volk to compile
GNURADIO_DEPENDENCIES = \
host-python3 \
host-python-mako \
host-python-six \
host-swig \
boost \
log4cpp \
gmp \
spdlog \
volk
GNURADIO_CONF_OPTS = \
@ -115,7 +112,8 @@ GNURADIO_CONF_OPTS += -DENABLE_GR_FILTER=OFF
endif
ifeq ($(BR2_PACKAGE_GNURADIO_PYTHON),y)
GNURADIO_DEPENDENCIES += python3
GNURADIO_DEPENDENCIES += python3 python-pybind \
host-python-numpy host-python-packaging
GNURADIO_CONF_OPTS += -DENABLE_PYTHON=ON
# mandatory to install python modules in site-packages and to use
# correct path for python libraries