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
>>
>

Reply via email to