In order to learn how conda recipes and conda build work, I did the following 
steps on my computer:

- created a VM running the latest version of Ubuntu (21.10); I did all the 
remaining steps inside this VM
- installed conda (miniforge3), created the 'gnuradio' environment, installed 
the latest version of gnuradio from conda (3.10.1.1), ran 'conda upgrade -all', 
ran a quick check with 'gnuradio-compantion' - for this part I followed the 
instructions in the GNU Radio Wiki 
(https://wiki.gnuradio.org/index.php/CondaInstall)
- ran 'conda install gnuradio-build-deps' and 'conda activate 
$CONDA_DEFAULT_ENV' as per the instructions here: 
https://wiki.gnuradio.org/index.php/CondaInstall#Building_OOT_modules_to_use_with_conda-installed_GNU_Radio
- followed the GNU Radio OOT Modules tutorial 
(https://wiki.gnuradio.org/index.php/OutOfTreeModules) to create the sample 
'gr-howto' OOT module with the two blocks 'square_ff' and 'square2_ff'
- in the sample OOT howto module I ran the commands:
mkdir build
cd build
cmake -G Ninja -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX 
-DCMAKE_PREFIX_PATH=$CONDA_PREFIX -DLIB_SUFFIX="" ..
cmake --build .
cmake --build . --target install
and I was able to build the sample 'gr-howto' module, and ran the QA tests 
without any errors
- I then created a conda recipe following the steps in Ryan Volz template 
(https://github.com/ryanvolz/gnuradio-oot-template-feedstock); modified the 
meta.yaml file, and the build.sh file (didn't touch bld.bat since my build/host 
environment is Ubuntu)
- I installed conda-build and ran the command 'conda build .' in the directory 
with the recipe
- After a few minutes the compile/link part ran without errors, however the QA 
tests failed with the error message:

ImportError: generic_type: type "square_ff" referenced unknown base type 
"gr::block"

For those interested in seeing all the files (howto module, meta.yaml, 
build.sh), I uploaded them to my Google drive and this is the link: 
https://drive.google.com/file/d/1rkMcrsF9jLxUvgOU1F3kpbCRij4e9qa-/view?usp=sharing

I know that error message is due to pybind11 and I saw it was mentioned in this 
mailing list before 
(https://lists.gnu.org/archive/html/discuss-gnuradio/2021-05/msg00056.html and 
https://github.com/gnuradio/gnuradio/issues/4841), but in this case the module 
does work with the conda gnuradio environment if built the 'normal' way using 
the 'cmake' commands above; it fails when run inside a 'conda build' recipe.

Thanks in advance,
Franco






Reply via email to