[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: issues porting C++ OOT to 3.9 - fails at runtime import

From: Tom McDermott
Subject: Re: issues porting C++ OOT to 3.9 - fails at runtime import
Date: Mon, 10 May 2021 08:20:24 -0700

Hi Josh - you da man!

This fixes the problem, and the 3.9 OOT runs now.

Of note for anyone else following along:  the 2.4.3 tarball for pybind11 listed in the 3.9 OOT porting guide instructions
does not create a make uninstall target. It does however produce an install manifest.  I went through that and deleted
what it installed before proceeding.

Then sudo apt install pybind11-dev       This installed 2.5.0

-- Tom, N5EG

On Mon, May 10, 2021 at 4:01 AM Josh Morman <mormjb@gmail.com> wrote:

It looks like the OOT might be using a different version of pybind11 than the ppa version of gnuradio was built against.  The PPA for 20.04 appears to have been built using pybind11 v2.5.0, but the default with Ubuntu 20.04 is 2.4.3.

I can repeat the symptom you see when creating a docker that has pybind11-dev v.2.4.3 from the main Ubuntu repos, but then pull gnuradio from ppa:gnuradio-releases.  After installing gnuradio from the ppa, if I then do:
apt upgrade pybind11-dev

then the OOT will compile and load properly.

I can probably fix this in the PPA by removing the pybind11 packages and just relying on what gets shipped with Ubuntu, but for now, maybe a ` apt upgrade pybind11-dev ` will fix the issue.


On Sun, May 9, 2021 at 7:18 PM Tom McDermott <tom.n5eg@gmail.com> wrote:
I built a new VM from zero.  Ubuntu 20.04
apt install build-essential
apt install git
apt install cmake
apt install python3-pip
pip3 install pygccxml
build, install pybind11 from 2.4.3 tarball
setup gnuradio repository to releases
apt install gnuradio
   This gives gnuradio

git-cloning both Ron's gr-iqlevels and my gr-hpsdr, going through cmake, make, sudo make install, sudo ldconfig
yields exactly the same results as before:  the gr:sync_block  (gr-iqlevels)  or the gr::block (gr-hpsdr)  are not imported.

-- Tom, N5EG

On Sun, May 9, 2021 at 11:44 AM Tom McDermott <tom.n5eg@gmail.com> wrote:
Hi Ron - thank you for sending me the link to your 3.9 gr-iqlevels module !
It builds and installs OK, but when trying to run it gives me the same type of error as my own module:

Note: cmake .. -DCMAKE_INSTALL_PREFIX=/usr   was used for for gr-iqlevels

$ python3
Python 3.8.5 (default, Jan 27 2021, 15:41:15)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import gnuradio
>>> import iqlevels
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3/dist-packages/iqlevels/__init__.py", line 18, in <module>
    from .iqlevels_python import *
ImportError: generic_type: type "iqlevels" referenced unknown base type "gr::sync_block"

And when run from GRC:

Traceback (most recent call last):
  File "/home/tom/Desktop/iqlevels.py", line 142, in <module>
  File "/home/tom/Desktop/iqlevels.py", line 120, in main
    tb = top_block_cls()
  File "/home/tom/Desktop/iqlevels.py", line 81, in __init__
    self.iqlevels_iqlevels_0 = iqlevels.iqlevels(samp_rate, 1)
AttributeError: type object 'iqlevels' has no attribute 'iqlevels'

So it appears there is something wrong or misconfigured in my system.
I am baffled as to what that might be.
Ubuntu 20.04
Python 3.8.5
Cmake 3.16.3
GCC 9.3.0
pygccxml  2.1.0  installed using pip3
pybind11-2.4.3 installed from tarball according to the OOT 3.9 instructions
  pybind11 build, cmake, make, make install by the above directions.
   it put the various pybind headers into /usr/local/include/pybind11/

Is there some other configuration, path, or other thing that needs to be setup?

-- Tom, N5EG

reply via email to

[Prev in Thread] Current Thread [Next in Thread]