Tom, If I am following correctly, it looks like you are running gr_modtool (which is the 3.9 version since that is what you have installed in the VM) in the 3.8 OOT directory? What happens when you run `gr_modtool bind` in the gr-hpsdr_3.9 directory
The process you are following seems sound to have created a 3.9 OOT with 3.9 modtool, and then copied code in from 3.8. Josh On Fri, Apr 9, 2021 at 12:08 PM Tom McDermott <tom.n...@gmail.com> wrote: > I am having difficulty porting an OOT module to gr 3.9. > * VM with only gnuradio 3.9.0.0 installed. > *The functional 3.8 OOT module is cloned into this VM. > > Installed is 3.9.0.0 > Python 3.8.5 > pygccxml 2.1.0 > pybind11 2.6.2 > > * Created the gr-hpsdr_3.9 directory, populated it using gr_modtool > newmod, added the > two modules hermesNB and hermesWB with constructor parameters. > > In the 3.8 directory: > hermesNB.h and hermesWB.h both exist in the /include directory, and > hermesWB_impl.cc and hermesNB_impl.cc both exist in the /lib directory > Edited the ./python/Cmakelists.txt file to add the bindings subdirectory. > From the directory gr-hpsdr_3.8/gr-hpsdr, I execute gr_modtool bind > It prompts for the block name. I used the base module name without any > suffixes: > > hermesNB > > (also tried hermesNB.h, hermesNB_impl.cc, hermesWB, hermewWB.h, > hermesWB_impl.cc) > > I always get the following error message: > > > tom@tom-Standard-PC-Q35-ICH9-2009:~/gr-hpsdr_3.8/gr-hpsdr$ gr_modtool bind > GNU Radio module name identified: hpsdr > Which blocks do you want to parse? (Regex): hermesNB > /usr/lib/python3/dist-packages/apport/report.py:13: DeprecationWarning: > the imp module is deprecated in favour of importlib; see the module's > documentation for alternative uses > import fnmatch, glob, traceback, errno, sys, atexit, locale, imp, stat > Traceback (most recent call last): > File "/usr/bin/gr_modtool", line 18, in <module> > cli() > File "/usr/lib/python3/dist-packages/click/core.py", line 764, in > __call__ > return self.main(*args, **kwargs) > File "/usr/lib/python3/dist-packages/click/core.py", line 717, in main > rv = self.invoke(ctx) > File "/usr/lib/python3/dist-packages/click/core.py", line 1137, in invoke > return _process_result(sub_ctx.command.invoke(sub_ctx)) > File "/usr/lib/python3/dist-packages/click/core.py", line 956, in invoke > return ctx.invoke(self.callback, **ctx.params) > File "/usr/lib/python3/dist-packages/click/core.py", line 555, in invoke > return callback(*args, **kwargs) > File "/usr/lib/python3/dist-packages/gnuradio/modtool/cli/base.py", line > 133, in wrapper > return func(*args, **kwargs) > File "/usr/lib/python3/dist-packages/gnuradio/modtool/cli/bind.py", line > 46, in cli > run(self) > File "/usr/lib/python3/dist-packages/gnuradio/modtool/cli/base.py", line > 152, in run > module.run() > File "/usr/lib/python3/dist-packages/gnuradio/modtool/core/bind.py", > line 61, in run > file_to_process = os.path.join(self.dir, self.info['includedir'], > self.info['blockname'] + '.h') > TypeError: unsupported operand type(s) for +: 'NoneType' and 'str' > > Thus am stuck at this time. Is there a new or revised gr_modtool ? > > -- Tom, N5EG > > > >