bastibl / gr-foo

Some GNU Radio blocks that I use.
GNU General Public License v3.0
106 stars 56 forks source link

Compiling gr-foo "next" against gnuradio "next" #12

Closed ATL-Flaneur closed 5 years ago

ATL-Flaneur commented 6 years ago

I'm experimenting with GNU Radio on Ubuntu 18.04 and building from the git repos. The "next" branch with 3.8 seems like the place to start new projects.

Trying to build gr-foo gives:

[  4%] Building CXX object lib/CMakeFiles/gnuradio-foo.dir/channel_model_impl.cc.o
In file included from /home/ayank/Documents/SDR/gr-foo/lib/channel_model_impl.cc:18:0:
/home/ayank/Documents/SDR/gr-foo/lib/channel_model_impl.h:23:10: fatal error: gnuradio/blocks/add_cc.h: No such file or directory
 #include <gnuradio/blocks/add_cc.h>
          ^~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
lib/CMakeFiles/gnuradio-foo.dir/build.make:86: recipe for target 'lib/CMakeFiles/gnuradio-foo.dir/channel_model_impl.cc.o' failed
make[2]: *** [lib/CMakeFiles/gnuradio-foo.dir/channel_model_impl.cc.o] Error 1
CMakeFiles/Makefile2:135: recipe for target 'lib/CMakeFiles/gnuradio-foo.dir/all' failed
make[1]: *** [lib/CMakeFiles/gnuradio-foo.dir/all] Error 2
Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2

Should gr-foo "next" build against gnuradio "next"? If now, how much work am I looking at to make this happen? I also want to be using gr-ieee802-11.

ATL-Flaneur commented 6 years ago

I'll add that I see gnuradio/blocks/add_blk.h (I'm installing into /opt, so this is in /opt/include/gnuradio/…) but not gnuradio/blocks/add_cc.h.

Building and installing gnuradio "next" goes fine, but I'm tracing down startup issues regarding finding shared libraries.

bastibl commented 6 years ago

At GNU Radio, there is currently a lot of stuff in the flow. (They changed the development model and merge a multi-year backlog of features.) Last time I tried, it was not really ready for use. AFAIS, everything was merged into next and next was merged into master. So I wouldn't recommend to use either.

You could use the last release of GNU Radio with the master branch of this module, or the next of this module with the next branch of GNU Radio from some months ago.

Your compile error comes from this commit, which was recently merged. https://github.com/gnuradio/gnuradio/commit/1043222e0de551f00683a1cc9060f194adc4fc85

I'll look into it, but I think it will take some time to update all modules. Also, I don't know how to adapt the development model of my modules to play well with the new GNU Radio development model.

bastibl commented 6 years ago

I just wasted six hours trying to port my modules to the GR 3.8 "tech preview", but no chance....

At that point I gave up...

noc0lour commented 6 years ago

@bastibl Thanks for the effort! I currently also do not see a way forward for porting a lot of the popular OOTs. Do you have an idea how to expose the Python version the GR in question uses?

bastibl commented 6 years ago

My cmake is similar to the one that gr_modtool generates. What happened here was:

I don't know much about cmake, but I guess GR could create a config during build (like it is done with GnuradioConfigVersion) indicating which Python version was used. And the installed GrPython.cmake should require the corresponding version.

ATL-Flaneur commented 6 years ago

Thanks for this detailed commentary. Between this and hearing from another source that the 3.8 branch (next) likely won't stabilize until early 2019, it's probably best to wait a few months.

amalinda commented 5 years ago

Thanks for confirming this issue. I had the same. I'll try to match versions which seems the fastest solution for now.

clint70 commented 5 years ago

Was trying to install this package, have the same issue.. running gnu radio 3.7.10.1 and fails here:

[ 4%] Building CXX object lib/CMakeFiles/gnuradio-foo.dir/burst_tagger_impl.cc.o [ 8%] Building CXX object lib/CMakeFiles/gnuradio-foo.dir/channel_model_impl.cc.o In file included from /Users/clint/gr-foo/lib/channel_model_impl.cc:18: /Users/clint/gr-foo/lib/channel_model_impl.h:27:10: fatal error: 'gnuradio/filter/mmse_resampler_cc.h' file not found

include <gnuradio/filter/mmse_resampler_cc.h>

     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

1 error generated. make[2]: [lib/CMakeFiles/gnuradio-foo.dir/channel_model_impl.cc.o] Error 1 make[1]: [lib/CMakeFiles/gnuradio-foo.dir/all] Error 2 make: *** [all] Error 2

I see there was a lot of effort put into this last yr did this get fixed? OR am I missing something?

bastibl commented 5 years ago

GNU Radio is currently transitioning to a new release. For the time, please use the master branch of this module with the maint branch of GNU Radio.

jkbecker commented 5 years ago

OOT doesn't know if Python 2 or 3 was used

Whoah that seems like a big oversight. Do you know if that's going to be addressed on the gnuradio side of things at some point?

bastibl commented 5 years ago

This was recently fixed in 3.8. GNU Radio now exports much more configuration parameters in its cmake config, which can be read by OOTs.

See this issue https://github.com/gnuradio/gnuradio/issues/2377

noc0lour commented 5 years ago

Yep :+1: I'm going to write a migration guide of some sort for OOTs to help people migrate to 3.8 and new cmake.

bastibl commented 5 years ago

I tried porting the module to 3.8. Now it uses a maint-3.7 branch for GR 3.7. A maint-3.8 branch (the new default), which hopefully works with GR 3.8, and a master branch, which tracks API-breaking changes towards GR 3.9. As far as I understand, that's the new development model for GR.

I'll close this for know. Feel free to open a new issue, if there are problems with the updated version of the module.