-
-
Notifications
You must be signed in to change notification settings - Fork 14.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
GNU radio 3.8 update meta issue #82263
Comments
This issue has been mentioned on NixOS Discourse. There might be relevant details there: https://discourse.nixos.org/t/gnu-radio-3-8-meta-issue/6189/1 |
Thanks for putting this Issue together. We probably will need to keep 3.7 around for quite a while and also keep around the old gr-* plugins as there is no replacement for some of the unmaintained ones. |
OK. Some such plugins have a new version available which doesn't support 3.7. Should we keep 2 versions of these plugins? The older suitable for Gnuradio 3.7 and the newer suitable for Gnuradio 3.8 ? |
We may want to keep source plugins, such as limesdr and osmosdr, for 3.7. |
Source plugins? |
Sorry, to clarify: the mentioned plugins provide "signal source blocks", while others like gr-ais provide signal decoding blocks. |
I see. Please tell me @markuskowa what do you think about the following arrangement of files attributes: Files in
While in
And every plugin derivation will be called with a specific gnuradio package which'll get compiled with it. A user would be able to access every gnuradio plugin via e.g
|
I also started experimenting with gnuradio 3.8 and had somehow missed this issue, great to see that more people are working on this. Regarding enable/disable flags, If it is only about closure size maybe having separate outputs (or even separate derivations, but not sure if that's feasible with gnuradio's cmake) for core, gnu radio companion and the builtin plugins might be better, because it would only need one build and users/dependent applications would still only get what they need. Another new feature in 3.8 is that the companion also can generate c++ code in addition to python code. I guess to support this, gnuradio would have to provide some stdenv to compile these gnuradio c++ files. |
Good to have you with us @wirew0rm :).
Another improvement wrapping can introduce is to allow users to add their own packages to the wrapper so their
I have had once experienced issues with splitting outputs of packages using cmake which provide both development files needed for other packages. I think that having build flavors will be enough but once PRs will start flooding I'd be glad if anyone will test splitting. The main issue not taken care by split outputs in my view is the closure size increase of dependencies - all of the python libraries needed for the GUI will be downloaded no matter what output is used. |
I'm working on most of the ideas presented here at https://github.com/doronbehar/nixpkgs/tree/update-gnuradio3_7 . |
@doronbehar That fixed gnuradio for me. Thanks so much. :) |
@doronbehar - I just came across this PR; anything I can do to help get this all merged? Would love to help out! |
@andrew-d thanks for the encouragement. My goal is to rewrite an expression for GNU radio 3.8 that will be even nicer to look at compared to what I did in #84401 . I'm (not actively) working on it here: And it's not ready yet. Feel free to open a PR to my fork against the |
Here's the promised improved version of #84401 which adds 3.8 and 3.7 builds with the turn on and off features via an I've also made sure all reverse deps build and changes to their inputs are unavoidable. Some other changes required are not included in that PR, to ease the review. The PR also introduces a new Upcoming changes should be:
qradiolink can't be built with 3.8 yet (qradiolink/qradiolink#67) and gqrx can, but gqrx needs osmosdr and it's osmosdr should be built with the same 3.8 gnuradio, so this is not taken care of at the moment. |
All work left to do as I see it was done in #106599 . Reviews are welcome :). |
As gnuraido 3.9 was released last month, how does this fit in the grand scheme of things? |
@wirew0rm thanks for mentioning the 3.9 release. I tried putting some work into it now as well, on top of #106599 at: master...doronbehar:pkg/gnuradio/3.9 . And I encountered these errors after
|
ah yes, that looks familiar, that's where I'm stuck, too. I'll try to merge my branch with yours and add try to find out if i can get further with it if I find the time this week. |
#106599 will close this. The codec2 issue is not critical and most of the issues discussed above are fixed. |
Gnuradio 3.8 was released quiet some time ago. There are many changes needed to add it to NixOS at the best possible manner. This issue will be the place to discuss all the details with the maintainers of every Gnuradio related package. Some efforts have been made already in #47707 (cc @tomberek) but I hope work done from this issue will supersede it.
I have already thought about most of the details but I reached the conclusion these are too many changes to put in 1 PR. Hence this issue. Here are the main topics I'd like to address:
Incompatibilities between 3.7 and 3.8
There are 2 types of packages that depend on Gnuradio. Some of which are GUI, end user like programs such as gqrx and some of which are Gnuradio extra components such as gr-gsm. Following are the results of my findings in regard to incompatibilities:
End user packages
click to expand
qradiolink
Maintainers: @markuskowa
Info
Doesn't support Gnuradio 3.8 though there's a patch open for that which seem to be working: qradiolink/qradiolink#65
Version status
Needs update 0.5.0 -> 0.8.2-3 , link: https://github.com/qradiolink/qradiolink/releases
gnss-sdr
Maintainers: (None)
Version status
Updated.
Info
Supports both 3.8 and 3.7. Ref: https://github.com/gnss-sdr/gnss-sdr/search?q=3.8&type=Commits
gqrx
Maintainers: @bjornfor @the-kenny @fpletz
Version status
Updated.
Info
Supports both 3.8 and 3.7. Ref: gqrx-sdr/gqrx#705
inspectrum
Maintainers: @mog
Info
Doesn't seem to support both or only 3.8 as there are no open issue nor commits referencing 3.8 api changes. Refs:
Version status
Needs update: unstable-2017-05-31 -> 0.2.2, link: https://github.com/miek/inspectrum/releases
Components / Libraries type packages
click to expand
gr-nacl
Maintainers: @mog
Version status
Hasn't been updated since 2017-04-10. I'm most certain it won't be compatible with 3.8.
gr-limesdr
Maintainers: @markuskowa
Version status
Needs update: 2.0.0 -> 3.0.1, link: https://github.com/myriadrf/gr-limesdr/releases
Info
Current version supports only 3.7, next version supports only 3.8.
gr-osmosdr
Maintainers: @the-kenny @bjornfor
Version status
Needs update: 0.1.5 -> 0.2.0, link: https://github.com/osmocom/gr-osmosdr/releases
Info
Current version supports only 3.7, next version supports only 3.8.
gr-rds
Maintainers: @mog
Version status
Needs update: 1.1.0 -> 3.8.0, link: https://github.com/bastibl/gr-rds/releases
Info
Current version supports only 3.7, next version supports only 3.8.
gr-ais
Maintainers: @mog
Version status
Hasn't been updated since 2015-12-20. I'm most certain it won't be compatible with 3.8.
gr-gsm
Maintainers: @mog
Version status
Needs update: 2016-08-25 -> 0.42.2, link: https://github.com/ptrkrysik/gr-gsm/releases
Info
When testing the update with Gnuradio 3.7, it seemed to pass the configurePhase but the build failed with:
click to expand
Haven't tested with 3.8.
Gnuradio 3.7 branch
Gnuradio is still maintaining a 3.7 branch and it had a release, see: https://www.gnuradio.org/news/2020-02-16-gnu-radio-v3-7-14-0-release/ . I guess we should update that as well.
Other Improvements
Introduce
enable
/disable
flagsGnuradio has a lot of features that can be enabled and disabled via Cmake flags. I'd like to make them easily turned on / off declaratively - via
enableThis
andenableThat
arguments to the derivation. I'm completely open to other ideas as for handling this idea. But I think it can bring great improvement to closure size of packages that use Gnuradio as a library (such as gqrx, qradiolink ..). The idea is that this will enable such packages to use build of Gnuradio that doesn't include the GUI or the companion, which bloat the closure.Note
uhd Which is a dependency of Gnuradio, has many optional features as well. One of them isEDIT: #84183 .liberio
support, which needs: #82259 . After #82259 is merged, I'd like to introduce a PR with many newenable
/disable
flags for uhd.Use a Wrapper Derivation
One of the issues @tomberek encountered when writing #47707, was wrapping the executables. This is certainly a complicated issue as some executables need
wrapGAppsHook
and some need qt style wrapping. I can imagine how frustrating that might be since the build can take as long as half an hour and if the wrapping fails, all of the build is lost.I'd like to address this issue by introducing
gnuradio-unwrapped
andgnuradio
(wrapped) derivations. Programs that use Gnuradio as a library shouldn't care about the executables being wrapped or not. Hence they'll be able to usegnuradio-unwrapped
and spare excessive builds.Rewrite Plugin System
Along with using wrapper derivations, I'd like to introduce a new plugin system inspired by urxvt's (see #77347 ). This way, a user would be able to choose to setup a gnuradio development environment with a selection of
gr-
plugins (declaratively), and the wrapping will be done accordingly. You can read weechat's plugin system for inspiration: https://nixos.org/nixpkgs/manual/#sec-weechatTechnical details
Currently, these are the files in
pkgs/applications/radio/Gnuradio/
:I'd like to arrange them like this:
While
all-packages.nix
will have something like this:This is roughly the idea. While I guess 3.7 will still be there.
Unanswered Questions
gnuradio
point tognuradio3_7
? or tognuradio3_8
?The text was updated successfully, but these errors were encountered: