Hahh, yes, that did it! I don't know what went wrong the previous time. I removed the build directory and re-run the cmake with the env variables and now everything is in order. I have a full, absolute path with the correct CONDA_PREFIX in GR_PYTHON_PATH and the CMAME_BUILD_PREFIX is correct too. I also stumbled upon what was wrong with the missing gr::block. To add insult to injury I'm also trying to use vs.code and I got a mixed release/debug build due to that. Sorting that out fixed it and my module runs fine now. Ryan, thank you again!
Bagojfalvi Bagoj <bagojfalviba...@gmail.com> ezt írta (időpont: 2023. aug. 28., H, 14:55): > Hi Ryan, thank you very much for your response! > > I think I traced it back to something fishy with the initial cmake step > mentioned by you in the condainstall tutorial, setting the env variables. > I'm not sure if I messed up or if it goes even further, but it seems like > my %CONDA_PREFIX% variable wasn't set. E.g. my GR_PYTHON_DIR is just > "\Lib\site-packages", thus it gets prefixed by CMAKE_BUILD_PREFIX (which I > manually patched) and that's where the extra "\Library" comes from. I'll > try a clean install and pay more attention when running that first cmake. > > I wonder if that helps with the load issue too, missing a definition for > gr::block. > > Ryan Volz <ryan.v...@gmail.com> ezt írta (időpont: 2023. aug. 28., H, > 10:00): > >> Hi, >> >> On 8/27/23 10:46 PM, Bagojfalvi Bagoj wrote: >> > Hi all, >> > >> > Apologies in advance as I have no idea what I'm doing on multiple >> levels. >> > I'm trying to build my own OOT module. I managed to clear a number of >> > issues already but I got stuck. >> > >> > I have a clean install of the latest released GNURadio following the >> > CondaInstall tutorial on the website, including the steps needed for >> > building OOT modules. I used gr_modtool as described in the C++ OOT >> > tutorial to create the template for my module. >> > >> > Build works seemingly fine, but install places stuff in some crazy >> > location in my Program Files(x86) folder. (obviously I'm on windows) >> > E.g.: C:/Program Files >> (x86)/gr-ni_modinst_rf/bin/gnuradio-ni_modinst_rf.dll >> > I changed the top level CMakeList.txt to set CMAKE_INSTALL_PREFIX to >> the >> > CONDA_PREFIX env variable + /Library. >> > This puts everything where it should be, >> > E.g.: >> > >> C:/Users/Admin/.conda/envs/gnuradio-env/Library/bin/gnuradio-ni_modinst_rf.dll >> > except for the python output. >> > The python output is installed to >> > E.g.: >> > >> C:/Users/Admin/.conda/envs/gnuradio-env/Library/Lib/site-packages/gnuradio/ni_modinst_rf/ni_modinst_rf_python.cp311-win_amd64.pyd >> > but looking at where GR is expecting and where other stuff is it should >> > be in >> > >> C:/Users/Admin/.conda/envs/gnuradio-env/Lib/site-packages/gnuradio/ni_modinst_rf/ >> instead >> > (note gnuradio-env/Lib vs gnuradio-env/Library/Lib ) >> > Any ideas... >> > 1. why was I missing the correct cmake install location? >> > 2. why the difference between the Library/Lib and /Lib locations >> > 3. how to tell cmake properly where to install? >> >> 1. CMake guesses on where to put the Python files based on your prefix, >> but it happens to guess wrong because of how the conda environment is >> structured. >> >> 2. %CONDA_PREFIX%/Library/Lib is not anything that anybody uses, except >> by mistake, whereas %CONDA_PREFIX%/Lib is where Anaconda decided to put >> all the Python files when they released conda, and the ecosystem is >> stuck with that split now. >> >> 3. The part you're (probably) missing is to add the cmake argument to >> set GR_PYTHON_DIR to "%CONDA_PREFIX%\Lib\site-packages", i.e. >> >> cmake -DGR_PYTHON_DIR="%CONDA_PREFIX%\Lib\site-packages" (the rest) >> >> By the way, this is documented on the CondaInstall wiki in the Building >> OOT modules section: >> >> https://wiki.gnuradio.org/index.php/CondaInstall#Building_OOT_modules_to_use_with_conda-installed_GNU_Radio >> >> > >> > Anyway, my temporary fix was to simply copy over the python files where >> > they should be and this way GR got one step closer to running my >> module. >> > I can drop the block in GRC, however I can't get over the following >> > error when running. >> > from .ni_modinst_rf_python import * >> > ImportError: generic_type: type "ni_rfsa_source" referenced unknown >> base >> > type "gr::block" >> >> This feels like an issue with using a different version of pybind or >> compiler than what GNU Radio was built with. Maybe look into using the >> `gnuradio-build-deps` metapackage to install the same versions of those >> as were used to compile gnuradio? >> >> > >> > I found this thread here: gr 3.9 OOT execution error: unknown base type >> > gr::block (gnu.org) >> > < >> https://lists.gnu.org/archive/html/discuss-gnuradio/2021-05/msg00023.html >> > >> > It sounds like the same issue, but there is no resolution. >> > >> > Anybody can point me in the right direction please? >> > I think I'm doing pretty good considering I didn't know what cmake was >> 2 >> > days ago, but I understand I'm lacking some basics. Please be gentle. :D >> > >> > Thank you! >> > >> >> Cheers, >> Ryan >> >