public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] repo/gentoo:master commit in: net-wireless/gnuradio/files/, net-wireless/gnuradio/
@ 2018-02-18  3:48 Richard Farina
  0 siblings, 0 replies; 5+ messages in thread
From: Richard Farina @ 2018-02-18  3:48 UTC (permalink / raw
  To: gentoo-commits

commit:     9e5358e83eedcbd65ee25fa87dd6c503d1a832d0
Author:     Zero_Chaos <zerochaos <AT> gentoo <DOT> org>
AuthorDate: Sun Feb 18 02:25:06 2018 +0000
Commit:     Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Sun Feb 18 03:48:02 2018 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=9e5358e8

net-wireless/gnuradio: add support for wx:3.0

Package-Manager: Portage-2.3.24, Repoman-2.3.6

 .../gnuradio/files/gnuradio-wxpy3.0-compat.patch   |  50 +++++
 net-wireless/gnuradio/gnuradio-3.7.11-r2.ebuild    | 238 +++++++++++++++++++++
 2 files changed, 288 insertions(+)

diff --git a/net-wireless/gnuradio/files/gnuradio-wxpy3.0-compat.patch b/net-wireless/gnuradio/files/gnuradio-wxpy3.0-compat.patch
new file mode 100644
index 00000000000..60eb7c7bbbe
--- /dev/null
+++ b/net-wireless/gnuradio/files/gnuradio-wxpy3.0-compat.patch
@@ -0,0 +1,50 @@
+Description: Update for wxPython 3.0
+ wx.InitAllImageHandlers() issues a deprecation warning with wxPython 3.0
+ and is a no-op with wxPython 2.8.
+ Deprecated constants like wxSAVE are gone from the C++ API, so wx.SAVE, etc
+ are also likely to go from wxPython soon.
+ The alias "wx.Color" is gone in wxPython 3.0 - only "wx.Colour" is now
+ supported, so update docstring to use the correct class name.
+Author: Olly Betts <olly@survex.com>
+Forwarded: no
+Last-Update: 2014-08-21
+
+--- a/gr-wxgui/python/wxgui/plot.py
++++ b/gr-wxgui/python/wxgui/plot.py
+@@ -522,7 +522,7 @@
+                     self,
+                     "Choose a file with extension bmp, gif, xbm, xpm, png, or jpg", ".", "",
+                     "BMP files (*.bmp)|*.bmp|XBM files (*.xbm)|*.xbm|XPM file (*.xpm)|*.xpm|PNG files (*.png)|*.png|JPG files (*.jpg)|*.jpg",
+-                    wx.SAVE|wx.OVERWRITE_PROMPT
++                    wx.FD_SAVE|wx.FD_OVERWRITE_PROMPT
+                     )
+             try:
+                 while 1:
+@@ -1820,7 +1820,6 @@
+ 
+     class MyApp(wx.App):
+         def OnInit(self):
+-            wx.InitAllImageHandlers()
+             frame = TestFrame(None, -1, "PlotCanvas")
+             #frame.Show(True)
+             self.SetTopWindow(frame)
+--- a/gr-wxgui/python/wxgui/plotter/gltext.py
++++ b/gr-wxgui/python/wxgui/plotter/gltext.py
+@@ -50,7 +50,7 @@
+         """
+         text (String)         - Text
+         font (wx.Font)        - Font to draw with (None = System default)
+-        foreground (wx.Color) - Color of the text
++        foreground (wx.Colour)- Color of the text
+                 or (wx.Bitmap)- Bitmap to overlay the text with
+         centered (bool)       - Center the text
+ 
+@@ -317,7 +317,7 @@
+             text (string)           - displayed text
+             font (wx.Font)          - if None, system default font will be used with font_size
+             font_size (int)         - font size in points
+-            foreground (wx.Color)   - Color of the text
++            foreground (wx.Colour)  - Color of the text
+                     or (wx.Bitmap)  - Bitmap to overlay the text with
+             centered (bool)         - should the text drawn centered towards position?
+ 

diff --git a/net-wireless/gnuradio/gnuradio-3.7.11-r2.ebuild b/net-wireless/gnuradio/gnuradio-3.7.11-r2.ebuild
new file mode 100644
index 00000000000..acadae1e43c
--- /dev/null
+++ b/net-wireless/gnuradio/gnuradio-3.7.11-r2.ebuild
@@ -0,0 +1,238 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+PYTHON_COMPAT=( python2_7 )
+
+CMAKE_BUILD_TYPE="None"
+inherit cmake-utils fdo-mime gnome2-utils python-single-r1 eutils
+
+DESCRIPTION="Toolkit that provides signal processing blocks to implement software radios"
+HOMEPAGE="http://gnuradio.org/"
+LICENSE="GPL-3"
+SLOT="0/${PV}"
+
+if [[ ${PV} == "9999" ]] ; then
+	EGIT_REPO_URI="http://gnuradio.org/git/gnuradio.git"
+	inherit git-r3
+	KEYWORDS=""
+else
+	SRC_URI="http://gnuradio.org/releases/gnuradio/${P}.tar.gz"
+	KEYWORDS="~amd64 ~arm ~x86"
+fi
+
+IUSE="+audio +alsa atsc +analog +digital channels doc dtv examples fcd fec +filter grc jack log noaa oss pager performance-counters portaudio +qt4 sdl test trellis uhd vocoder +utils wavelet wxwidgets zeromq"
+
+REQUIRED_USE="${PYTHON_REQUIRED_USE}
+		audio? ( || ( alsa oss jack portaudio ) )
+		alsa? ( audio )
+		oss? ( audio )
+		jack? ( audio )
+		portaudio? ( audio )
+		analog? ( filter )
+		digital? ( filter analog )
+		dtv? ( fec )
+		pager? ( filter analog )
+		qt4? ( filter )
+		uhd? ( filter analog )
+		fcd? ( || ( alsa oss ) )
+		wavelet? ( analog )
+		wxwidgets? ( filter analog )"
+
+# bug #348206
+# comedi? ( >=sci-electronics/comedilib-0.8 )
+# boost-1.52.0 is blacklisted, bug #461578, upstream #513, boost #7669
+RDEPEND="${PYTHON_DEPS}
+	>=dev-lang/orc-0.4.12
+	dev-libs/boost:0=[${PYTHON_USEDEP}]
+	!<=dev-libs/boost-1.52.0-r6:0/1.52
+	dev-python/numpy[${PYTHON_USEDEP}]
+	sci-libs/fftw:3.0=
+	alsa? (
+		media-libs/alsa-lib[${PYTHON_USEDEP}]
+	)
+	fcd? ( virtual/libusb:1 )
+	filter? ( sci-libs/scipy )
+	grc? (
+		dev-python/cheetah[${PYTHON_USEDEP}]
+		dev-python/lxml[${PYTHON_USEDEP}]
+		>=dev-python/pygtk-2.10:2[${PYTHON_USEDEP}]
+	)
+	jack? (
+		media-sound/jack-audio-connection-kit
+	)
+	log? ( dev-libs/log4cpp )
+	portaudio? (
+		>=media-libs/portaudio-19_pre
+	)
+	qt4? (
+		>=dev-python/PyQt4-4.4[X,opengl,${PYTHON_USEDEP}]
+		>=dev-python/pyqwt-5.2:5[${PYTHON_USEDEP}]
+		>=dev-qt/qtcore-4.4:4
+		>=dev-qt/qtgui-4.4:4
+		x11-libs/qwt:6[qt4(+)]
+	)
+	sdl? ( >=media-libs/libsdl-1.2.0 )
+	uhd? ( >=net-wireless/uhd-3.9.6:=[${PYTHON_USEDEP}] )
+	utils? ( dev-python/matplotlib[${PYTHON_USEDEP}] )
+	vocoder? ( media-sound/gsm )
+	wavelet? (
+		>=sci-libs/gsl-1.10
+	)
+	wxwidgets? (
+		dev-python/lxml[${PYTHON_USEDEP}]
+		dev-python/numpy[${PYTHON_USEDEP}]
+		dev-python/wxpython:3.0[${PYTHON_USEDEP}]
+	)
+	zeromq? ( >=net-libs/zeromq-2.1.11 )
+	"
+
+DEPEND="${RDEPEND}
+	app-text/docbook-xml-dtd:4.2
+	>=dev-lang/swig-3.0.5
+	dev-python/cheetah[${PYTHON_USEDEP}]
+	virtual/pkgconfig
+	doc? (
+		>=app-doc/doxygen-1.5.7.1
+		dev-python/sphinx[${PYTHON_USEDEP}]
+	)
+	grc? ( x11-misc/xdg-utils )
+	oss? ( virtual/os-headers )
+	test? ( >=dev-util/cppunit-1.9.14 )
+	zeromq? ( net-libs/cppzmq )
+"
+
+src_prepare() {
+	gnome2_environment_reset #534582
+
+	epatch "${FILESDIR}"/gnuradio-wxpy3.0-compat.patch
+	# Useless UI element would require qt3support, bug #365019
+	sed -i '/qPixmapFromMimeSource/d' "${S}"/gr-qtgui/lib/spectrumdisplayform.ui || die
+	#default
+}
+
+src_configure() {
+	# SYSCONFDIR/GR_PREFSDIR default to install below CMAKE_INSTALL_PREFIX
+	#audio provider is still automagic
+	#zeromq missing deps isn't fatal
+	mycmakeargs=(
+		-DENABLE_DEFAULT=OFF
+		-DENABLE_GNURADIO_RUNTIME=ON
+		-DENABLE_VOLK=ON
+		-DENABLE_PYTHON=ON
+		-DENABLE_GR_BLOCKS=ON
+		-DENABLE_GR_FFT=ON
+		-DENABLE_GR_AUDIO=ON
+		$(cmake-utils_use_enable alsa GR_AUDIO_ALSA) \
+		$(cmake-utils_use_enable analog GR_ANALOG) \
+		$(cmake-utils_use_enable atsc GR_ATSC) \
+		$(cmake-utils_use_enable channels GR_CHANNELS) \
+		$(cmake-utils_use_enable digital GR_DIGITAL) \
+		$(cmake-utils_use_enable doc DOXYGEN) \
+		$(cmake-utils_use_enable doc SPHINX) \
+		$(cmake-utils_use_enable dtv GR_DTV) \
+		$(cmake-utils_use_enable fcd GR_FCD) \
+		$(cmake-utils_use_enable fec GR_FEC) \
+		$(cmake-utils_use_enable filter GR_FILTER) \
+		$(cmake-utils_use_enable grc GRC) \
+		$(cmake-utils_use_enable jack GR_AUDIO_JACK) \
+		$(cmake-utils_use_enable log GR_LOG) \
+		$(cmake-utils_use_enable noaa GR_NOAA) \
+		$(cmake-utils_use_enable oss GR_AUDIO_OSS) \
+		$(cmake-utils_use_enable pager GR_PAGER) \
+		$(cmake-utils_use_enable performance-counters ENABLE_PERFORMANCE_COUNTERS) \
+		$(cmake-utils_use_enable portaudio GR_AUDIO_PORTAUDIO) \
+		$(cmake-utils_use_enable test TESTING) \
+		$(cmake-utils_use_enable trellis GR_TRELLIS) \
+		$(cmake-utils_use_enable uhd GR_UHD) \
+		$(cmake-utils_use_enable utils GR_UTILS) \
+		$(cmake-utils_use_enable vocoder GR_VOCODER) \
+		$(cmake-utils_use_enable wavelet GR_WAVELET) \
+		$(cmake-utils_use_enable wxwidgets GR_WXGUI) \
+		$(cmake-utils_use_enable qt4 GR_QTGUI) \
+		$(cmake-utils_use_enable sdl GR_VIDEO_SDL) \
+		$(cmake-utils_use_enable zeromq GR_ZEROMQ) \
+		-DENABLE_GR_CORE=ON \
+		-DSYSCONFDIR="${EPREFIX}"/etc \
+		-DPYTHON_EXECUTABLE="${PYTHON}"
+		-DGR_PKG_DOC_DIR="${EPREFIX}/usr/share/doc/${PF}"
+	)
+	use vocoder && mycmakeargs+=( -DGR_USE_SYSTEM_LIBGSM=TRUE )
+	cmake-utils_src_configure
+}
+
+src_install() {
+	cmake-utils_src_install
+
+	if use examples ; then
+		dodir /usr/share/doc/${PF}/
+		mv "${ED}"/usr/share/${PN}/examples "${ED}"/usr/share/doc/${PF}/ || die
+		docompress -x /usr/share/doc/${PF}/examples
+	else
+	# It seems that the examples are always installed
+		rm -rf "${ED}"/usr/share/${PN}/examples || die
+	fi
+
+	if use doc || use examples; then
+		#this doesn't appear useful
+		rm -rf "${ED}"/usr/share/doc/${PF}/xml || die
+	fi
+
+	# We install the mimetypes to the correct locations from the ebuild
+	rm -rf "${ED}"/usr/share/${PN}/grc/freedesktop || die
+	rm -f "${ED}"/usr/libexec/${PN}/grc_setup_freedesktop || die
+
+	# Install icons, menu items and mime-types for GRC
+	if use grc ; then
+		local fd_path="${S}/grc/scripts/freedesktop"
+		insinto /usr/share/mime/packages
+		doins "${fd_path}/${PN}-grc.xml"
+
+		domenu "${fd_path}/"*.desktop
+		doicon "${fd_path}/"*.png
+	fi
+
+	python_fix_shebang "${ED}"
+}
+
+src_test()
+{
+	ctest -E qtgui
+}
+
+pkg_postinst()
+{
+	local GRC_ICON_SIZES="32 48 64 128 256"
+
+	if use grc ; then
+		fdo-mime_desktop_database_update
+		fdo-mime_mime_database_update
+		for size in ${GRC_ICON_SIZES} ; do
+			xdg-icon-resource install --noupdate --context mimetypes --size ${size} \
+				"${EROOT}/usr/share/pixmaps/grc-icon-${size}.png" application-gnuradio-grc \
+				|| die "icon resource installation failed"
+			xdg-icon-resource install --noupdate --context apps --size ${size} \
+				"${EROOT}/usr/share/pixmaps/grc-icon-${size}.png" gnuradio-grc \
+				|| die "icon resource installation failed"
+		done
+		xdg-icon-resource forceupdate
+	fi
+}
+
+pkg_postrm()
+{
+	local GRC_ICON_SIZES="32 48 64 128 256"
+
+	if use grc ; then
+		fdo-mime_desktop_database_update
+		fdo-mime_mime_database_update
+		for size in ${GRC_ICON_SIZES} ; do
+			xdg-icon-resource uninstall --noupdate --context mimetypes --size ${size} \
+				application-gnuradio-grc || ewarn "icon uninstall failed"
+			xdg-icon-resource uninstall --noupdate --context apps --size ${size} \
+				gnuradio-grc || ewarn "icon uninstall failed"
+
+		done
+		xdg-icon-resource forceupdate
+	fi
+}


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: net-wireless/gnuradio/files/, net-wireless/gnuradio/
@ 2020-09-21 18:46 Rick Farina
  0 siblings, 0 replies; 5+ messages in thread
From: Rick Farina @ 2020-09-21 18:46 UTC (permalink / raw
  To: gentoo-commits

commit:     57432a383a28675ad96e1617ad4766ce68e4c734
Author:     Rick Farina <zerochaos <AT> gentoo <DOT> org>
AuthorDate: Mon Sep 21 18:46:27 2020 +0000
Commit:     Rick Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Mon Sep 21 18:46:36 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=57432a38

net-wireless/gnuradio: bug #739332

Package-Manager: Portage-3.0.8, Repoman-3.0.1
Signed-off-by: Rick Farina <zerochaos <AT> gentoo.org>

 .../files/gnuradio-3.8.2.0-lamda-gr-qtgui.patch    | 250 +++++++++++++++++
 .../files/gnuradio-3.8.2.0-lamda-gr-uhd.patch      |  98 +++++++
 .../gnuradio-3.8.2.0-lamda-most-components.patch   | 290 ++++++++++++++++++++
 .../gnuradio-3.8.2.0-lamda-set-msg-handlers.patch  | 298 +++++++++++++++++++++
 net-wireless/gnuradio/gnuradio-3.8.2.0.ebuild      |   7 +
 5 files changed, 943 insertions(+)

diff --git a/net-wireless/gnuradio/files/gnuradio-3.8.2.0-lamda-gr-qtgui.patch b/net-wireless/gnuradio/files/gnuradio-3.8.2.0-lamda-gr-qtgui.patch
new file mode 100644
index 00000000000..0057b38836c
--- /dev/null
+++ b/net-wireless/gnuradio/files/gnuradio-3.8.2.0-lamda-gr-qtgui.patch
@@ -0,0 +1,250 @@
+From faa5e19e15f77a0ba5e7f854df6517c280034369 Mon Sep 17 00:00:00 2001
+From: Johannes Demel <demel@ant.uni-bremen.de>
+Date: Sat, 9 May 2020 15:28:58 +0200
+Subject: [PATCH] msg_handler: Use lambdas in gr-qtgui
+
+gr-qtgui uses lambdas instead of `boost::bind` to register message
+handlers now. This component makes quite heavy use of message handlers.
+---
+ gr-qtgui/lib/const_sink_c_impl.cc       | 3 +--
+ gr-qtgui/lib/edit_box_msg_impl.cc       | 2 +-
+ gr-qtgui/lib/freq_sink_c_impl.cc        | 6 +++---
+ gr-qtgui/lib/freq_sink_f_impl.cc        | 6 +++---
+ gr-qtgui/lib/histogram_sink_f_impl.cc   | 3 +--
+ gr-qtgui/lib/sink_c_impl.cc             | 2 +-
+ gr-qtgui/lib/sink_f_impl.cc             | 2 +-
+ gr-qtgui/lib/time_raster_sink_b_impl.cc | 3 +--
+ gr-qtgui/lib/time_raster_sink_f_impl.cc | 3 +--
+ gr-qtgui/lib/time_sink_c_impl.cc        | 2 +-
+ gr-qtgui/lib/time_sink_f_impl.cc        | 2 +-
+ gr-qtgui/lib/waterfall_sink_c_impl.cc   | 9 +++------
+ gr-qtgui/lib/waterfall_sink_f_impl.cc   | 9 +++------
+ 13 files changed, 21 insertions(+), 31 deletions(-)
+
+diff --git a/gr-qtgui/lib/const_sink_c_impl.cc b/gr-qtgui/lib/const_sink_c_impl.cc
+index 852f6ee109..e4b01907f1 100644
+--- a/gr-qtgui/lib/const_sink_c_impl.cc
++++ b/gr-qtgui/lib/const_sink_c_impl.cc
+@@ -69,8 +69,7 @@ const_sink_c_impl::const_sink_c_impl(int size,
+ 
+     // setup PDU handling input port
+     message_port_register_in(pmt::mp("in"));
+-    set_msg_handler(pmt::mp("in"),
+-                    boost::bind(&const_sink_c_impl::handle_pdus, this, _1));
++    set_msg_handler(pmt::mp("in"), [this](pmt::pmt_t msg) { this->handle_pdus(msg); });
+ 
+     for (int i = 0; i < d_nconnections; i++) {
+         d_residbufs_real.push_back(
+diff --git a/gr-qtgui/lib/edit_box_msg_impl.cc b/gr-qtgui/lib/edit_box_msg_impl.cc
+index 8713aa820e..04f860785a 100644
+--- a/gr-qtgui/lib/edit_box_msg_impl.cc
++++ b/gr-qtgui/lib/edit_box_msg_impl.cc
+@@ -158,7 +158,7 @@ edit_box_msg_impl::edit_box_msg_impl(data_type_t type,
+     message_port_register_out(d_port);
+     message_port_register_in(pmt::mp("val"));
+ 
+-    set_msg_handler(pmt::mp("val"), boost::bind(&edit_box_msg_impl::set_value, this, _1));
++    set_msg_handler(pmt::mp("val"), [this](pmt::pmt_t msg) { this->set_value(msg); });
+ }
+ 
+ edit_box_msg_impl::~edit_box_msg_impl()
+diff --git a/gr-qtgui/lib/freq_sink_c_impl.cc b/gr-qtgui/lib/freq_sink_c_impl.cc
+index 3a34df6ec6..137bccc3c3 100644
+--- a/gr-qtgui/lib/freq_sink_c_impl.cc
++++ b/gr-qtgui/lib/freq_sink_c_impl.cc
+@@ -82,17 +82,17 @@ freq_sink_c_impl::freq_sink_c_impl(int fftsize,
+ 
+     // setup bw input port
+     message_port_register_in(d_port_bw);
+-    set_msg_handler(d_port_bw, boost::bind(&freq_sink_c_impl::handle_set_bw, this, _1));
++    set_msg_handler(d_port_bw, [this](pmt::pmt_t msg) { this->handle_set_bw(msg); });
+ 
+     // setup output message port to post frequency when display is
+     // double-clicked
+     message_port_register_out(d_port);
+     message_port_register_in(d_port);
+-    set_msg_handler(d_port, boost::bind(&freq_sink_c_impl::handle_set_freq, this, _1));
++    set_msg_handler(d_port, [this](pmt::pmt_t msg) { this->handle_set_freq(msg); });
+ 
+     // setup PDU handling input port
+     message_port_register_in(pmt::mp("in"));
+-    set_msg_handler(pmt::mp("in"), boost::bind(&freq_sink_c_impl::handle_pdus, this, _1));
++    set_msg_handler(pmt::mp("in"), [this](pmt::pmt_t msg) { this->handle_pdus(msg); });
+ 
+     d_main_gui = NULL;
+ 
+diff --git a/gr-qtgui/lib/freq_sink_f_impl.cc b/gr-qtgui/lib/freq_sink_f_impl.cc
+index c14bfc31fd..0b1757c03c 100644
+--- a/gr-qtgui/lib/freq_sink_f_impl.cc
++++ b/gr-qtgui/lib/freq_sink_f_impl.cc
+@@ -82,17 +82,17 @@ freq_sink_f_impl::freq_sink_f_impl(int fftsize,
+ 
+     // setup bw input port
+     message_port_register_in(d_port_bw);
+-    set_msg_handler(d_port_bw, boost::bind(&freq_sink_f_impl::handle_set_bw, this, _1));
++    set_msg_handler(d_port_bw, [this](pmt::pmt_t msg) { this->handle_set_bw(msg); });
+ 
+     // setup output message port to post frequency when display is
+     // double-clicked
+     message_port_register_out(d_port);
+     message_port_register_in(d_port);
+-    set_msg_handler(d_port, boost::bind(&freq_sink_f_impl::handle_set_freq, this, _1));
++    set_msg_handler(d_port, [this](pmt::pmt_t msg) { this->handle_set_freq(msg); });
+ 
+     // setup PDU handling input port
+     message_port_register_in(pmt::mp("in"));
+-    set_msg_handler(pmt::mp("in"), boost::bind(&freq_sink_f_impl::handle_pdus, this, _1));
++    set_msg_handler(pmt::mp("in"), [this](pmt::pmt_t msg) { this->handle_pdus(msg); });
+ 
+     d_main_gui = NULL;
+ 
+diff --git a/gr-qtgui/lib/histogram_sink_f_impl.cc b/gr-qtgui/lib/histogram_sink_f_impl.cc
+index d16de932ca..fd357bf40a 100644
+--- a/gr-qtgui/lib/histogram_sink_f_impl.cc
++++ b/gr-qtgui/lib/histogram_sink_f_impl.cc
+@@ -81,8 +81,7 @@ histogram_sink_f_impl::histogram_sink_f_impl(int size,
+ 
+     // setup PDU handling input port
+     message_port_register_in(pmt::mp("in"));
+-    set_msg_handler(pmt::mp("in"),
+-                    boost::bind(&histogram_sink_f_impl::handle_pdus, this, _1));
++    set_msg_handler(pmt::mp("in"), [this](pmt::pmt_t msg) { this->handle_pdus(msg); });
+ 
+     // +1 for the PDU buffer
+     for (int i = 0; i < d_nconnections + 1; i++) {
+diff --git a/gr-qtgui/lib/sink_c_impl.cc b/gr-qtgui/lib/sink_c_impl.cc
+index d3feb9d16c..8f7ff36ba2 100644
+--- a/gr-qtgui/lib/sink_c_impl.cc
++++ b/gr-qtgui/lib/sink_c_impl.cc
+@@ -96,7 +96,7 @@ sink_c_impl::sink_c_impl(int fftsize,
+     // double-clicked
+     message_port_register_out(d_port);
+     message_port_register_in(d_port);
+-    set_msg_handler(d_port, boost::bind(&sink_c_impl::handle_set_freq, this, _1));
++    set_msg_handler(d_port, [this](pmt::pmt_t msg) { this->handle_set_freq(msg); });
+ 
+     d_main_gui = NULL;
+ 
+diff --git a/gr-qtgui/lib/sink_f_impl.cc b/gr-qtgui/lib/sink_f_impl.cc
+index 418b630b78..0b1eccad12 100644
+--- a/gr-qtgui/lib/sink_f_impl.cc
++++ b/gr-qtgui/lib/sink_f_impl.cc
+@@ -95,7 +95,7 @@ sink_f_impl::sink_f_impl(int fftsize,
+     // double-clicked
+     message_port_register_out(d_port);
+     message_port_register_in(d_port);
+-    set_msg_handler(d_port, boost::bind(&sink_f_impl::handle_set_freq, this, _1));
++    set_msg_handler(d_port, [this](pmt::pmt_t msg) { this->handle_set_freq(msg); });
+ 
+     d_main_gui = NULL;
+ 
+diff --git a/gr-qtgui/lib/time_raster_sink_b_impl.cc b/gr-qtgui/lib/time_raster_sink_b_impl.cc
+index 045c216b00..063ed09d0c 100644
+--- a/gr-qtgui/lib/time_raster_sink_b_impl.cc
++++ b/gr-qtgui/lib/time_raster_sink_b_impl.cc
+@@ -83,8 +83,7 @@ time_raster_sink_b_impl::time_raster_sink_b_impl(double samp_rate,
+ 
+     // setup PDU handling input port
+     message_port_register_in(pmt::mp("in"));
+-    set_msg_handler(pmt::mp("in"),
+-                    boost::bind(&time_raster_sink_b_impl::handle_pdus, this, _1));
++    set_msg_handler(pmt::mp("in"), [this](pmt::pmt_t msg) { this->handle_pdus(msg); });
+ 
+     d_scale = 1.0f;
+ 
+diff --git a/gr-qtgui/lib/time_raster_sink_f_impl.cc b/gr-qtgui/lib/time_raster_sink_f_impl.cc
+index d186f319da..df94d217bd 100644
+--- a/gr-qtgui/lib/time_raster_sink_f_impl.cc
++++ b/gr-qtgui/lib/time_raster_sink_f_impl.cc
+@@ -83,8 +83,7 @@ time_raster_sink_f_impl::time_raster_sink_f_impl(double samp_rate,
+ 
+     // setup PDU handling input port
+     message_port_register_in(pmt::mp("in"));
+-    set_msg_handler(pmt::mp("in"),
+-                    boost::bind(&time_raster_sink_f_impl::handle_pdus, this, _1));
++    set_msg_handler(pmt::mp("in"), [this](pmt::pmt_t msg) { this->handle_pdus(msg); });
+ 
+     d_icols = static_cast<int>(ceil(d_cols));
+     d_tmpflt = (float*)volk_malloc(d_icols * sizeof(float), volk_get_alignment());
+diff --git a/gr-qtgui/lib/time_sink_c_impl.cc b/gr-qtgui/lib/time_sink_c_impl.cc
+index b73a1c1ad3..26dc5d2e32 100644
+--- a/gr-qtgui/lib/time_sink_c_impl.cc
++++ b/gr-qtgui/lib/time_sink_c_impl.cc
+@@ -80,7 +80,7 @@ time_sink_c_impl::time_sink_c_impl(int size,
+ 
+     // setup PDU handling input port
+     message_port_register_in(pmt::mp("in"));
+-    set_msg_handler(pmt::mp("in"), boost::bind(&time_sink_c_impl::handle_pdus, this, _1));
++    set_msg_handler(pmt::mp("in"), [this](pmt::pmt_t msg) { this->handle_pdus(msg); });
+ 
+     // +2 for the PDU message buffers
+     for (unsigned int n = 0; n < d_nconnections + 2; n++) {
+diff --git a/gr-qtgui/lib/time_sink_f_impl.cc b/gr-qtgui/lib/time_sink_f_impl.cc
+index df13998d75..8f41d02143 100644
+--- a/gr-qtgui/lib/time_sink_f_impl.cc
++++ b/gr-qtgui/lib/time_sink_f_impl.cc
+@@ -80,7 +80,7 @@ time_sink_f_impl::time_sink_f_impl(int size,
+ 
+     // setup PDU handling input port
+     message_port_register_in(pmt::mp("in"));
+-    set_msg_handler(pmt::mp("in"), boost::bind(&time_sink_f_impl::handle_pdus, this, _1));
++    set_msg_handler(pmt::mp("in"), [this](pmt::pmt_t msg) { this->handle_pdus(msg); });
+ 
+     // +1 for the PDU buffer
+     for (unsigned int n = 0; n < d_nconnections + 1; n++) {
+diff --git a/gr-qtgui/lib/waterfall_sink_c_impl.cc b/gr-qtgui/lib/waterfall_sink_c_impl.cc
+index fcf2ed98bc..20cebbcbda 100644
+--- a/gr-qtgui/lib/waterfall_sink_c_impl.cc
++++ b/gr-qtgui/lib/waterfall_sink_c_impl.cc
+@@ -117,20 +117,17 @@ waterfall_sink_c_impl::waterfall_sink_c_impl(int fftsize,
+ 
+     // setup bw input port
+     message_port_register_in(d_port_bw);
+-    set_msg_handler(d_port_bw,
+-                    boost::bind(&waterfall_sink_c_impl::handle_set_bw, this, _1));
++    set_msg_handler(d_port_bw, [this](pmt::pmt_t msg) { this->handle_set_bw(msg); });
+ 
+     // setup output message port to post frequency when display is
+     // double-clicked
+     message_port_register_out(d_port);
+     message_port_register_in(d_port);
+-    set_msg_handler(d_port,
+-                    boost::bind(&waterfall_sink_c_impl::handle_set_freq, this, _1));
++    set_msg_handler(d_port, [this](pmt::pmt_t msg) { this->handle_set_freq(msg); });
+ 
+     // setup PDU handling input port
+     message_port_register_in(pmt::mp("in"));
+-    set_msg_handler(pmt::mp("in"),
+-                    boost::bind(&waterfall_sink_c_impl::handle_pdus, this, _1));
++    set_msg_handler(pmt::mp("in"), [this](pmt::pmt_t msg) { this->handle_pdus(msg); });
+ }
+ 
+ waterfall_sink_c_impl::~waterfall_sink_c_impl()
+diff --git a/gr-qtgui/lib/waterfall_sink_f_impl.cc b/gr-qtgui/lib/waterfall_sink_f_impl.cc
+index aa1037a472..4ba6427f08 100644
+--- a/gr-qtgui/lib/waterfall_sink_f_impl.cc
++++ b/gr-qtgui/lib/waterfall_sink_f_impl.cc
+@@ -115,20 +115,17 @@ waterfall_sink_f_impl::waterfall_sink_f_impl(int fftsize,
+ 
+     // setup bw input port
+     message_port_register_in(d_port_bw);
+-    set_msg_handler(d_port_bw,
+-                    boost::bind(&waterfall_sink_f_impl::handle_set_bw, this, _1));
++    set_msg_handler(d_port_bw, [this](pmt::pmt_t msg) { this->handle_set_bw(msg); });
+ 
+     // setup output message port to post frequency when display is
+     // double-clicked
+     message_port_register_out(d_port);
+     message_port_register_in(d_port);
+-    set_msg_handler(d_port,
+-                    boost::bind(&waterfall_sink_f_impl::handle_set_freq, this, _1));
++    set_msg_handler(d_port, [this](pmt::pmt_t msg) { this->handle_set_freq(msg); });
+ 
+     // setup PDU handling input port
+     message_port_register_in(pmt::mp("in"));
+-    set_msg_handler(pmt::mp("in"),
+-                    boost::bind(&waterfall_sink_f_impl::handle_pdus, this, _1));
++    set_msg_handler(pmt::mp("in"), [this](pmt::pmt_t msg) { this->handle_pdus(msg); });
+ }
+ 
+ waterfall_sink_f_impl::~waterfall_sink_f_impl()

diff --git a/net-wireless/gnuradio/files/gnuradio-3.8.2.0-lamda-gr-uhd.patch b/net-wireless/gnuradio/files/gnuradio-3.8.2.0-lamda-gr-uhd.patch
new file mode 100644
index 00000000000..56787372af0
--- /dev/null
+++ b/net-wireless/gnuradio/files/gnuradio-3.8.2.0-lamda-gr-uhd.patch
@@ -0,0 +1,98 @@
+From 591c2c16355eb065ff3f51f23d9d6026be188132 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Marcus=20M=C3=BCller?= <mmueller@gnuradio.org>
+Date: Sat, 22 Aug 2020 14:06:22 +0200
+Subject: [PATCH] msg_handler: Use lambdas in gr-uhd
+
+---
+ gr-uhd/lib/amsg_source_impl.cc |  3 +--
+ gr-uhd/lib/usrp_block_impl.cc  | 10 ++++++----
+ gr-uhd/lib/usrp_block_impl.h   |  1 -
+ gr-uhd/lib/usrp_source_impl.cc |  6 ++++--
+ 4 files changed, 11 insertions(+), 9 deletions(-)
+
+diff --git a/gr-uhd/lib/amsg_source_impl.cc b/gr-uhd/lib/amsg_source_impl.cc
+index 46d47a5826..e1de62e028 100644
+--- a/gr-uhd/lib/amsg_source_impl.cc
++++ b/gr-uhd/lib/amsg_source_impl.cc
+@@ -22,7 +22,6 @@
+ 
+ #include "amsg_source_impl.h"
+ #include "gr_uhd_common.h"
+-#include <boost/bind.hpp>
+ 
+ namespace gr {
+ namespace uhd {
+@@ -44,7 +43,7 @@ amsg_source_impl::amsg_source_impl(const ::uhd::device_addr_t& device_addr,
+     : _msgq(msgq), _running(true)
+ {
+     _dev = ::uhd::usrp::multi_usrp::make(device_addr);
+-    _amsg_thread = gr::thread::thread(boost::bind(&amsg_source_impl::recv_loop, this));
++    _amsg_thread = gr::thread::thread([this]() { this->recv_loop(); });
+ }
+ 
+ amsg_source_impl::~amsg_source_impl()
+diff --git a/gr-uhd/lib/usrp_block_impl.cc b/gr-uhd/lib/usrp_block_impl.cc
+index e5e1dd9161..8344809837 100644
+--- a/gr-uhd/lib/usrp_block_impl.cc
++++ b/gr-uhd/lib/usrp_block_impl.cc
+@@ -21,7 +21,7 @@
+  */
+ 
+ #include "usrp_block_impl.h"
+-#include <boost/make_shared.hpp>
++#include <functional>
+ 
+ using namespace gr::uhd;
+ 
+@@ -139,10 +139,11 @@ usrp_block_impl::usrp_block_impl(const ::uhd::device_addr_t& device_addr,
+     set_msg_handler(pmt::mp("command"),
+                     [this](pmt::pmt_t msg) { this->msg_handler_command(msg); });
+ 
+-// cuz we lazy:
++    // because we're highly efficient and adverse to work
++    namespace ph = std::placeholders;
+ #define REGISTER_CMD_HANDLER(key, _handler) \
+-    register_msg_cmd_handler(key,           \
+-                             boost::bind(&usrp_block_impl::_handler, this, _1, _2, _3))
++    register_msg_cmd_handler(               \
++        key, std::bind(&usrp_block_impl::_handler, this, ph::_1, ph::_2, ph::_3))
+     // Register default command handlers:
+     REGISTER_CMD_HANDLER(cmd_freq_key(), _cmd_handler_freq);
+     REGISTER_CMD_HANDLER(cmd_gain_key(), _cmd_handler_gain);
+@@ -153,6 +154,7 @@ usrp_block_impl::usrp_block_impl(const ::uhd::device_addr_t& device_addr,
+     REGISTER_CMD_HANDLER(cmd_rate_key(), _cmd_handler_rate);
+     REGISTER_CMD_HANDLER(cmd_bandwidth_key(), _cmd_handler_bw);
+     REGISTER_CMD_HANDLER(cmd_antenna_key(), _cmd_handler_antenna);
++#undef REGISTER_CMD_HANDLER
+ }
+ 
+ usrp_block_impl::~usrp_block_impl()
+diff --git a/gr-uhd/lib/usrp_block_impl.h b/gr-uhd/lib/usrp_block_impl.h
+index 1dbc3813bd..479b7dcd65 100644
+--- a/gr-uhd/lib/usrp_block_impl.h
++++ b/gr-uhd/lib/usrp_block_impl.h
+@@ -26,7 +26,6 @@
+ #include <gnuradio/uhd/usrp_block.h>
+ #include <pmt/pmt.h>
+ #include <uhd/usrp/multi_usrp.hpp>
+-#include <boost/bind.hpp>
+ #include <boost/dynamic_bitset.hpp>
+ 
+ 
+diff --git a/gr-uhd/lib/usrp_source_impl.cc b/gr-uhd/lib/usrp_source_impl.cc
+index a2ff0821bd..1e8ef020ab 100644
+--- a/gr-uhd/lib/usrp_source_impl.cc
++++ b/gr-uhd/lib/usrp_source_impl.cc
+@@ -57,8 +57,10 @@ usrp_source_impl::usrp_source_impl(const ::uhd::device_addr_t& device_addr,
+ 
+     _samp_rate = this->get_samp_rate();
+     _samps_per_packet = 1;
+-    register_msg_cmd_handler(cmd_tag_key(),
+-                             boost::bind(&usrp_source_impl::_cmd_handler_tag, this, _1));
++    register_msg_cmd_handler(
++        cmd_tag_key(), [this](const pmt::pmt_t& val, int chan, const pmt::pmt_t& msg) {
++            this->_cmd_handler_tag(val);
++        });
+ }
+ 
+ usrp_source_impl::~usrp_source_impl() {}

diff --git a/net-wireless/gnuradio/files/gnuradio-3.8.2.0-lamda-most-components.patch b/net-wireless/gnuradio/files/gnuradio-3.8.2.0-lamda-most-components.patch
new file mode 100644
index 00000000000..ea687a7ed87
--- /dev/null
+++ b/net-wireless/gnuradio/files/gnuradio-3.8.2.0-lamda-most-components.patch
@@ -0,0 +1,290 @@
+From c6e3632952bd3e86e4d8437d7619e7fececb524e Mon Sep 17 00:00:00 2001
+From: Johannes Demel <demel@ant.uni-bremen.de>
+Date: Sat, 9 May 2020 15:14:37 +0200
+Subject: [PATCH] msg_handler: Use lambdas in most components
+
+With this commit, all components except gr-qtgui use lambdas instead of
+`boost::bind` to register msg handlers.
+---
+ gr-digital/lib/chunks_to_symbols_impl.cc         |  6 ++----
+ gr-digital/lib/constellation_receiver_cb_impl.cc | 10 ++++------
+ gr-digital/lib/costas_loop_cc_impl.cc            |  2 +-
+ gr-digital/lib/crc32_async_bb_impl.cc            |  4 ++--
+ gr-digital/lib/header_payload_demux_impl.cc      |  5 ++---
+ gr-digital/lib/protocol_formatter_async_impl.cc  |  3 +--
+ gr-fec/lib/async_decoder_impl.cc                 |  5 ++---
+ gr-fec/lib/async_encoder_impl.cc                 |  5 ++---
+ gr-fec/lib/depuncture_bb_impl.cc                 |  2 +-
+ gr-fec/lib/puncture_bb_impl.cc                   |  2 +-
+ gr-fec/lib/puncture_ff_impl.cc                   |  2 +-
+ gr-filter/lib/freq_xlating_fir_filter_impl.cc    |  8 ++------
+ gr-filter/lib/mmse_resampler_cc_impl.cc          |  2 +-
+ gr-filter/lib/mmse_resampler_ff_impl.cc          |  2 +-
+ gr-uhd/lib/usrp_block_impl.cc                    |  2 +-
+ gr-zeromq/lib/pub_msg_sink_impl.cc               |  2 +-
+ gr-zeromq/lib/push_msg_sink_impl.cc              |  2 +-
+ 17 files changed, 26 insertions(+), 38 deletions(-)
+
+diff --git a/gr-digital/lib/chunks_to_symbols_impl.cc b/gr-digital/lib/chunks_to_symbols_impl.cc
+index 26d590a66e..c2cc99b0c8 100644
+--- a/gr-digital/lib/chunks_to_symbols_impl.cc
++++ b/gr-digital/lib/chunks_to_symbols_impl.cc
+@@ -51,10 +51,8 @@ chunks_to_symbols_impl<IN_T, OUT_T>::chunks_to_symbols_impl(
+       d_symbol_table(symbol_table)
+ {
+     this->message_port_register_in(pmt::mp("set_symbol_table"));
+-    this->set_msg_handler(
+-        pmt::mp("set_symbol_table"),
+-        boost::bind(
+-            &chunks_to_symbols_impl<IN_T, OUT_T>::handle_set_symbol_table, this, _1));
++    this->set_msg_handler(pmt::mp("set_symbol_table"),
++                          [this](pmt::pmt_t msg) { this->handle_set_symbol_table(msg); });
+ }
+ 
+ template <class IN_T, class OUT_T>
+diff --git a/gr-digital/lib/constellation_receiver_cb_impl.cc b/gr-digital/lib/constellation_receiver_cb_impl.cc
+index 7fb7559d5e..1c160ff1bb 100644
+--- a/gr-digital/lib/constellation_receiver_cb_impl.cc
++++ b/gr-digital/lib/constellation_receiver_cb_impl.cc
+@@ -61,14 +61,12 @@ constellation_receiver_cb_impl::constellation_receiver_cb_impl(
+             "This receiver only works with constellations of dimension 1.");
+ 
+     message_port_register_in(pmt::mp("set_constellation"));
+-    set_msg_handler(
+-        pmt::mp("set_constellation"),
+-        boost::bind(&constellation_receiver_cb_impl::handle_set_constellation, this, _1));
++    set_msg_handler(pmt::mp("set_constellation"),
++                    [this](pmt::pmt_t msg) { this->handle_set_constellation(msg); });
+ 
+     message_port_register_in(pmt::mp("rotate_phase"));
+-    set_msg_handler(
+-        pmt::mp("rotate_phase"),
+-        boost::bind(&constellation_receiver_cb_impl::handle_rotate_phase, this, _1));
++    set_msg_handler(pmt::mp("rotate_phase"),
++                    [this](pmt::pmt_t msg) { this->handle_rotate_phase(msg); });
+ }
+ 
+ constellation_receiver_cb_impl::~constellation_receiver_cb_impl() {}
+diff --git a/gr-digital/lib/costas_loop_cc_impl.cc b/gr-digital/lib/costas_loop_cc_impl.cc
+index c3b30834eb..b1a0e67caa 100644
+--- a/gr-digital/lib/costas_loop_cc_impl.cc
++++ b/gr-digital/lib/costas_loop_cc_impl.cc
+@@ -82,7 +82,7 @@ costas_loop_cc_impl::costas_loop_cc_impl(float loop_bw, int order, bool use_snr)
+ 
+     message_port_register_in(pmt::mp("noise"));
+     set_msg_handler(pmt::mp("noise"),
+-                    boost::bind(&costas_loop_cc_impl::handle_set_noise, this, _1));
++                    [this](pmt::pmt_t msg) { this->handle_set_noise(msg); });
+ }
+ 
+ costas_loop_cc_impl::~costas_loop_cc_impl() {}
+diff --git a/gr-digital/lib/crc32_async_bb_impl.cc b/gr-digital/lib/crc32_async_bb_impl.cc
+index bffbb2a737..230decc2ae 100644
+--- a/gr-digital/lib/crc32_async_bb_impl.cc
++++ b/gr-digital/lib/crc32_async_bb_impl.cc
+@@ -48,9 +48,9 @@ crc32_async_bb_impl::crc32_async_bb_impl(bool check)
+     message_port_register_out(d_out_port);
+ 
+     if (check)
+-        set_msg_handler(d_in_port, boost::bind(&crc32_async_bb_impl::check, this, _1));
++        set_msg_handler(d_in_port, [this](pmt::pmt_t msg) { this->check(msg); });
+     else
+-        set_msg_handler(d_in_port, boost::bind(&crc32_async_bb_impl::calc, this, _1));
++        set_msg_handler(d_in_port, [this](pmt::pmt_t msg) { this->calc(msg); });
+ }
+ 
+ crc32_async_bb_impl::~crc32_async_bb_impl() {}
+diff --git a/gr-digital/lib/header_payload_demux_impl.cc b/gr-digital/lib/header_payload_demux_impl.cc
+index 98c805fb20..5dc65f422b 100644
+--- a/gr-digital/lib/header_payload_demux_impl.cc
++++ b/gr-digital/lib/header_payload_demux_impl.cc
+@@ -150,9 +150,8 @@ header_payload_demux_impl::header_payload_demux_impl(
+     }
+     set_tag_propagation_policy(TPP_DONT);
+     message_port_register_in(msg_port_id());
+-    set_msg_handler(
+-        msg_port_id(),
+-        boost::bind(&header_payload_demux_impl::parse_header_data_msg, this, _1));
++    set_msg_handler(msg_port_id(),
++                    [this](pmt::pmt_t msg) { this->parse_header_data_msg(msg); });
+     for (size_t i = 0; i < special_tags.size(); i++) {
+         d_special_tags.push_back(pmt::string_to_symbol(special_tags[i]));
+         d_special_tags_last_value.push_back(pmt::PMT_NIL);
+diff --git a/gr-digital/lib/protocol_formatter_async_impl.cc b/gr-digital/lib/protocol_formatter_async_impl.cc
+index 84b693745d..08e324ecfb 100644
+--- a/gr-digital/lib/protocol_formatter_async_impl.cc
++++ b/gr-digital/lib/protocol_formatter_async_impl.cc
+@@ -54,8 +54,7 @@ protocol_formatter_async_impl::protocol_formatter_async_impl(
+     message_port_register_out(d_hdr_port);
+     message_port_register_out(d_pld_port);
+ 
+-    set_msg_handler(d_in_port,
+-                    boost::bind(&protocol_formatter_async_impl::append, this, _1));
++    set_msg_handler(d_in_port, [this](pmt::pmt_t msg) { this->append(msg); });
+ }
+ 
+ protocol_formatter_async_impl::~protocol_formatter_async_impl() {}
+diff --git a/gr-fec/lib/async_decoder_impl.cc b/gr-fec/lib/async_decoder_impl.cc
+index e7a668c832..c907b297a5 100644
+--- a/gr-fec/lib/async_decoder_impl.cc
++++ b/gr-fec/lib/async_decoder_impl.cc
+@@ -64,11 +64,10 @@ async_decoder_impl::async_decoder_impl(generic_decoder::sptr my_decoder,
+ 
+     if (d_packed) {
+         d_pack = new blocks::kernel::pack_k_bits(8);
+-        set_msg_handler(d_in_port,
+-                        boost::bind(&async_decoder_impl::decode_packed, this, _1));
++        set_msg_handler(d_in_port, [this](pmt::pmt_t msg) { this->decode_packed(msg); });
+     } else {
+         set_msg_handler(d_in_port,
+-                        boost::bind(&async_decoder_impl::decode_unpacked, this, _1));
++                        [this](pmt::pmt_t msg) { this->decode_unpacked(msg); });
+     }
+ 
+     // The maximum frame size is set by the initial frame size of the decoder.
+diff --git a/gr-fec/lib/async_encoder_impl.cc b/gr-fec/lib/async_encoder_impl.cc
+index 811d55601f..2e8fd62d12 100644
+--- a/gr-fec/lib/async_encoder_impl.cc
++++ b/gr-fec/lib/async_encoder_impl.cc
+@@ -63,8 +63,7 @@ async_encoder_impl::async_encoder_impl(generic_encoder::sptr my_encoder,
+     message_port_register_out(d_out_port);
+ 
+     if (d_packed) {
+-        set_msg_handler(d_in_port,
+-                        boost::bind(&async_encoder_impl::encode_packed, this, _1));
++        set_msg_handler(d_in_port, [this](pmt::pmt_t msg) { this->encode_packed(msg); });
+ 
+         d_unpack = new blocks::kernel::unpack_k_bits(8);
+ 
+@@ -74,7 +73,7 @@ async_encoder_impl::async_encoder_impl(generic_encoder::sptr my_encoder,
+ 
+     } else {
+         set_msg_handler(d_in_port,
+-                        boost::bind(&async_encoder_impl::encode_unpacked, this, _1));
++                        [this](pmt::pmt_t msg) { this->encode_unpacked(msg); });
+     }
+ 
+     if (d_packed || (strncmp(d_encoder->get_input_conversion(), "pack", 4) == 0)) {
+diff --git a/gr-fec/lib/depuncture_bb_impl.cc b/gr-fec/lib/depuncture_bb_impl.cc
+index 27d00bb5bb..59ed44dd8a 100644
+--- a/gr-fec/lib/depuncture_bb_impl.cc
++++ b/gr-fec/lib/depuncture_bb_impl.cc
+@@ -74,7 +74,7 @@ depuncture_bb_impl::depuncture_bb_impl(int puncsize, int puncpat, int delay, cha
+     set_fixed_rate(true);
+     set_relative_rate((uint64_t)d_puncsize, (uint64_t)(d_puncsize - d_puncholes));
+     set_output_multiple(d_puncsize);
+-    // set_msg_handler(boost::bind(&depuncture_bb_impl::catch_msg, this, _1));
++    // set_msg_handler(<portname>, [this](pmt::pmt_t msg) { this->catch_msg(msg); });
+ }
+ 
+ depuncture_bb_impl::~depuncture_bb_impl() {}
+diff --git a/gr-fec/lib/puncture_bb_impl.cc b/gr-fec/lib/puncture_bb_impl.cc
+index a365d6a69f..1f328c2214 100644
+--- a/gr-fec/lib/puncture_bb_impl.cc
++++ b/gr-fec/lib/puncture_bb_impl.cc
+@@ -72,7 +72,7 @@ puncture_bb_impl::puncture_bb_impl(int puncsize, int puncpat, int delay)
+     set_fixed_rate(true);
+     set_relative_rate((uint64_t)(d_puncsize - d_puncholes), (uint64_t)d_puncsize);
+     set_output_multiple(d_puncsize - d_puncholes);
+-    // set_msg_handler(boost::bind(&puncture_bb_impl::catch_msg, this, _1));
++    // set_msg_handler(<portname>, [this](pmt::pmt_t msg) { this->catch_msg(msg); });
+ }
+ 
+ puncture_bb_impl::~puncture_bb_impl() {}
+diff --git a/gr-fec/lib/puncture_ff_impl.cc b/gr-fec/lib/puncture_ff_impl.cc
+index c95288d691..31c686ea4c 100644
+--- a/gr-fec/lib/puncture_ff_impl.cc
++++ b/gr-fec/lib/puncture_ff_impl.cc
+@@ -72,7 +72,7 @@ puncture_ff_impl::puncture_ff_impl(int puncsize, int puncpat, int delay)
+     set_fixed_rate(true);
+     set_relative_rate((uint64_t)(d_puncsize - d_puncholes), (uint64_t)d_puncsize);
+     set_output_multiple(d_puncsize - d_puncholes);
+-    // set_msg_handler(boost::bind(&puncture_ff_impl::catch_msg, this, _1));
++    // set_msg_handler(<portname>, [this](pmt::pmt_t msg) { this->catch_msg(msg); });
+ }
+ 
+ puncture_ff_impl::~puncture_ff_impl() {}
+diff --git a/gr-filter/lib/freq_xlating_fir_filter_impl.cc b/gr-filter/lib/freq_xlating_fir_filter_impl.cc
+index 8ddc967ba1..1050fb82a5 100644
+--- a/gr-filter/lib/freq_xlating_fir_filter_impl.cc
++++ b/gr-filter/lib/freq_xlating_fir_filter_impl.cc
+@@ -67,12 +67,8 @@ freq_xlating_fir_filter_impl<IN_T, OUT_T, TAP_T>::freq_xlating_fir_filter_impl(
+     this->build_composite_fir();
+ 
+     this->message_port_register_in(pmt::mp("freq"));
+-    this->set_msg_handler(
+-        pmt::mp("freq"),
+-        boost::bind(
+-            &freq_xlating_fir_filter_impl<IN_T, OUT_T, TAP_T>::handle_set_center_freq,
+-            this,
+-            _1));
++    this->set_msg_handler(pmt::mp("freq"),
++                          [this](pmt::pmt_t msg) { this->handle_set_center_freq(msg); });
+ }
+ 
+ template <class IN_T, class OUT_T, class TAP_T>
+diff --git a/gr-filter/lib/mmse_resampler_cc_impl.cc b/gr-filter/lib/mmse_resampler_cc_impl.cc
+index 59f9eacfab..9ca62082ce 100644
+--- a/gr-filter/lib/mmse_resampler_cc_impl.cc
++++ b/gr-filter/lib/mmse_resampler_cc_impl.cc
+@@ -53,7 +53,7 @@ mmse_resampler_cc_impl::mmse_resampler_cc_impl(float phase_shift, float resamp_r
+     set_inverse_relative_rate(d_mu_inc);
+     message_port_register_in(pmt::intern("msg_in"));
+     set_msg_handler(pmt::intern("msg_in"),
+-                    boost::bind(&mmse_resampler_cc_impl::handle_msg, this, _1));
++                    [this](pmt::pmt_t msg) { this->handle_msg(msg); });
+ }
+ 
+ mmse_resampler_cc_impl::~mmse_resampler_cc_impl() { delete d_resamp; }
+diff --git a/gr-filter/lib/mmse_resampler_ff_impl.cc b/gr-filter/lib/mmse_resampler_ff_impl.cc
+index 342d9f7678..312a6a8755 100644
+--- a/gr-filter/lib/mmse_resampler_ff_impl.cc
++++ b/gr-filter/lib/mmse_resampler_ff_impl.cc
+@@ -54,7 +54,7 @@ mmse_resampler_ff_impl::mmse_resampler_ff_impl(float phase_shift, float resamp_r
+ 
+     message_port_register_in(pmt::intern("msg_in"));
+     set_msg_handler(pmt::intern("msg_in"),
+-                    boost::bind(&mmse_resampler_ff_impl::handle_msg, this, _1));
++                    [this](pmt::pmt_t msg) { this->handle_msg(msg); });
+ }
+ 
+ mmse_resampler_ff_impl::~mmse_resampler_ff_impl() { delete d_resamp; }
+diff --git a/gr-uhd/lib/usrp_block_impl.cc b/gr-uhd/lib/usrp_block_impl.cc
+index 4f030159ff..e5e1dd9161 100644
+--- a/gr-uhd/lib/usrp_block_impl.cc
++++ b/gr-uhd/lib/usrp_block_impl.cc
+@@ -137,7 +137,7 @@ usrp_block_impl::usrp_block_impl(const ::uhd::device_addr_t& device_addr,
+     // Set up message ports:
+     message_port_register_in(pmt::mp("command"));
+     set_msg_handler(pmt::mp("command"),
+-                    boost::bind(&usrp_block_impl::msg_handler_command, this, _1));
++                    [this](pmt::pmt_t msg) { this->msg_handler_command(msg); });
+ 
+ // cuz we lazy:
+ #define REGISTER_CMD_HANDLER(key, _handler) \
+diff --git a/gr-zeromq/lib/pub_msg_sink_impl.cc b/gr-zeromq/lib/pub_msg_sink_impl.cc
+index b5da7421ef..3973b8f835 100644
+--- a/gr-zeromq/lib/pub_msg_sink_impl.cc
++++ b/gr-zeromq/lib/pub_msg_sink_impl.cc
+@@ -62,7 +62,7 @@ pub_msg_sink_impl::pub_msg_sink_impl(char* address, int timeout, bool bind)
+     }
+ 
+     message_port_register_in(pmt::mp("in"));
+-    set_msg_handler(pmt::mp("in"), boost::bind(&pub_msg_sink_impl::handler, this, _1));
++    set_msg_handler(pmt::mp("in"), [this](pmt::pmt_t msg) { this->handler(msg); });
+ }
+ 
+ pub_msg_sink_impl::~pub_msg_sink_impl()
+diff --git a/gr-zeromq/lib/push_msg_sink_impl.cc b/gr-zeromq/lib/push_msg_sink_impl.cc
+index 4140781ab9..fee734753b 100644
+--- a/gr-zeromq/lib/push_msg_sink_impl.cc
++++ b/gr-zeromq/lib/push_msg_sink_impl.cc
+@@ -62,7 +62,7 @@ push_msg_sink_impl::push_msg_sink_impl(char* address, int timeout, bool bind)
+     }
+ 
+     message_port_register_in(pmt::mp("in"));
+-    set_msg_handler(pmt::mp("in"), boost::bind(&push_msg_sink_impl::handler, this, _1));
++    set_msg_handler(pmt::mp("in"), [this](pmt::pmt_t msg) { this->handler(msg); });
+ }
+ 
+ push_msg_sink_impl::~push_msg_sink_impl()

diff --git a/net-wireless/gnuradio/files/gnuradio-3.8.2.0-lamda-set-msg-handlers.patch b/net-wireless/gnuradio/files/gnuradio-3.8.2.0-lamda-set-msg-handlers.patch
new file mode 100644
index 00000000000..2d91fe2cce2
--- /dev/null
+++ b/net-wireless/gnuradio/files/gnuradio-3.8.2.0-lamda-set-msg-handlers.patch
@@ -0,0 +1,298 @@
+From 7c841011f9316d4aae068b444c995829e09278d7 Mon Sep 17 00:00:00 2001
+From: Johannes Demel <demel@ant.uni-bremen.de>
+Date: Sat, 9 May 2020 14:25:32 +0200
+Subject: [PATCH] msg_handler: Use lambdas to set msg handlers
+
+With this commit, all calls to `set_msg_handler` in `gr-blocks` use
+lambdas. This helps to use `std::function` instead of `boost::function`.
+---
+ gnuradio-runtime/lib/block.cc                       | 3 +--
+ gr-blocks/lib/copy_impl.cc                          | 2 +-
+ gr-blocks/lib/message_debug_impl.cc                 | 6 +++---
+ gr-blocks/lib/message_strobe_impl.cc                | 3 +--
+ gr-blocks/lib/message_strobe_random_impl.cc         | 3 +--
+ gr-blocks/lib/multiply_matrix_impl.cc               | 7 ++-----
+ gr-blocks/lib/mute_impl.cc                          | 2 +-
+ gr-blocks/lib/nop_impl.cc                           | 3 +--
+ gr-blocks/lib/pdu_filter_impl.cc                    | 2 +-
+ gr-blocks/lib/pdu_remove_impl.cc                    | 2 +-
+ gr-blocks/lib/pdu_set_impl.cc                       | 3 ++-
+ gr-blocks/lib/random_pdu_impl.cc                    | 2 +-
+ gr-blocks/lib/repeat_impl.cc                        | 2 +-
+ gr-blocks/lib/socket_pdu_impl.cc                    | 8 ++++----
+ gr-blocks/lib/tagged_stream_multiply_length_impl.cc | 5 ++---
+ gr-blocks/lib/tuntap_pdu_impl.cc                    | 2 +-
+ 16 files changed, 24 insertions(+), 31 deletions(-)
+
+diff --git a/gnuradio-runtime/lib/block.cc b/gnuradio-runtime/lib/block.cc
+index 5914283908..beec8c470c 100644
+--- a/gnuradio-runtime/lib/block.cc
++++ b/gnuradio-runtime/lib/block.cc
+@@ -61,9 +61,8 @@ block::block(const std::string& name,
+ {
+     global_block_registry.register_primitive(alias(), this);
+     message_port_register_in(d_system_port);
+-    set_msg_handler(d_system_port, boost::bind(&block::system_handler, this, _1));
+-
+     configure_default_loggers(d_logger, d_debug_logger, symbol_name());
++    set_msg_handler(d_system_port, [this](pmt::pmt_t msg) { this->system_handler(msg); });
+ }
+ 
+ block::~block() { global_block_registry.unregister_primitive(symbol_name()); }
+diff --git a/gr-blocks/lib/copy_impl.cc b/gr-blocks/lib/copy_impl.cc
+index c377e57b1e..4c97d07a76 100644
+--- a/gr-blocks/lib/copy_impl.cc
++++ b/gr-blocks/lib/copy_impl.cc
+@@ -44,7 +44,7 @@ copy_impl::copy_impl(size_t itemsize)
+       d_enabled(true)
+ {
+     message_port_register_in(pmt::mp("en"));
+-    set_msg_handler(pmt::mp("en"), boost::bind(&copy_impl::handle_enable, this, _1));
++    set_msg_handler(pmt::mp("en"), [this](pmt::pmt_t msg) { this->handle_enable(msg); });
+ }
+ 
+ copy_impl::~copy_impl() {}
+diff --git a/gr-blocks/lib/message_debug_impl.cc b/gr-blocks/lib/message_debug_impl.cc
+index a8c84aa509..719fbd818a 100644
+--- a/gr-blocks/lib/message_debug_impl.cc
++++ b/gr-blocks/lib/message_debug_impl.cc
+@@ -90,14 +90,14 @@ message_debug_impl::message_debug_impl()
+     : block("message_debug", io_signature::make(0, 0, 0), io_signature::make(0, 0, 0))
+ {
+     message_port_register_in(pmt::mp("print"));
+-    set_msg_handler(pmt::mp("print"), boost::bind(&message_debug_impl::print, this, _1));
++    set_msg_handler(pmt::mp("print"), [this](pmt::pmt_t msg) { this->print(msg); });
+ 
+     message_port_register_in(pmt::mp("store"));
+-    set_msg_handler(pmt::mp("store"), boost::bind(&message_debug_impl::store, this, _1));
++    set_msg_handler(pmt::mp("store"), [this](pmt::pmt_t msg) { this->store(msg); });
+ 
+     message_port_register_in(pmt::mp("print_pdu"));
+     set_msg_handler(pmt::mp("print_pdu"),
+-                    boost::bind(&message_debug_impl::print_pdu, this, _1));
++                    [this](pmt::pmt_t msg) { this->print_pdu(msg); });
+ }
+ 
+ message_debug_impl::~message_debug_impl() {}
+diff --git a/gr-blocks/lib/message_strobe_impl.cc b/gr-blocks/lib/message_strobe_impl.cc
+index 038eeae5a1..67a95be8f2 100644
+--- a/gr-blocks/lib/message_strobe_impl.cc
++++ b/gr-blocks/lib/message_strobe_impl.cc
+@@ -53,8 +53,7 @@ message_strobe_impl::message_strobe_impl(pmt::pmt_t msg, long period_ms)
+     message_port_register_out(d_port);
+ 
+     message_port_register_in(pmt::mp("set_msg"));
+-    set_msg_handler(pmt::mp("set_msg"),
+-                    boost::bind(&message_strobe_impl::set_msg, this, _1));
++    set_msg_handler(pmt::mp("set_msg"), [this](pmt::pmt_t msg) { this->set_msg(msg); });
+ }
+ 
+ message_strobe_impl::~message_strobe_impl() {}
+diff --git a/gr-blocks/lib/message_strobe_random_impl.cc b/gr-blocks/lib/message_strobe_random_impl.cc
+index 0ab5d6adc7..1b8deca952 100644
+--- a/gr-blocks/lib/message_strobe_random_impl.cc
++++ b/gr-blocks/lib/message_strobe_random_impl.cc
+@@ -74,8 +74,7 @@ message_strobe_random_impl::message_strobe_random_impl(
+         new gr::thread::thread(boost::bind(&message_strobe_random_impl::run, this)));
+ 
+     message_port_register_in(pmt::mp("set_msg"));
+-    set_msg_handler(pmt::mp("set_msg"),
+-                    boost::bind(&message_strobe_random_impl::set_msg, this, _1));
++    set_msg_handler(pmt::mp("set_msg"), [this](pmt::pmt_t msg) { this->set_msg(msg); });
+ }
+ 
+ long message_strobe_random_impl::next_delay()
+diff --git a/gr-blocks/lib/multiply_matrix_impl.cc b/gr-blocks/lib/multiply_matrix_impl.cc
+index e1b9c746c6..03e7894536 100644
+--- a/gr-blocks/lib/multiply_matrix_impl.cc
++++ b/gr-blocks/lib/multiply_matrix_impl.cc
+@@ -235,9 +235,7 @@ multiply_matrix_impl<gr_complex>::multiply_matrix_impl(
+ 
+     pmt::pmt_t port_name = pmt::string_to_symbol("set_A");
+     message_port_register_in(port_name);
+-    set_msg_handler(
+-        port_name,
+-        boost::bind(&multiply_matrix_impl<gr_complex>::msg_handler_A, this, _1));
++    set_msg_handler(port_name, [this](pmt::pmt_t msg) { this->msg_handler_A(msg); });
+ }
+ 
+ template <>
+@@ -256,8 +254,7 @@ multiply_matrix_impl<float>::multiply_matrix_impl(
+ 
+     pmt::pmt_t port_name = pmt::string_to_symbol("set_A");
+     message_port_register_in(port_name);
+-    set_msg_handler(port_name,
+-                    boost::bind(&multiply_matrix_impl<float>::msg_handler_A, this, _1));
++    set_msg_handler(port_name, [this](pmt::pmt_t msg) { this->msg_handler_A(msg); });
+ }
+ 
+ 
+diff --git a/gr-blocks/lib/mute_impl.cc b/gr-blocks/lib/mute_impl.cc
+index bd65ce2075..c9a1d200c8 100644
+--- a/gr-blocks/lib/mute_impl.cc
++++ b/gr-blocks/lib/mute_impl.cc
+@@ -48,7 +48,7 @@ mute_impl<T>::mute_impl(bool mute)
+ {
+     this->message_port_register_in(pmt::intern("set_mute"));
+     this->set_msg_handler(pmt::intern("set_mute"),
+-                          boost::bind(&mute_impl<T>::set_mute_pmt, this, _1));
++                          [this](pmt::pmt_t msg) { this->set_mute_pmt(msg); });
+ }
+ 
+ template <class T>
+diff --git a/gr-blocks/lib/nop_impl.cc b/gr-blocks/lib/nop_impl.cc
+index db216d97a4..4e1e887f42 100644
+--- a/gr-blocks/lib/nop_impl.cc
++++ b/gr-blocks/lib/nop_impl.cc
+@@ -26,7 +26,6 @@
+ 
+ #include "nop_impl.h"
+ #include <gnuradio/io_signature.h>
+-#include <boost/bind.hpp>
+ 
+ namespace gr {
+ namespace blocks {
+@@ -45,7 +44,7 @@ nop_impl::nop_impl(size_t sizeof_stream_item)
+     // Arrange to have count_received_msgs called when messages are received.
+     message_port_register_in(pmt::mp("port"));
+     set_msg_handler(pmt::mp("port"),
+-                    boost::bind(&nop_impl::count_received_msgs, this, _1));
++                    [this](pmt::pmt_t msg) { this->count_received_msgs(msg); });
+ }
+ 
+ nop_impl::~nop_impl() {}
+diff --git a/gr-blocks/lib/pdu_filter_impl.cc b/gr-blocks/lib/pdu_filter_impl.cc
+index b0748eec02..760027a78c 100644
+--- a/gr-blocks/lib/pdu_filter_impl.cc
++++ b/gr-blocks/lib/pdu_filter_impl.cc
+@@ -45,7 +45,7 @@ pdu_filter_impl::pdu_filter_impl(pmt::pmt_t k, pmt::pmt_t v, bool invert)
+     message_port_register_out(pdu::pdu_port_id());
+     message_port_register_in(pdu::pdu_port_id());
+     set_msg_handler(pdu::pdu_port_id(),
+-                    boost::bind(&pdu_filter_impl::handle_msg, this, _1));
++                    [this](pmt::pmt_t msg) { this->handle_msg(msg); });
+ }
+ 
+ void pdu_filter_impl::handle_msg(pmt::pmt_t pdu)
+diff --git a/gr-blocks/lib/pdu_remove_impl.cc b/gr-blocks/lib/pdu_remove_impl.cc
+index 19cc4dc76a..58277ca0d0 100644
+--- a/gr-blocks/lib/pdu_remove_impl.cc
++++ b/gr-blocks/lib/pdu_remove_impl.cc
+@@ -43,7 +43,7 @@ pdu_remove_impl::pdu_remove_impl(pmt::pmt_t k)
+     message_port_register_out(pdu::pdu_port_id());
+     message_port_register_in(pdu::pdu_port_id());
+     set_msg_handler(pdu::pdu_port_id(),
+-                    boost::bind(&pdu_remove_impl::handle_msg, this, _1));
++                    [this](pmt::pmt_t msg) { this->handle_msg(msg); });
+ }
+ 
+ void pdu_remove_impl::handle_msg(pmt::pmt_t pdu)
+diff --git a/gr-blocks/lib/pdu_set_impl.cc b/gr-blocks/lib/pdu_set_impl.cc
+index 40fbc3cd83..61f1bb1284 100644
+--- a/gr-blocks/lib/pdu_set_impl.cc
++++ b/gr-blocks/lib/pdu_set_impl.cc
+@@ -43,7 +43,8 @@ pdu_set_impl::pdu_set_impl(pmt::pmt_t k, pmt::pmt_t v)
+ {
+     message_port_register_out(pdu::pdu_port_id());
+     message_port_register_in(pdu::pdu_port_id());
+-    set_msg_handler(pdu::pdu_port_id(), boost::bind(&pdu_set_impl::handle_msg, this, _1));
++    set_msg_handler(pdu::pdu_port_id(),
++                    [this](pmt::pmt_t msg) { this->handle_msg(msg); });
+ }
+ 
+ void pdu_set_impl::handle_msg(pmt::pmt_t pdu)
+diff --git a/gr-blocks/lib/random_pdu_impl.cc b/gr-blocks/lib/random_pdu_impl.cc
+index 75d825aefa..5207a779d6 100644
+--- a/gr-blocks/lib/random_pdu_impl.cc
++++ b/gr-blocks/lib/random_pdu_impl.cc
+@@ -53,7 +53,7 @@ random_pdu_impl::random_pdu_impl(int min_items,
+     message_port_register_out(pdu::pdu_port_id());
+     message_port_register_in(pmt::mp("generate"));
+     set_msg_handler(pmt::mp("generate"),
+-                    boost::bind(&random_pdu_impl::generate_pdu, this, _1));
++                    [this](pmt::pmt_t msg) { this->generate_pdu(msg); });
+     if (length_modulo < 1)
+         throw std::runtime_error("length_module must be >= 1");
+     if (max_items < length_modulo)
+diff --git a/gr-blocks/lib/repeat_impl.cc b/gr-blocks/lib/repeat_impl.cc
+index 189fbc8948..7262b11a2e 100644
+--- a/gr-blocks/lib/repeat_impl.cc
++++ b/gr-blocks/lib/repeat_impl.cc
+@@ -45,7 +45,7 @@ repeat_impl::repeat_impl(size_t itemsize, int interp)
+ {
+     message_port_register_in(pmt::mp("interpolation"));
+     set_msg_handler(pmt::mp("interpolation"),
+-                    boost::bind(&repeat_impl::msg_set_interpolation, this, _1));
++                    [this](pmt::pmt_t msg) { this->msg_set_interpolation(msg); });
+ }
+ 
+ void repeat_impl::msg_set_interpolation(pmt::pmt_t msg)
+diff --git a/gr-blocks/lib/socket_pdu_impl.cc b/gr-blocks/lib/socket_pdu_impl.cc
+index df69f07ad2..edf572e76c 100644
+--- a/gr-blocks/lib/socket_pdu_impl.cc
++++ b/gr-blocks/lib/socket_pdu_impl.cc
+@@ -101,7 +101,7 @@ socket_pdu_impl::socket_pdu_impl(std::string type,
+         start_tcp_accept();
+ 
+         set_msg_handler(pdu::pdu_port_id(),
+-                        boost::bind(&socket_pdu_impl::tcp_server_send, this, _1));
++                        [this](pmt::pmt_t msg) { this->tcp_server_send(msg); });
+     } else if (type == "TCP_CLIENT") {
+         boost::system::error_code error = boost::asio::error::host_not_found;
+         d_tcp_socket.reset(new boost::asio::ip::tcp::socket(d_io_service));
+@@ -111,7 +111,7 @@ socket_pdu_impl::socket_pdu_impl(std::string type,
+         d_tcp_socket->set_option(boost::asio::ip::tcp::no_delay(d_tcp_no_delay));
+ 
+         set_msg_handler(pdu::pdu_port_id(),
+-                        boost::bind(&socket_pdu_impl::tcp_client_send, this, _1));
++                        [this](pmt::pmt_t msg) { this->tcp_client_send(msg); });
+ 
+         d_tcp_socket->async_read_some(
+             boost::asio::buffer(d_rxbuf),
+@@ -131,7 +131,7 @@ socket_pdu_impl::socket_pdu_impl(std::string type,
+                         boost::asio::placeholders::bytes_transferred));
+ 
+         set_msg_handler(pdu::pdu_port_id(),
+-                        boost::bind(&socket_pdu_impl::udp_send, this, _1));
++                        [this](pmt::pmt_t msg) { this->udp_send(msg); });
+     } else if (type == "UDP_CLIENT") {
+         d_udp_socket.reset(
+             new boost::asio::ip::udp::socket(d_io_service, d_udp_endpoint));
+@@ -144,7 +144,7 @@ socket_pdu_impl::socket_pdu_impl(std::string type,
+                         boost::asio::placeholders::bytes_transferred));
+ 
+         set_msg_handler(pdu::pdu_port_id(),
+-                        boost::bind(&socket_pdu_impl::udp_send, this, _1));
++                        [this](pmt::pmt_t msg) { this->udp_send(msg); });
+     } else
+         throw std::runtime_error("gr::blocks:socket_pdu: unknown socket type");
+ 
+diff --git a/gr-blocks/lib/tagged_stream_multiply_length_impl.cc b/gr-blocks/lib/tagged_stream_multiply_length_impl.cc
+index 30f4c46dc6..2266c01fe3 100644
+--- a/gr-blocks/lib/tagged_stream_multiply_length_impl.cc
++++ b/gr-blocks/lib/tagged_stream_multiply_length_impl.cc
+@@ -49,9 +49,8 @@ tagged_stream_multiply_length_impl::tagged_stream_multiply_length_impl(
+     set_tag_propagation_policy(TPP_DONT);
+     set_relative_rate(1, 1);
+     message_port_register_in(pmt::intern("set_scalar"));
+-    set_msg_handler(
+-        pmt::intern("set_scalar"),
+-        boost::bind(&tagged_stream_multiply_length_impl::set_scalar_pmt, this, _1));
++    set_msg_handler(pmt::intern("set_scalar"),
++                    [this](pmt::pmt_t msg) { this->set_scalar_pmt(msg); });
+ }
+ 
+ tagged_stream_multiply_length_impl::~tagged_stream_multiply_length_impl() {}
+diff --git a/gr-blocks/lib/tuntap_pdu_impl.cc b/gr-blocks/lib/tuntap_pdu_impl.cc
+index 4343ae1dc3..19742235d9 100644
+--- a/gr-blocks/lib/tuntap_pdu_impl.cc
++++ b/gr-blocks/lib/tuntap_pdu_impl.cc
+@@ -96,7 +96,7 @@ tuntap_pdu_impl::tuntap_pdu_impl(std::string dev, int MTU, bool istunflag)
+ 
+     // set up input message port
+     message_port_register_in(pdu::pdu_port_id());
+-    set_msg_handler(pdu::pdu_port_id(), boost::bind(&tuntap_pdu_impl::send, this, _1));
++    set_msg_handler(pdu::pdu_port_id(), [this](pmt::pmt_t msg) { this->send(msg); });
+ }
+ 
+ int tuntap_pdu_impl::tun_alloc(char* dev, int flags)

diff --git a/net-wireless/gnuradio/gnuradio-3.8.2.0.ebuild b/net-wireless/gnuradio/gnuradio-3.8.2.0.ebuild
index 43237bbd9cc..601ceea4ed9 100644
--- a/net-wireless/gnuradio/gnuradio-3.8.2.0.ebuild
+++ b/net-wireless/gnuradio/gnuradio-3.8.2.0.ebuild
@@ -114,6 +114,13 @@ DEPEND="${RDEPEND}
 	zeromq? ( net-libs/cppzmq )
 "
 
+PATCHES=(
+	"${FILESDIR}/gnuradio-3.8.2.0-lamda-gr-qtgui.patch"
+	"${FILESDIR}/gnuradio-3.8.2.0-lamda-gr-uhd.patch"
+	"${FILESDIR}/gnuradio-3.8.2.0-lamda-most-components.patch"
+	"${FILESDIR}/gnuradio-3.8.2.0-lamda-set-msg-handlers.patch"
+)
+
 src_prepare() {
 	xdg_environment_reset #534582
 


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: net-wireless/gnuradio/files/, net-wireless/gnuradio/
@ 2022-08-17 12:33 Thomas Beierlein
  0 siblings, 0 replies; 5+ messages in thread
From: Thomas Beierlein @ 2022-08-17 12:33 UTC (permalink / raw
  To: gentoo-commits

commit:     801713036d2f629e3fd6fae8b9e812a6038d9705
Author:     Huang Rui <vowstar <AT> gmail <DOT> com>
AuthorDate: Sun Aug  7 15:02:38 2022 +0000
Commit:     Thomas Beierlein <tomjbe <AT> gentoo <DOT> org>
CommitDate: Wed Aug 17 12:32:51 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=80171303

net-wireless/gnuradio: fix 3.10.3.0 build problems

Fix static assertion failed : Cannot format an argument
Fix error: ‘HUGE_VAL’ was not declared in this scope

Signed-off-by: Huang Rui <vowstar <AT> gmail.com>
Closes: https://bugs.gentoo.org/858659
Closes: https://bugs.gentoo.org/858665
Closes: https://github.com/gentoo/gentoo/pull/26775
Signed-off-by: Thomas Beierlein <tomjbe <AT> gentoo.org>

 .../files/gnuradio-3.10.3.0-fix-fmt-v9.patch       | 145 +++++++++++++++++++++
 .../files/gnuradio-3.10.3.0-fix-gcc12.patch        |  50 +++++++
 net-wireless/gnuradio/gnuradio-3.10.3.0.ebuild     |   5 +
 3 files changed, 200 insertions(+)

diff --git a/net-wireless/gnuradio/files/gnuradio-3.10.3.0-fix-fmt-v9.patch b/net-wireless/gnuradio/files/gnuradio-3.10.3.0-fix-fmt-v9.patch
new file mode 100644
index 000000000000..7b17021213d8
--- /dev/null
+++ b/net-wireless/gnuradio/files/gnuradio-3.10.3.0-fix-fmt-v9.patch
@@ -0,0 +1,145 @@
+From e63ee41fd455cdd39ae983c258d8632c3ea57fc6 Mon Sep 17 00:00:00 2001
+From: Huang Rui <vowstar@gmail.com>
+Date: Sun, 7 Aug 2022 22:06:30 +0800
+Subject: [PATCH] Fix build failures with libfmt-9.0.0
+
+libfmt-9.0.0 require explicit tagging of ARG types. This commit
+adds those tags for the types that are currently formatted via fmt.
+
+Bug: https://bugs.gentoo.org/858659
+Closes: https://github.com/gnuradio/gnuradio/issues/6052
+Signed-off-by: Huang Rui <vowstar@gmail.com>
+---
+ gnuradio-runtime/lib/flat_flowgraph.cc     | 25 ++++++++++++++++++++++
+ gnuradio-runtime/lib/flowgraph.cc          | 10 +++++++++
+ gnuradio-runtime/lib/hier_block2_detail.cc | 19 ++++++++++++++++
+ gr-analog/lib/sig_source_impl.cc           | 10 +++++++++
+ gr-uhd/lib/usrp_block_impl.cc              |  7 ++++++
+ 5 files changed, 71 insertions(+)
+
+diff --git a/gnuradio-runtime/lib/flat_flowgraph.cc b/gnuradio-runtime/lib/flat_flowgraph.cc
+index 42875fb4c32..ac7c8ce9109 100644
+--- a/gnuradio-runtime/lib/flat_flowgraph.cc
++++ b/gnuradio-runtime/lib/flat_flowgraph.cc
+@@ -25,6 +25,31 @@
+ #include <map>
+ #include <numeric>
+ 
++#if FMT_VERSION >= 90000
++#include <fmt/ostream.h>
++template <>
++struct fmt::formatter<gr::edge> : ostream_formatter {
++};
++template <>
++struct fmt::formatter<gr::msg_endpoint> : ostream_formatter {
++};
++template <>
++struct fmt::formatter<std::shared_ptr<gr::basic_block>> : ostream_formatter {
++};
++template <>
++struct fmt::formatter<std::shared_ptr<gr::block_detail>> : ostream_formatter {
++};
++template <>
++struct fmt::formatter<std::shared_ptr<gr::buffer_reader>> : ostream_formatter {
++};
++template <>
++struct fmt::formatter<std::shared_ptr<gr::buffer>> : ostream_formatter {
++};
++template <>
++struct fmt::formatter<std::shared_ptr<pmt::pmt_base>> : ostream_formatter {
++};
++#endif // FMT_VERSION >= 90000
++
+ namespace gr {
+ 
+ 
+diff --git a/gnuradio-runtime/lib/flowgraph.cc b/gnuradio-runtime/lib/flowgraph.cc
+index 0bc04adc22c..6c63b834a89 100644
+--- a/gnuradio-runtime/lib/flowgraph.cc
++++ b/gnuradio-runtime/lib/flowgraph.cc
+@@ -20,6 +20,16 @@
+ // TODO: Replace with GNU Radio logging
+ #include <iostream>
+ 
++#if FMT_VERSION >= 90000
++#include <fmt/ostream.h>
++template <>
++struct fmt::formatter<std::shared_ptr<gr::basic_block>> : ostream_formatter {
++};
++template <>
++struct fmt::formatter<std::shared_ptr<pmt::pmt_base>> : ostream_formatter {
++};
++#endif // FMT_VERSION >= 90000
++
+ namespace gr {
+ 
+ edge::~edge() {}
+diff --git a/gnuradio-runtime/lib/hier_block2_detail.cc b/gnuradio-runtime/lib/hier_block2_detail.cc
+index 5cb42030dca..d3e27aee5b4 100644
+--- a/gnuradio-runtime/lib/hier_block2_detail.cc
++++ b/gnuradio-runtime/lib/hier_block2_detail.cc
+@@ -22,6 +22,25 @@
+ // TODO: Replace with GNU Radio logging
+ #include <iostream>
+ 
++#if FMT_VERSION >= 90000
++#include <fmt/ostream.h>
++template <>
++struct fmt::formatter<gr::edge> : ostream_formatter {
++};
++template <>
++struct fmt::formatter<gr::endpoint> : ostream_formatter {
++};
++template <>
++struct fmt::formatter<gr::msg_endpoint> : ostream_formatter {
++};
++template <>
++struct fmt::formatter<std::shared_ptr<gr::basic_block>> : ostream_formatter {
++};
++template <>
++struct fmt::formatter<std::shared_ptr<pmt::pmt_base>> : ostream_formatter {
++};
++#endif // FMT_VERSION >= 90000
++
+ namespace gr {
+ 
+ hier_block2_detail::hier_block2_detail(hier_block2* owner)
+diff --git a/gr-analog/lib/sig_source_impl.cc b/gr-analog/lib/sig_source_impl.cc
+index 0e1db81648a..afa6d779cb0 100644
+--- a/gr-analog/lib/sig_source_impl.cc
++++ b/gr-analog/lib/sig_source_impl.cc
+@@ -21,6 +21,16 @@
+ #include <algorithm>
+ #include <stdexcept>
+ 
++#if FMT_VERSION >= 90000
++#include <fmt/ostream.h>
++template <>
++struct fmt::formatter<std::shared_ptr<pmt::pmt_base>> : ostream_formatter {
++};
++template <>
++struct fmt::formatter<gr::analog::gr_waveform_t&> : ostream_formatter {
++};
++#endif // FMT_VERSION >= 90000
++
+ namespace gr {
+ namespace analog {
+ 
+diff --git a/gr-uhd/lib/usrp_block_impl.cc b/gr-uhd/lib/usrp_block_impl.cc
+index cb6dccfcdea..b11b82a9e70 100644
+--- a/gr-uhd/lib/usrp_block_impl.cc
++++ b/gr-uhd/lib/usrp_block_impl.cc
+@@ -12,6 +12,13 @@
+ #include <chrono>
+ #include <thread>
+ 
++#if FMT_VERSION >= 90000
++#include <fmt/ostream.h>
++template <>
++struct fmt::formatter<std::shared_ptr<pmt::pmt_base>> : ostream_formatter {
++};
++#endif // FMT_VERSION >= 90000
++
+ using namespace gr::uhd;
+ using namespace std::chrono_literals;
+ 

diff --git a/net-wireless/gnuradio/files/gnuradio-3.10.3.0-fix-gcc12.patch b/net-wireless/gnuradio/files/gnuradio-3.10.3.0-fix-gcc12.patch
new file mode 100644
index 000000000000..5db69aa60a75
--- /dev/null
+++ b/net-wireless/gnuradio/files/gnuradio-3.10.3.0-fix-gcc12.patch
@@ -0,0 +1,50 @@
+From 9bf18900418e1d16e30072765bff1cbffdf8c0a9 Mon Sep 17 00:00:00 2001
+From: danielnachun <daniel.nachun@gmail.com>
+Date: Fri, 8 Jul 2022 12:53:47 -0700
+Subject: [PATCH] add missing includes
+
+Signed-off-by: danielnachun <daniel.nachun@gmail.com>
+---
+ gr-qtgui/lib/FrequencyDisplayPlot.cc | 2 +-
+ gr-qtgui/lib/VectorDisplayPlot.cc    | 2 ++
+ gr-qtgui/lib/WaterfallDisplayPlot.cc | 1 +
+ 3 files changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/gr-qtgui/lib/FrequencyDisplayPlot.cc b/gr-qtgui/lib/FrequencyDisplayPlot.cc
+index f6f673e7ec6..2171f26e7d8 100644
+--- a/gr-qtgui/lib/FrequencyDisplayPlot.cc
++++ b/gr-qtgui/lib/FrequencyDisplayPlot.cc
+@@ -16,7 +16,7 @@
+ #include <gnuradio/qtgui/qtgui_types.h>
+ #include <qwt_scale_draw.h>
+ #include <QColor>
+-
++#include <cmath>
+ 
+ /***********************************************************************
+  * Widget to provide mouse pointer coordinate text
+diff --git a/gr-qtgui/lib/VectorDisplayPlot.cc b/gr-qtgui/lib/VectorDisplayPlot.cc
+index d5c2ecc27e5..2e5f3f422b9 100644
+--- a/gr-qtgui/lib/VectorDisplayPlot.cc
++++ b/gr-qtgui/lib/VectorDisplayPlot.cc
+@@ -25,6 +25,8 @@
+ #include <qwt_legend_label.h>
+ #endif /* QWT_VERSION < 0x060100 */
+ 
++#include <cmath>
++
+ /***********************************************************************
+  * Widget to provide mouse pointer coordinate text
+  **********************************************************************/
+diff --git a/gr-qtgui/lib/WaterfallDisplayPlot.cc b/gr-qtgui/lib/WaterfallDisplayPlot.cc
+index 69d82fdae86..d999fe046da 100644
+--- a/gr-qtgui/lib/WaterfallDisplayPlot.cc
++++ b/gr-qtgui/lib/WaterfallDisplayPlot.cc
+@@ -28,6 +28,7 @@
+ #endif /* QWT_VERSION < 0x060100 */
+ 
+ #include <QDebug>
++#include <cmath>
+ 
+ /***********************************************************************
+  * Text scale widget to provide Y (time) axis text

diff --git a/net-wireless/gnuradio/gnuradio-3.10.3.0.ebuild b/net-wireless/gnuradio/gnuradio-3.10.3.0.ebuild
index 87023a4ce0be..f9e22ca10894 100644
--- a/net-wireless/gnuradio/gnuradio-3.10.3.0.ebuild
+++ b/net-wireless/gnuradio/gnuradio-3.10.3.0.ebuild
@@ -130,6 +130,11 @@ DEPEND="${RDEPEND}
 	zeromq? ( net-libs/cppzmq )
 "
 
+PATCHES=(
+	"${FILESDIR}/${PN}-3.10.3.0-fix-fmt-v9.patch" #858659
+	"${FILESDIR}/${PN}-3.10.3.0-fix-gcc12.patch" #858665
+)
+
 src_prepare() {
 	xdg_environment_reset #534582
 


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: net-wireless/gnuradio/files/, net-wireless/gnuradio/
@ 2022-10-22  8:10 Thomas Beierlein
  0 siblings, 0 replies; 5+ messages in thread
From: Thomas Beierlein @ 2022-10-22  8:10 UTC (permalink / raw
  To: gentoo-commits

commit:     15c69a630577d3a7e84cf8180d75f7a6be49acce
Author:     Thomas Beierlein <tomjbe <AT> gentoo <DOT> org>
AuthorDate: Sat Oct 22 08:09:57 2022 +0000
Commit:     Thomas Beierlein <tomjbe <AT> gentoo <DOT> org>
CommitDate: Sat Oct 22 08:09:57 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=15c69a63

net-wireless/gnuradio: add 3.10.4.0

Signed-off-by: Thomas Beierlein <tomjbe <AT> gentoo.org>

 net-wireless/gnuradio/Manifest                     |   1 +
 .../gnuradio-3.10.4.0-fix-blockinterleaving.patch  |  26 +++
 net-wireless/gnuradio/gnuradio-3.10.4.0.ebuild     | 248 +++++++++++++++++++++
 3 files changed, 275 insertions(+)

diff --git a/net-wireless/gnuradio/Manifest b/net-wireless/gnuradio/Manifest
index 8c0e375821c2..1acde078ff8f 100644
--- a/net-wireless/gnuradio/Manifest
+++ b/net-wireless/gnuradio/Manifest
@@ -1,2 +1,3 @@
 DIST gnuradio-3.10.3.0.tar.gz 4376594 BLAKE2B 676c16dda6c4b01ca922fe942e1572653c57dd8f6240ad74af2b10351470ad53ecc5c4a7347e04cb1c898388c48f561f7871c39140f77c50f9217963355793a6 SHA512 fe4cd2204257b65129f148bbdd6a1c192559b8824a131bd99cc2ac854e1880ee4fa07b702170452b3b6070df34d99db27ef0fe064c50e6e5a6335e61e38e6645
+DIST gnuradio-3.10.4.0.tar.gz 4392284 BLAKE2B 2a5766708534966bcea1e1ab57ae703b0b453278da5042c65ddcf5bda39dee084ee8f77d414e2c8ab3eae2397680f7591c456404a6cefc08b28a7d1f5d25534d SHA512 a8690016513df3928cb2f63eef190c7306bc3cc452dfeafab2e47b43aa1dd3f61515df49832e99530535f94deabfb614388a27212b09e1c816782f3fdd4915eb
 DIST gnuradio-3.8.5.0.tar.gz 3399660 BLAKE2B 19e3eecb40d7cdafe6fe551d3d36c0fcd34bb92ceb316537f4ebdc1c90d3c649daa1383f3642e2f64bba23026ed6638168fa77da0f21db03330b066e3108c880 SHA512 9b367c8afeb278b90e8ddd835e0ba301f07a53da26791e74913c812bde251daaa8f9611f21969938b215c9a110c9e69dfb6ec8b6d0db9c64013707c57596819a

diff --git a/net-wireless/gnuradio/files/gnuradio-3.10.4.0-fix-blockinterleaving.patch b/net-wireless/gnuradio/files/gnuradio-3.10.4.0-fix-blockinterleaving.patch
new file mode 100644
index 000000000000..b2c8270338c5
--- /dev/null
+++ b/net-wireless/gnuradio/files/gnuradio-3.10.4.0-fix-blockinterleaving.patch
@@ -0,0 +1,26 @@
+diff --git a/gr-blocks/include/gnuradio/blocks/blockinterleaving.h b/gr-blocks/include/gnuradio/blocks/blockinterleaving.h
+index 9d4e0f2..f6b8bc6 100644
+--- a/gr-blocks/include/gnuradio/blocks/blockinterleaving.h
++++ b/gr-blocks/include/gnuradio/blocks/blockinterleaving.h
+@@ -12,7 +12,8 @@
+ #define INCLUDED_GR_BLOCKS_BLOCKINTERLEAVING_H
+ 
+ #include <gnuradio/blocks/api.h>
+-
++#include <cstddef>
++#include <vector>
+ 
+ namespace gr {
+ namespace blocks {
+diff --git a/gr-blocks/lib/blockinterleaving.cc b/gr-blocks/lib/blockinterleaving.cc
+index fc5873e..768ad9e 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 {

diff --git a/net-wireless/gnuradio/gnuradio-3.10.4.0.ebuild b/net-wireless/gnuradio/gnuradio-3.10.4.0.ebuild
new file mode 100644
index 000000000000..85f8829152e8
--- /dev/null
+++ b/net-wireless/gnuradio/gnuradio-3.10.4.0.ebuild
@@ -0,0 +1,248 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+PYTHON_COMPAT=( python3_{8..10} )
+
+CMAKE_BUILD_TYPE="None"
+inherit cmake python-single-r1 virtualx xdg-utils
+
+DESCRIPTION="Toolkit that provides signal processing blocks to implement software radios"
+HOMEPAGE="https://www.gnuradio.org/"
+LICENSE="GPL-3"
+SLOT="0/${PV}"
+
+if [[ ${PV} =~ "9999" ]]; then
+	EGIT_REPO_URI="https://github.com/gnuradio/gnuradio.git"
+	EGIT_BRANCH="maint-3.10"
+	inherit git-r3
+else
+	SRC_URI="https://github.com/gnuradio/gnuradio/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
+	KEYWORDS="~amd64 ~riscv ~x86"
+fi
+
+IUSE="+audio +alsa +analog +digital channels ctrlport doc dtv examples fec +filter grc iio jack modtool network oss performance-counters portaudio +qt5 sdl soapy test trellis uhd vocoder +utils wavelet zeromq"
+
+#RESTRICT="!test? ( test )"
+#Tests are known broken right now
+RESTRICT="test"
+
+REQUIRED_USE="${PYTHON_REQUIRED_USE}
+	audio? ( || ( alsa oss jack portaudio ) )
+	alsa? ( audio )
+	jack? ( audio )
+	oss? ( audio )
+	portaudio? ( audio )
+	analog? ( filter )
+	channels? ( filter analog qt5 )
+	digital? ( filter analog )
+	dtv? ( filter analog fec )
+	modtool? ( utils )
+	qt5? ( filter )
+	trellis? ( analog digital )
+	uhd? ( filter analog )
+	vocoder? ( filter analog )
+	wavelet? ( analog )
+"
+
+RDEPEND="${PYTHON_DEPS}
+	$(python_gen_cond_dep 'dev-libs/boost:=[python,${PYTHON_USEDEP}]')
+	dev-libs/log4cpp:=
+	$(python_gen_cond_dep 'dev-python/six[${PYTHON_USEDEP}]')
+	$(python_gen_cond_dep 'dev-python/jsonschema[${PYTHON_USEDEP}]')
+	dev-libs/spdlog
+	dev-libs/libfmt:=
+	sci-libs/fftw:3.0=
+	sci-libs/mpir:=
+	sci-libs/volk:=
+	media-libs/libsndfile
+	sys-libs/libunwind
+	alsa? ( media-libs/alsa-lib:= )
+	ctrlport? (
+		$(python_gen_cond_dep 'dev-python/thrift[${PYTHON_USEDEP}]')
+	)
+	fec? (
+		sci-libs/gsl:=
+		dev-python/scipy
+	)
+	filter? (
+		dev-python/scipy
+		$(python_gen_cond_dep 'dev-python/pyqtgraph[${PYTHON_USEDEP}]')
+	)
+	grc? (
+		$(python_gen_cond_dep 'dev-python/mako[${PYTHON_USEDEP}]
+		dev-python/numpy[${PYTHON_USEDEP}]
+		dev-python/pygobject:3[${PYTHON_USEDEP}]
+		dev-python/pyyaml[${PYTHON_USEDEP}]')
+		x11-libs/gtk+:3[introspection]
+		x11-libs/pango[introspection]
+	)
+	iio? (
+		net-libs/libiio:=
+		net-libs/libad9361-iio:=
+		!net-wireless/gr-iio
+	)
+	jack? ( virtual/jack )
+	portaudio? ( >=media-libs/portaudio-19_pre )
+	qt5? (
+		$(python_gen_cond_dep 'dev-python/PyQt5[opengl,${PYTHON_USEDEP}]')
+		dev-qt/qtcore:5
+		dev-qt/qtgui:5
+		x11-libs/qwt:6[qt5(+)]
+		dev-qt/qtwidgets:5
+	)
+	soapy? (
+		$(python_gen_cond_dep 'net-wireless/soapysdr[${PYTHON_USEDEP}]')
+	)
+	sdl? ( >=media-libs/libsdl-1.2.0 )
+	trellis? ( dev-python/scipy )
+	uhd? (
+		$(python_gen_cond_dep '>=net-wireless/uhd-3.9.6:=[${PYTHON_SINGLE_USEDEP}]')
+	)
+	utils? (
+		$(python_gen_cond_dep 'dev-python/click[${PYTHON_USEDEP}]
+		dev-python/click-plugins[${PYTHON_USEDEP}]
+		dev-python/mako[${PYTHON_USEDEP}]
+		dev-python/matplotlib[${PYTHON_USEDEP}]')
+	)
+	vocoder? (
+		media-sound/gsm
+		>=media-libs/codec2-0.8.1:=
+	)
+	wavelet? (
+		sci-libs/gsl:=
+		dev-libs/gmp:=
+		sci-libs/lapack
+	)
+	zeromq? ( >=net-libs/zeromq-2.1.11:= )
+"
+
+DEPEND="${RDEPEND}
+	app-text/docbook-xml-dtd:4.2
+	$(python_gen_cond_dep 'dev-python/pybind11[${PYTHON_USEDEP}]')
+	$(python_gen_cond_dep 'dev-python/pygccxml[${PYTHON_USEDEP}]')
+	virtual/pkgconfig
+	doc? (
+		>=app-doc/doxygen-1.5.7.1
+		dev-libs/mathjax
+	)
+	grc? ( x11-misc/xdg-utils )
+	oss? ( virtual/os-headers )
+	test? ( >=dev-util/cppunit-1.9.14 )
+	zeromq? ( net-libs/cppzmq )
+"
+
+PATCHES=(
+	"${FILESDIR}/${PN}-3.10.3.0-fix-fmt-v9.patch" #858659
+	"${FILESDIR}/${PN}-3.10.4.0-fix-blockinterleaving.patch"
+)
+
+src_prepare() {
+	xdg_environment_reset #534582
+
+	use !alsa && sed -i 's#version.h#version-nonexistent.h#' cmake/Modules/FindALSA.cmake
+	use !jack && sed -i 's#jack.h#jack-nonexistent.h#' cmake/Modules/FindJACK.cmake
+	use !oss && sed -i 's#soundcard.h#oss-nonexistent.h#g' cmake/Modules/FindOSS.cmake
+	use !portaudio && sed -i 's#portaudio.h#portaudio-nonexistent.h#g' cmake/Modules/FindPORTAUDIO.cmake
+
+	cmake_src_prepare
+}
+
+src_configure() {
+	mycmakeargs=(
+		-DENABLE_DEFAULT=OFF
+		-DENABLE_GNURADIO_RUNTIME=ON
+		-DENABLE_PYTHON=ON
+		-DENABLE_GR_BLOCKS=ON
+		-DENABLE_GR_ANALOG="$(usex analog)"
+		-DENABLE_GR_AUDIO=ON
+		-DENABLE_GR_CHANNELS="$(usex channels)"
+		-DENABLE_GR_CTRLPORT="$(usex ctrlport)"
+		-DENABLE_GR_DIGITAL="$(usex digital)"
+		-DENABLE_DOXYGEN="$(usex doc)"
+		-DENABLE_GR_DTV="$(usex dtv)"
+		-DENABLE_GR_FEC="$(usex fec)"
+		-DENABLE_GR_FFT=ON
+		-DENABLE_GR_FILTER="$(usex filter)"
+		-DENABLE_GRC="$(usex grc)"
+		-DENABLE_GR_IIO="$(usex iio)"
+		-DENABLE_GR_MODTOOL="$(usex modtool)"
+		-DENABLE_GR_BLOCKTOOL="$(usex modtool)"
+		-DENABLE_GR_NETWORK="$(usex network)"
+		-DENABLE_GR_PDU=ON
+		-DENABLE_PERFORMANCE_COUNTERS="$(usex performance-counters)"
+		-DENABLE_TESTING="$(usex test)"
+		-DENABLE_GR_QTGUI="$(usex qt5)"
+		-DENABLE_GR_SOAPY="$(usex soapy)"
+		-DENABLE_GR_TRELLIS="$(usex trellis)"
+		-DENABLE_GR_UHD="$(usex uhd)"
+		-DENABLE_GR_UTILS="$(usex utils)"
+		-DENABLE_GR_VIDEO_SDL="$(usex sdl)"
+		-DENABLE_GR_VOCODER="$(usex vocoder)"
+		-DENABLE_GR_WAVELET="$(usex wavelet)"
+		-DENABLE_GR_ZEROMQ="$(usex zeromq)"
+		-DSYSCONFDIR="${EPREFIX}"/etc
+		-DPYTHON_EXECUTABLE="${PYTHON}"
+		-DGR_PYTHON_DIR="$(python_get_sitedir)"
+		-DGR_PKG_DOC_DIR="${EPREFIX}/usr/share/doc/${PF}"
+		-DMATHJAX2_ROOT="${EPREFIX}/usr/share/mathjax"
+	)
+	cmake_src_configure
+}
+
+src_install() {
+	cmake_src_install
+
+	if use examples ; then
+		dodir /usr/share/doc/${PF}/
+		mv "${ED}"/usr/share/${PN}/examples "${ED}"/usr/share/doc/${PF}/ || die
+		docompress -x /usr/share/doc/${PF}/examples
+	else
+	# It seems that the examples are always installed
+		rm -rf "${ED}"/usr/share/${PN}/examples || die
+	fi
+
+	if use doc || use examples; then
+		#this doesn't appear useful
+		rm -rf "${ED}"/usr/share/doc/${PF}/xml || die
+	fi
+
+	# Remove duplicated icons, MIME and desktop files and installation script
+	rm -rf "${ED}"/usr/share/${PN}/grc/freedesktop || die
+	rm -f "${ED}"/usr/libexec/${PN}/grc_setup_freedesktop || die
+
+	# Install icons, menu items and mime-types for GRC
+	#if use grc ; then
+	#	local fd_path="${S}/grc/scripts/freedesktop"
+	#	insinto /usr/share/mime/packages
+	#	doins "${fd_path}/${PN}-grc.xml"
+
+	#	domenu "${fd_path}/"*.desktop
+	#	doicon "${fd_path}/"*.png
+	#fi
+
+	python_fix_shebang "${ED}"
+	# Remove incorrectly byte-compiled Python files and replace
+	find "${ED}"/usr/lib* -name "*.py[co]" -exec rm {} \; || die
+	python_optimize
+}
+
+src_test() {
+	virtx cmake_src_test
+}
+
+pkg_postinst() {
+	if use grc ; then
+		xdg_desktop_database_update
+		xdg_icon_cache_update
+		xdg_mimeinfo_database_update
+	fi
+}
+
+pkg_postrm() {
+	if use grc ; then
+		xdg_desktop_database_update
+		xdg_icon_cache_update
+		xdg_mimeinfo_database_update
+	fi
+}


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: net-wireless/gnuradio/files/, net-wireless/gnuradio/
@ 2024-01-25  3:40 Rick Farina
  0 siblings, 0 replies; 5+ messages in thread
From: Rick Farina @ 2024-01-25  3:40 UTC (permalink / raw
  To: gentoo-commits

commit:     668954e8975de950a0b7efaab0572eadbf1902ae
Author:     Rick Farina <zerochaos <AT> gentoo <DOT> org>
AuthorDate: Thu Jan 25 03:39:40 2024 +0000
Commit:     Rick Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Thu Jan 25 03:40:33 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=668954e8

net-wireless/gnuradio: add filter bugfix

Found by re-enabling tests, which I'm now sharing with everyone
Signed-off-by: Rick Farina <zerochaos <AT> gentoo.org>

 net-wireless/gnuradio/files/PR7093.patch           | 76 ++++++++++++++++++++++
 ...3.10.9.2.ebuild => gnuradio-3.10.9.2-r1.ebuild} |  8 +--
 net-wireless/gnuradio/gnuradio-9999.ebuild         |  6 +-
 3 files changed, 82 insertions(+), 8 deletions(-)

diff --git a/net-wireless/gnuradio/files/PR7093.patch b/net-wireless/gnuradio/files/PR7093.patch
new file mode 100644
index 000000000000..98581054d49d
--- /dev/null
+++ b/net-wireless/gnuradio/files/PR7093.patch
@@ -0,0 +1,76 @@
+From 677d22b5226a3edb274c252cc3aa727a16de3c68 Mon Sep 17 00:00:00 2001
+From: Clayton Smith <argilo@gmail.com>
+Date: Tue, 23 Jan 2024 18:28:46 -0500
+Subject: [PATCH] filter: Fix undefined behaviour in fir_filter_with_buffer
+
+Signed-off-by: Clayton Smith <argilo@gmail.com>
+---
+ gr-filter/lib/fir_filter_with_buffer.cc    | 9 ++++++---
+ gr-filter/lib/qa_fir_filter_with_buffer.cc | 6 +++---
+ 2 files changed, 9 insertions(+), 6 deletions(-)
+
+diff --git a/gr-filter/lib/fir_filter_with_buffer.cc b/gr-filter/lib/fir_filter_with_buffer.cc
+index 4fc571ec57d..f6cb3b20854 100644
+--- a/gr-filter/lib/fir_filter_with_buffer.cc
++++ b/gr-filter/lib/fir_filter_with_buffer.cc
+@@ -52,7 +52,8 @@ void fir_filter_with_buffer_fff::set_taps(const std::vector<float>& taps)
+     for (int i = 0; i < d_naligned; i++) {
+         d_aligned_taps[i].clear();
+         d_aligned_taps[i].resize(d_ntaps + d_naligned - 1);
+-        std::copy(std::begin(d_taps), std::end(d_taps), &d_aligned_taps[i][i]);
++        std::copy(
++            std::begin(d_taps), std::end(d_taps), std::begin(d_aligned_taps[i]) + i);
+     }
+ 
+     d_idx = 0;
+@@ -157,7 +158,8 @@ void fir_filter_with_buffer_ccc::set_taps(const std::vector<gr_complex>& taps)
+     for (int i = 0; i < d_naligned; i++) {
+         d_aligned_taps[i].clear();
+         d_aligned_taps[i].resize(d_ntaps + d_naligned - 1);
+-        std::copy(std::begin(d_taps), std::end(d_taps), &d_aligned_taps[i][i]);
++        std::copy(
++            std::begin(d_taps), std::end(d_taps), std::begin(d_aligned_taps[i]) + i);
+     }
+ 
+     d_idx = 0;
+@@ -261,7 +263,8 @@ void fir_filter_with_buffer_ccf::set_taps(const std::vector<float>& taps)
+     for (int i = 0; i < d_naligned; i++) {
+         d_aligned_taps[i].clear();
+         d_aligned_taps[i].resize(d_ntaps + d_naligned - 1);
+-        std::copy(std::begin(d_taps), std::end(d_taps), &d_aligned_taps[i][i]);
++        std::copy(
++            std::begin(d_taps), std::end(d_taps), std::begin(d_aligned_taps[i]) + i);
+     }
+ 
+     d_idx = 0;
+diff --git a/gr-filter/lib/qa_fir_filter_with_buffer.cc b/gr-filter/lib/qa_fir_filter_with_buffer.cc
+index 32f5c6780fc..72cdd9fa1c0 100644
+--- a/gr-filter/lib/qa_fir_filter_with_buffer.cc
++++ b/gr-filter/lib/qa_fir_filter_with_buffer.cc
+@@ -107,7 +107,7 @@ void test_decimate(unsigned int decimate)
+             }
+ 
+             // build filter
+-            vector<tap_type> f1_taps(&taps[0], &taps[n]);
++            vector<tap_type> f1_taps(taps.begin(), taps.begin() + n);
+             kernel::fir_filter_with_buffer_fff f1(f1_taps);
+ 
+             // zero the output, then do the filtering
+@@ -198,7 +198,7 @@ void test_decimate(unsigned int decimate)
+             }
+ 
+             // build filter
+-            vector<tap_type> f1_taps(&taps[0], &taps[n]);
++            vector<tap_type> f1_taps(taps.begin(), taps.begin() + n);
+             kernel::fir_filter_with_buffer_ccc f1(f1_taps);
+ 
+             // zero the output, then do the filtering
+@@ -287,7 +287,7 @@ void test_decimate(unsigned int decimate)
+             }
+ 
+             // build filter
+-            vector<tap_type> f1_taps(&taps[0], &taps[n]);
++            vector<tap_type> f1_taps(taps.begin(), taps.begin() + n);
+             kernel::fir_filter_with_buffer_ccf f1(f1_taps);
+ 
+             // zero the output, then do the filtering

diff --git a/net-wireless/gnuradio/gnuradio-3.10.9.2.ebuild b/net-wireless/gnuradio/gnuradio-3.10.9.2-r1.ebuild
similarity index 98%
rename from net-wireless/gnuradio/gnuradio-3.10.9.2.ebuild
rename to net-wireless/gnuradio/gnuradio-3.10.9.2-r1.ebuild
index 68eff59630d3..bbbc55d8c42e 100644
--- a/net-wireless/gnuradio/gnuradio-3.10.9.2.ebuild
+++ b/net-wireless/gnuradio/gnuradio-3.10.9.2-r1.ebuild
@@ -23,9 +23,7 @@ fi
 
 IUSE="+audio +alsa +analog +digital channels ctrlport doc dtv examples fec +filter grc iio jack modtool network oss performance-counters portaudio +qt5 sdl soapy test trellis uhd vocoder +utils wavelet zeromq"
 
-#RESTRICT="!test? ( test )"
-# https://github.com/gnuradio/gnuradio/issues/7085
-RESTRICT="test"
+RESTRICT="!test? ( test )"
 
 REQUIRED_USE="${PYTHON_REQUIRED_USE}
 	audio? ( || ( alsa oss jack portaudio ) )
@@ -131,6 +129,8 @@ DEPEND="${RDEPEND}
 	zeromq? ( net-libs/cppzmq )
 "
 
+PATCHES=( "${FILESDIR}/PR7093.patch" )
+
 src_prepare() {
 	xdg_environment_reset #534582
 
@@ -225,7 +225,7 @@ src_install() {
 
 src_test() {
 	# skip test which needs internet
-	virtx cmake_src_test -E metainfo_test
+	virtx cmake_src_test -E metainfo_test --output-on-failure
 }
 
 pkg_postinst() {

diff --git a/net-wireless/gnuradio/gnuradio-9999.ebuild b/net-wireless/gnuradio/gnuradio-9999.ebuild
index 68eff59630d3..6270b80fb9f0 100644
--- a/net-wireless/gnuradio/gnuradio-9999.ebuild
+++ b/net-wireless/gnuradio/gnuradio-9999.ebuild
@@ -23,9 +23,7 @@ fi
 
 IUSE="+audio +alsa +analog +digital channels ctrlport doc dtv examples fec +filter grc iio jack modtool network oss performance-counters portaudio +qt5 sdl soapy test trellis uhd vocoder +utils wavelet zeromq"
 
-#RESTRICT="!test? ( test )"
-# https://github.com/gnuradio/gnuradio/issues/7085
-RESTRICT="test"
+RESTRICT="!test? ( test )"
 
 REQUIRED_USE="${PYTHON_REQUIRED_USE}
 	audio? ( || ( alsa oss jack portaudio ) )
@@ -225,7 +223,7 @@ src_install() {
 
 src_test() {
 	# skip test which needs internet
-	virtx cmake_src_test -E metainfo_test
+	virtx cmake_src_test -E metainfo_test --output-on-failure
 }
 
 pkg_postinst() {


^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2024-01-25  3:40 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-08-17 12:33 [gentoo-commits] repo/gentoo:master commit in: net-wireless/gnuradio/files/, net-wireless/gnuradio/ Thomas Beierlein
  -- strict thread matches above, loose matches on Subject: below --
2024-01-25  3:40 Rick Farina
2022-10-22  8:10 Thomas Beierlein
2020-09-21 18:46 Rick Farina
2018-02-18  3:48 Richard Farina

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox