Thanks, Josh. The OOT should be pretty standard. It was built with gr_modtool in 3.7, then ported over to 3.8. All the modules are in the normal places. My guess is NoneType means that the module was not found, then trying to append .h to that fails.
I tried running gr_modtool bind inside the gr_3.9/gr-hpsdr directory and it fails in the exact same way. I guess at this point I'll have to see if there is some way to run gr_modtool in a debugger and step through what it is trying to do and how it is trying to find the modules. -- Tom, N5EG On Fri, Apr 9, 2021 at 1:23 PM Josh Morman <mor...@gmail.com> wrote: > I haven't been able to replicate this on my system with Ubuntu 20.04 and > Python 3.8.5 - created a 3.8 OOT with one block, and followed the steps to > copy the 3.9 content back in, and it got past the `gr_modtool bind` step. > > Is there anything non-standard about your 3.8 OOT - e.g. are the files in > the usual place as generated by modtool? > > On Fri, Apr 9, 2021 at 1:49 PM Tom McDermott <tom.n...@gmail.com> wrote: > >> Hi Josh - for creating the new 3.9 skeleton, I ran gr_modtool from within >> the 3.9 directory. >> For step 4, I ran gr_modtool from within the 3.8 directory (as per the >> guide). >> >> Quite frankly, it looks like gr_modtool is throwing an error when trying >> to >> concatenate the module name and path and the .h suffix and suffering >> a type mismatch (NoneType vs. str). Is this possibly a Python 3.x >> version dependency? >> >> -- Tom, N5EG >> >> >> >> >> >> On Fri, Apr 9, 2021 at 10:37 AM Josh Morman <mor...@gmail.com> wrote: >> >>> You are right - that is an easier process than merging the 3.8 code into >>> 3.9. The wiki should be correct in this case. >>> >>> Which directory are you running gr_modtool from? Same directory as you >>> would for doing things like gr_modtool add? >>> >>> >>> On Fri, Apr 9, 2021 at 1:24 PM Tom McDermott <tom.n...@gmail.com> wrote: >>> >>>> Hi Josh - thank you for your help ! >>>> >>>> I have been following the instructions from the porting guide: >>>> >>>> https://wiki.gnuradio.org/index.php/GNU_Radio_3.9_OOT_Module_Porting_Guide >>>> >>>> ---------------- >>>> >>>> Porting from 3.8 to 3.9 can be achieved most simply by creating a new >>>> OOT module (with the same name as the 3.8 OOT but in a different >>>> directory), then performing some manual steps >>>> >>>> 1. Use the 3.9 gr_modtool to generate a module with the same name (in >>>> another directory) >>>> >>>> 2. Copy the python folder from 3.9 OOT into your 3.8 OOT >>>> >>>> 3. (in 3.8 OOT) Add the bindings directory to the python directory >>>> CMakeLists >>>> >>>> ./python/CMakeLists.txt → add the line: >>>> add_subdirectory(bindings) >>>> >>>> 4. (in 3.8 OOT) Call gr_modtool bind for each block in your OOT >>>> >>>> ... >>>> >>>> ----------------- >>>> I have not created anything in the 3.9 directory except using >>>> gr_modtool new and add, nor have I copied in any code >>>> from 3.8 directory to the 3.9 directory. I was under the impression >>>> that step 4 would modify my 3.8 code so that I could >>>> then copy it from the 3.8 directory over to the 3.9 directory. >>>> >>>> There are significant file differences between the newly created 3.9 >>>> and the existing 3.8 with conflicts in the /lib directory: >>>> the hermesNB_impl.h and .cc and hermesWB.h and .cc files differ >>>> significantly in content. >>>> >>>> Do I need to first look through the code and figure out how to merge >>>> the 3.8 and 3.9 .h and .cc files together? >>>> Then do I put those merged file into the 3.8 or the 3.9 directory? >>>> >>>> -- Tom, N5EG >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> On Fri, Apr 9, 2021 at 9:27 AM Josh Morman <mor...@gmail.com> wrote: >>>> >>>>> 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 >>>>>> >>>>>> >>>>>> >>>>>>