From 3becac02f894b4f29ade13318b9297d827d84525 Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Mon, 5 Oct 2020 12:04:49 +0300 Subject: gnuradio: rewrite Write (similar) expressions for GNURadio 3.7 and 3.8 and make 3.8 available as `gnuradio`, and `gnuradio3_7` point to the 3.7 build. Teach both 3.7 & 3.8 expressions accept a `features` attribute set, that tells them what features to compile. There are dependencies within the different features, and we rely on upstream's cmake scripts to make sure the `configurePhase` will fail if a feature is not enabled and needed by another feature. All features are enabled by default. Put shared Nix functions and attributes for both 3.7 and 3.8 in: pkgs/applications/radio/gnuradio/shared.nix Add 2 patches accepted upstream, that don't install some python related examples if python-support is not enabled. Remove cmake python reference in 3.8 with removeReferencesTo, if python-support is turned off. Update gqrx (reverse dependency) to use a build of gnuradio3_7 without gui components and for it's gr-osmosdr as well. Write an external, `wrapper.nix` (shared for both 3.7 and 3.8). Teach it to handle extra `gr-` packages via `GRC_BLOCKS_PATH`. Likely enable it to accept extra python packages. Wrap the executables with env vars wrapGAppsHook and wrapQtAppsHook would have likely given them (hence, fix #87510). Point `gnuradio` to the wrapped 3.8 derivation. Add @doronbehar to maintainers of both 3.8 and 3.7. dirty: use upstreamed patches --- pkgs/applications/radio/gnuradio/3.7.nix | 297 +++++++++++++++++++ pkgs/applications/radio/gnuradio/ais.nix | 4 +- pkgs/applications/radio/gnuradio/default.nix | 423 +++++++++++++++++---------- pkgs/applications/radio/gnuradio/shared.nix | 135 +++++++++ pkgs/applications/radio/gnuradio/wrapper.nix | 138 ++++++++- pkgs/top-level/aliases.nix | 4 + pkgs/top-level/all-packages.nix | 98 +++++-- 7 files changed, 913 insertions(+), 186 deletions(-) create mode 100644 pkgs/applications/radio/gnuradio/3.7.nix create mode 100644 pkgs/applications/radio/gnuradio/shared.nix diff --git a/pkgs/applications/radio/gnuradio/3.7.nix b/pkgs/applications/radio/gnuradio/3.7.nix new file mode 100644 index 000000000000..fdf0016de8c4 --- /dev/null +++ b/pkgs/applications/radio/gnuradio/3.7.nix @@ -0,0 +1,297 @@ +{ stdenv +, fetchFromGitHub +, fetchpatch +, cmake +# Remove gcc and python references +, removeReferencesTo +, pkgconfig +, cppunit +, swig +, orc +, boost +, log4cpp +, mpir +, doxygen +, python +, codec2 +, gsm +, fftwFloat +, alsaLib +, libjack2 +, CoreAudio +, uhd +, comedilib +, libusb1 +, SDL +, gsl +, cppzmq +, zeromq +# GUI related +, gtk2 +, pango +, cairo +, qt4 +, qwt6_qt4 +# Features available to override, the list of them is in featuresInfo. They +# are all turned on by default, besides wxgui which is recommended by upstream +# in favor of gr-qtgui, see: +# https://www.gnuradio.org/news/2019-08-10-gnu-radio-v3-8-0-0-release/ +, features ? { gr-wxgui = false; } +# If one wishes to use a different src or name for a very custom build +, overrideSrc ? {} +, pname ? "gnuradio" +, versionAttr ? { + major = "3.7"; + minor = "14"; + patch = "0"; +} +, fetchSubmodules ? true +}: + +let + sourceSha256 = "1nh4f9dmygprlbqybd3j1byg9fsr6065n140mvc4b0v8qqygmhrc"; + featuresInfo = { + # Needed always + basic = { + native = [ + cmake + pkgconfig + orc + ]; + runtime = [ boost log4cpp mpir ]; + pythonNative = with python.pkgs; [ Mako six ]; + }; + volk = { + cmakeEnableFlag = "VOLK"; + }; + doxygen = { + native = [ doxygen ]; + cmakeEnableFlag = "DOXYGEN"; + }; + sphinx = { + pythonNative = with python.pkgs; [ sphinx ]; + cmakeEnableFlag = "SPHINX"; + }; + python-support = { + pythonRuntime = [ python.pkgs.six ]; + native = [ + swig + python + ]; + cmakeEnableFlag = "PYTHON"; + }; + testing-support = { + native = [ cppunit ]; + cmakeEnableFlag = "TESTING"; + }; + gnuradio-runtime = { + cmakeEnableFlag = "GNURADIO_RUNTIME"; + }; + gr-ctrlport = { + cmakeEnableFlag = "GR_CTRLPORT"; + native = [ + swig + ]; + }; + gnuradio-companion = { + pythonRuntime = with python.pkgs; [ + pyyaml + cheetah + lxml + pygtk + numpy + # propagated by pygtk, but since wrapping is done externally, it help + # the wrapper if it's here + pycairo + pygobject2 + ]; + runtime = [ + gtk2 + pango + cairo + ]; + cmakeEnableFlag = "GRC"; + }; + gr-blocks = { + cmakeEnableFlag = "GR_BLOCKS"; + }; + gr-fec = { + cmakeEnableFlag = "GR_FEC"; + }; + gr-fft = { + runtime = [ fftwFloat ]; + cmakeEnableFlag = "GR_FFT"; + }; + gr-filter = { + runtime = [ fftwFloat ]; + cmakeEnableFlag = "GR_FILTER"; + }; + gr-analog = { + cmakeEnableFlag = "GR_ANALOG"; + }; + gr-digital = { + cmakeEnableFlag = "GR_DIGITAL"; + }; + gr-dtv = { + cmakeEnableFlag = "GR_DTV"; + }; + gr-atsc = { + cmakeEnableFlag = "GR_ATSC"; + }; + gr-audio = { + runtime = [] + ++ stdenv.lib.optionals stdenv.isLinux [ alsaLib libjack2 ] + ++ stdenv.lib.optionals stdenv.isDarwin [ CoreAudio ] + ; + cmakeEnableFlag = "GR_AUDIO"; + }; + gr-comedi = { + runtime = [ comedilib ]; + cmakeEnableFlag = "GR_COMEDI"; + }; + gr-channels = { + cmakeEnableFlag = "GR_CHANNELS"; + }; + gr-noaa = { + cmakeEnableFlag = "GR_NOAA"; + }; + gr-pager = { + cmakeEnableFlag = "GR_PAGER"; + }; + gr-qtgui = { + runtime = [ qt4 qwt6_qt4 ]; + pythonRuntime = [ python.pkgs.pyqt4 ]; + cmakeEnableFlag = "GR_QTGUI"; + }; + gr-trellis = { + cmakeEnableFlag = "GR_TRELLIS"; + }; + gr-uhd = { + runtime = [ uhd ]; + cmakeEnableFlag = "GR_UHD"; + }; + gr-utils = { + cmakeEnableFlag = "GR_UTILS"; + }; + gr-video-sdl = { + runtime = [ SDL ]; + cmakeEnableFlag = "GR_VIDEO_SDL"; + }; + gr-vocoder = { + runtime = [ codec2 gsm ]; + cmakeEnableFlag = "GR_VOCODER"; + }; + gr-fcd = { + runtime = [ libusb1 ]; + cmakeEnableFlag = "GR_FCD"; + }; + gr-wavelet = { + cmakeEnableFlag = "GR_WAVELET"; + runtime = [ gsl ]; + }; + gr-zeromq = { + runtime = [ cppzmq zeromq ]; + cmakeEnableFlag = "GR_ZEROMQ"; + }; + gr-wxgui = { + pythonRuntime = with python.pkgs; [ numpy wxPython ]; + cmakeEnableFlag = "GR_WXGUI"; + }; + }; + shared = (import ./shared.nix { + inherit + stdenv + python + removeReferencesTo + featuresInfo + features + versionAttr + sourceSha256 + overrideSrc + fetchFromGitHub + fetchSubmodules + ; + qt = qt4; + gtk = gtk2; + }); + inherit (shared) + version + src + hasFeature # function + nativeBuildInputs + buildInputs + disallowedReferences + postInstall + passthru + doCheck + dontWrapPythonPrograms + meta + ; + cmakeFlags = shared.cmakeFlags + # From some reason, if these are not set, libcodec2 and gsm are + # not detected properly (slightly different then what's in + # ./default.nix). + ++ stdenv.lib.optionals (hasFeature "gr-vocoder" features) [ + "-DLIBCODEC2_LIBRARIES=${codec2}/lib/libcodec2.so" + "-DLIBCODEC2_INCLUDE_DIR=${codec2}/include" + "-DLIBGSM_LIBRARIES=${gsm}/lib/libgsm.so" + "-DLIBGSM_INCLUDE_DIR=${gsm}/include/gsm" + ] + ; + stripDebugList = shared.stripDebugList + # gr-fcd feature was dropped in 3.8 + ++ stdenv.lib.optionals (hasFeature "gr-fcd" features) [ "share/gnuradio/examples/fcd" ] + ; + preConfigure = '' + '' + # wxgui and pygtk are not looked up properly, so we force them to be + # detected as found, if they are requested by the `features` attrset. + + stdenv.lib.optionalString (hasFeature "gr-wxgui" features) '' + sed -i 's/.*wx\.version.*/set(WX_FOUND TRUE)/g' gr-wxgui/CMakeLists.txt + '' + + stdenv.lib.optionalString (hasFeature "gnuradio-companion" features) '' + sed -i 's/.*pygtk_version.*/set(PYGTK_FOUND TRUE)/g' grc/CMakeLists.txt + '' + # If python-support is disabled, don't install volk's (git submodule) + # volk_modtool - it references python. + # + # NOTE: The same is done for 3.8, but we don't put this string in + # ./shared.nix since on the next release of 3.8 it won't be needed there, + # but it will be needed for 3.7, probably for ever. + + stdenv.lib.optionalString (!hasFeature "python-support" features) '' + sed -i -e "/python\/volk_modtool/d" volk/CMakeLists.txt + '' + ; + patches = [ + # Don't install python referencing files if python support is disabled. + # See: https://github.com/gnuradio/gnuradio/pull/3856 + (fetchpatch { + url = "https://github.com/gnuradio/gnuradio/commit/acef55433d15c231661fa44751f9a2d90a4baa4b.diff"; + sha256 = "2CEX44Ll8frfLXTIWjdDhKl7aXcjiAWsezVdwrynelE="; + }) + (fetchpatch { + url = "https://github.com/gnuradio/gnuradio/commit/a2681edcfaabcb1ecf878ae861161b6a6bf8459d.diff"; + sha256 = "2Pitgu8accs16B5X5+/q51hr+IY9DMsA15f56gAtBs8="; + }) + ]; +in + +stdenv.mkDerivation rec { + inherit + pname + version + src + nativeBuildInputs + buildInputs + cmakeFlags + preConfigure + # disallowedReferences + stripDebugList + patches + postInstall + passthru + doCheck + dontWrapPythonPrograms + meta + ; +} diff --git a/pkgs/applications/radio/gnuradio/ais.nix b/pkgs/applications/radio/gnuradio/ais.nix index 30c2638a72f8..46d46d1c3255 100644 --- a/pkgs/applications/radio/gnuradio/ais.nix +++ b/pkgs/applications/radio/gnuradio/ais.nix @@ -1,5 +1,5 @@ { stdenv, fetchFromGitHub, cmake, pkgconfig, boost, gnuradio -, makeWrapper, cppunit, gr-osmosdr +, makeWrapper, cppunit, gr-osmosdr, log4cpp , pythonSupport ? true, python, swig }: @@ -19,7 +19,7 @@ stdenv.mkDerivation { nativeBuildInputs = [ pkgconfig ]; buildInputs = [ - cmake boost gnuradio makeWrapper cppunit gr-osmosdr + cmake boost gnuradio makeWrapper cppunit gr-osmosdr log4cpp ] ++ stdenv.lib.optionals pythonSupport [ python swig ]; postInstall = '' diff --git a/pkgs/applications/radio/gnuradio/default.nix b/pkgs/applications/radio/gnuradio/default.nix index dec968cd32d7..811eb37f4f31 100644 --- a/pkgs/applications/radio/gnuradio/default.nix +++ b/pkgs/applications/radio/gnuradio/default.nix @@ -1,165 +1,288 @@ { stdenv , fetchFromGitHub -, makeWrapper -, writeText -# Dependencies documented @ https://gnuradio.org/doc/doxygen/build_guide.html -# => core dependencies +, fetchpatch , cmake +# Remove gcc and python references +, removeReferencesTo , pkgconfig -, git -, boost , cppunit -, fftw -# => python wrappers -# May be able to upgrade to swig3 +, swig +, orc +, boost +, log4cpp +, mpir +, doxygen , python -, swig2 -, numpy -, scipy -, matplotlib -# => grc - the gnu radio companion -, Mako -, cheetah -, pygtk # Note: GR is migrating to Mako. Cheetah should be removed for GR3.8 -# => gr-wavelet: collection of wavelet blocks -, gsl -# => gr-qtgui: the Qt-based GUI -, qt4 -, qwt -, pyqt4 -# => gr-wxgui: the Wx-based GUI -, wxPython -, lxml -# => gr-audio: audio subsystems (system/OS dependent) -, alsaLib # linux 'audio-alsa' -, CoreAudio # darwin 'audio-osx' -# => uhd: the Ettus USRP Hardware Driver Interface +, codec2 +, gsm +, fftwFloat +, alsaLib +, libjack2 +, CoreAudio , uhd -# => gr-video-sdl: PAL and NTSC display , SDL -# Other -, libusb1 -, orc -, pyopengl +, gsl +, cppzmq +, zeromq +# GUI related +, gtk3 +, pango +, gobject-introspection +, cairo +, qt5 +, libsForQt5 +# Features available to override, the list of them is in featuresInfo. They +# are all turned on by default. +, features ? {} +# If one wishes to use a different src or name for a very custom build +, overrideSrc ? {} +, pname ? "gnuradio" +, versionAttr ? { + major = "3.8"; + minor = "2"; + patch = "0"; +} +# Should be false on the release after 3.8.2.0 +, fetchSubmodules ? true }: -stdenv.mkDerivation rec { - pname = "gnuradio"; - version = "3.7.14.0"; - - src = fetchFromGitHub { - owner = "gnuradio"; - repo = "gnuradio"; - rev = "v${version}"; - sha256 = "1nh4f9dmygprlbqybd3j1byg9fsr6065n140mvc4b0v8qqygmhrc"; - fetchSubmodules = true; +let + sourceSha256 = "1mnfwdy7w3160vi6110x2qkyq8l78qi8771zwak9n72bl7lhhpnf"; + featuresInfo = { + # Needed always + basic = { + native = [ + cmake + pkgconfig + orc + ]; + runtime = [ + boost + log4cpp + mpir + ]; + pythonNative = with python.pkgs; [ + Mako + six + ]; + }; + # NOTE: Should be removed on the release after 3.8.2.0, see: + # https://github.com/gnuradio/gnuradio/commit/80c04479d + volk = { + cmakeEnableFlag = "VOLK"; + }; + doxygen = { + native = [ doxygen ]; + cmakeEnableFlag = "DOXYGEN"; + }; + sphinx = { + pythonNative = with python.pkgs; [ sphinx ]; + cmakeEnableFlag = "SPHINX"; + }; + python-support = { + pythonRuntime = [ python.pkgs.six ]; + native = [ + swig + python + ]; + cmakeEnableFlag = "PYTHON"; + }; + testing-support = { + native = [ cppunit ]; + cmakeEnableFlag = "TESTING"; + }; + gnuradio-runtime = { + cmakeEnableFlag = "GNURADIO_RUNTIME"; + }; + gr-ctrlport = { + # Thrift support is not really working well, and even the patch they + # recommend applying on 0.9.2 won't apply. See: + # https://github.com/gnuradio/gnuradio/blob/v3.8.2.0/gnuradio-runtime/lib/controlport/thrift/README + cmakeEnableFlag = "GR_CTRLPORT"; + native = [ + swig + ]; + }; + gnuradio-companion = { + pythonRuntime = with python.pkgs; [ + pyyaml + Mako + numpy + pygobject3 + ]; + runtime = [ + gtk3 + pango + gobject-introspection + cairo + ]; + cmakeEnableFlag = "GRC"; + }; + gr-blocks = { + cmakeEnableFlag = "GR_BLOCKS"; + }; + gr-fec = { + cmakeEnableFlag = "GR_FEC"; + }; + gr-fft = { + runtime = [ fftwFloat ]; + cmakeEnableFlag = "GR_FFT"; + }; + gr-filter = { + runtime = [ fftwFloat ]; + cmakeEnableFlag = "GR_FILTER"; + }; + gr-analog = { + cmakeEnableFlag = "GR_ANALOG"; + }; + gr-digital = { + cmakeEnableFlag = "GR_DIGITAL"; + }; + gr-dtv = { + cmakeEnableFlag = "GR_DTV"; + }; + gr-audio = { + runtime = [] + ++ stdenv.lib.optionals stdenv.isLinux [ alsaLib libjack2 ] + ++ stdenv.lib.optionals stdenv.isDarwin [ CoreAudio ] + ; + cmakeEnableFlag = "GR_AUDIO"; + }; + gr-channels = { + cmakeEnableFlag = "GR_CHANNELS"; + }; + gr-qtgui = { + runtime = [ qt5.qtbase libsForQt5.qwt ]; + pythonRuntime = [ python.pkgs.pyqt5 ]; + cmakeEnableFlag = "GR_QTGUI"; + }; + gr-trellis = { + cmakeEnableFlag = "GR_TRELLIS"; + }; + gr-uhd = { + runtime = [ uhd ]; + cmakeEnableFlag = "GR_UHD"; + }; + gr-utils = { + cmakeEnableFlag = "GR_UTILS"; + }; + gr-modtool = { + pythonRuntime = with python.pkgs; [ + click + click-plugins + ]; + cmakeEnableFlag = "GR_MODTOOL"; + }; + gr-video-sdl = { + runtime = [ SDL ]; + cmakeEnableFlag = "GR_VIDEO_SDL"; + }; + gr-vocoder = { + runtime = [ codec2 gsm ]; + cmakeEnableFlag = "GR_VOCODER"; + }; + gr-wavelet = { + cmakeEnableFlag = "GR_WAVELET"; + runtime = [ gsl ]; + }; + gr-zeromq = { + runtime = [ cppzmq zeromq ]; + cmakeEnableFlag = "GR_ZEROMQ"; + }; }; + shared = (import ./shared.nix { + inherit + stdenv + python + removeReferencesTo + featuresInfo + features + versionAttr + sourceSha256 + overrideSrc + fetchFromGitHub + fetchSubmodules + ; + qt = qt5; + gtk = gtk3; + }); + inherit (shared) + version + src + hasFeature # function + nativeBuildInputs + buildInputs + disallowedReferences + stripDebugList + passthru + doCheck + dontWrapPythonPrograms + meta + ; + cmakeFlags = shared.cmakeFlags + # From some reason, if these are not set, libcodec2 and gsm are not + # detected properly. NOTE: qradiolink needs libcodec2 to be detected in + # order to build, see https://github.com/qradiolink/qradiolink/issues/67 + ++ stdenv.lib.optionals (hasFeature "gr-vocoder" features) [ + "-DLIBCODEC2_LIBRARIES=${codec2}/lib/libcodec2.so" + "-DLIBCODEC2_INCLUDE_DIRS=${codec2}/include" + "-DLIBCODEC2_HAS_FREEDV_API=ON" + "-DLIBGSM_LIBRARIES=${gsm}/lib/libgsm.so" + "-DLIBGSM_INCLUDE_DIRS=${gsm}/include/gsm" + ] + ; - nativeBuildInputs = [ - cmake - pkgconfig - git - makeWrapper - cppunit - orc - ]; - - buildInputs = [ - boost - fftw - python - swig2 - lxml - qt4 - qwt - SDL - libusb1 - uhd - gsl - ] ++ stdenv.lib.optionals stdenv.isLinux [ alsaLib ] - ++ stdenv.lib.optionals stdenv.isDarwin [ CoreAudio ]; - - propagatedBuildInputs = [ - Mako - cheetah - numpy - scipy - matplotlib - pyqt4 - pygtk - wxPython - pyopengl - ]; - - NIX_LDFLAGS = "-lpthread"; - - enableParallelBuilding = true; - - postPatch = '' - substituteInPlace \ - gr-fec/include/gnuradio/fec/polar_decoder_common.h \ - --replace BOOST_CONSTEXPR_OR_CONST const - ''; - - # Enables composition with nix-shell - grcSetupHook = writeText "grcSetupHook.sh" '' - addGRCBlocksPath() { - addToSearchPath GRC_BLOCKS_PATH $1/share/gnuradio/grc/blocks - } - addEnvHooks "$targetOffset" addGRCBlocksPath - ''; - - setupHook = [ grcSetupHook ]; - - # patch wxgui and pygtk check due to python importerror in a headless environment - # wxgtk gui will be removed in GR3.8 - # c++11 hack may not be necessary anymore + postInstall = shared.postInstall + # This is the only python reference worth removing, if needed (3.7 doesn't + # set that reference). + + stdenv.lib.optionalString (!hasFeature "python-support" features) '' + ${removeReferencesTo}/bin/remove-references-to -t ${python} $out/lib/cmake/gnuradio/GnuradioConfig.cmake + '' + ; preConfigure = '' - export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -Wno-unused-variable ${stdenv.lib.optionalString (!stdenv.isDarwin) "-std=c++11"}" - sed -i 's/.*wx\.version.*/set(WX_FOUND TRUE)/g' gr-wxgui/CMakeLists.txt - sed -i 's/.*pygtk_version.*/set(PYGTK_FOUND TRUE)/g' grc/CMakeLists.txt - find . -name "CMakeLists.txt" -exec sed -i '1iadd_compile_options($<$:-std=c++11>)' "{}" ";" - ''; - - # Framework path needed for qwt6_qt4 but not qwt5 - cmakeFlags = - stdenv.lib.optionals stdenv.isDarwin [ "-DCMAKE_FRAMEWORK_PATH=${qwt}/lib" ]; - - # - Ensure we get an interactive backend for matplotlib. If not the gr_plot_* - # programs will not display anything. Yes, $MATPLOTLIBRC must point to the - # *dirname* where matplotlibrc is located, not the file itself. - # - GNU Radio core is C++ but the user interface (GUI and API) is Python, so - # we must wrap the stuff in bin/. - # Notes: - # - May want to use makeWrapper instead of wrapProgram - # - may want to change interpreter path on Python examples instead of wrapping - # - see https://github.com/NixOS/nixpkgs/issues/22688 regarding use of --prefix / python.withPackages - # - see https://github.com/NixOS/nixpkgs/issues/24693 regarding use of DYLD_FRAMEWORK_PATH on Darwin - postInstall = '' - printf "backend : Qt4Agg\n" > "$out/share/gnuradio/matplotlibrc" - - for file in $(find $out/bin $out/share/gnuradio/examples -type f -executable); do - wrapProgram "$file" \ - --prefix PYTHONPATH : $PYTHONPATH:$(toPythonPath "$out") \ - --set MATPLOTLIBRC "$out/share/gnuradio" \ - ${stdenv.lib.optionalString stdenv.isDarwin "--set DYLD_FRAMEWORK_PATH /System/Library/Frameworks"} - done - ''; + '' + # If python-support is disabled, don't install volk's (git submodule) + # volk_modtool - it references python. + # + # NOTE: on the next release, volk will always be required to be installed + # externally (submodule removed upstream). Hence this hook will fail and + # we'll need to package volk while able to tell it to install or not + # install python referencing files. When we'll be there, this will help: + # https://github.com/gnuradio/volk/pull/404 + + stdenv.lib.optionalString (!hasFeature "python-support" features) '' + sed -i -e "/python\/volk_modtool/d" volk/CMakeLists.txt + '' + ; + patches = [ + # Don't install python referencing files if python support is disabled. + # See: https://github.com/gnuradio/gnuradio/pull/3839 + (fetchpatch { + url = "https://github.com/gnuradio/gnuradio/commit/4a4fd570b398b0b50fe875fcf0eb9c9db2ea5c6e.diff"; + sha256 = "xz2E0ji6zfdOAhjfPecAcaVOIls1XP8JngLkBbBBW5Q="; + }) + (fetchpatch { + url = "https://github.com/gnuradio/gnuradio/commit/dbc8ad7e7361fddc7b1dbc267c07a776a3f9664b.diff"; + sha256 = "tQcCpcUbJv3yqAX8rSHN/pAuBq4ueEvoVo7sNzZGvf4="; + }) + ]; +in - meta = with stdenv.lib; { - description = "Software Defined Radio (SDR) software"; - longDescription = '' - GNU Radio is a free & open-source software development toolkit that - provides signal processing blocks to implement software radios. It can be - used with readily-available low-cost external RF hardware to create - software-defined radios, or without hardware in a simulation-like - environment. It is widely used in hobbyist, academic and commercial - environments to support both wireless communications research and - real-world radio systems. - ''; - homepage = "https://www.gnuradio.org"; - license = licenses.gpl3; - platforms = platforms.linux ++ platforms.darwin; - maintainers = with maintainers; [ bjornfor fpletz ]; - }; +stdenv.mkDerivation rec { + inherit + pname + version + src + nativeBuildInputs + buildInputs + cmakeFlags + preConfigure + # disallowedReferences + stripDebugList + patches + postInstall + passthru + doCheck + dontWrapPythonPrograms + meta + ; } diff --git a/pkgs/applications/radio/gnuradio/shared.nix b/pkgs/applications/radio/gnuradio/shared.nix new file mode 100644 index 000000000000..66ce0a5f5132 --- /dev/null +++ b/pkgs/applications/radio/gnuradio/shared.nix @@ -0,0 +1,135 @@ +{ stdenv +, python +, qt +, gtk +, removeReferencesTo +, featuresInfo +, features +, versionAttr +, sourceSha256 +# If overriden. No need to set default values, as they are given defaults in +# the main expressions +, overrideSrc +, fetchFromGitHub +, fetchSubmodules +}: + +let + lib = stdenv.lib; +in rec { + version = builtins.concatStringsSep "." ( + lib.attrVals [ "major" "minor" "patch" ] versionAttr + ); + src = if overrideSrc != {} then + overrideSrc + else + fetchFromGitHub { + repo = "gnuradio"; + owner = "gnuradio"; + rev = "v${version}"; + sha256 = sourceSha256; + inherit fetchSubmodules; + } + ; + # Check if a feature is enabled, while defaulting to true if feat is not + # specified. + hasFeature = feat: features: ( + if builtins.hasAttr feat features then + features.${feat} + else + true + ); + nativeBuildInputs = lib.flatten (lib.mapAttrsToList ( + feat: info: ( + if hasFeature feat features then + (if builtins.hasAttr "native" info then info.native else []) ++ + (if builtins.hasAttr "pythonNative" info then info.pythonNative else []) + else + [] + ) + ) featuresInfo); + buildInputs = lib.flatten (lib.mapAttrsToList ( + feat: info: ( + if hasFeature feat features then + (if builtins.hasAttr "runtime" info then info.runtime else []) ++ + (if builtins.hasAttr "pythonRuntime" info then info.pythonRuntime else []) + else + [] + ) + ) featuresInfo); + cmakeFlags = lib.mapAttrsToList ( + feat: info: ( + if feat == "basic" then + # Abuse this unavoidable "iteration" to set this flag which we want as + # well - it means: Don't turn on features just because their deps are + # satisfied, let only our cmakeFlags decide. + "-DENABLE_DEFAULT=OFF" + else + if hasFeature feat features then + "-DENABLE_${info.cmakeEnableFlag}=ON" + else + "-DENABLE_${info.cmakeEnableFlag}=OFF" + )) featuresInfo + ; + disallowedReferences = [ + # TODO: Should this be conditional? + stdenv.cc + stdenv.cc.cc + ] + # If python-support is disabled, we probably don't want it referenced + ++ lib.optionals (!hasFeature "python-support" features) [ python ] + ; + # Gcc references from examples + stripDebugList = [ "lib" "bin" ] + ++ lib.optionals (hasFeature "gr-audio" features) [ "share/gnuradio/examples/audio" ] + ++ lib.optionals (hasFeature "gr-uhd" features) [ "share/gnuradio/examples/uhd" ] + ++ lib.optionals (hasFeature "gr-qtgui" features) [ "share/gnuradio/examples/qt-gui" ] + ; + postInstall = '' + '' + # Gcc references + + lib.optionalString (hasFeature "volk" features) '' + ${removeReferencesTo}/bin/remove-references-to -t ${stdenv.cc} $(readlink -f $out/lib/libvolk.so) + '' + + lib.optionalString (hasFeature "gnuradio-runtime" features) '' + ${removeReferencesTo}/bin/remove-references-to -t ${stdenv.cc} $(readlink -f $out/lib/libgnuradio-runtime.so) + '' + ; + # NOTE: Outputs are disabled due to upstream not using GNU InstallDIrs cmake + # module. It's not that bad since it's a development package for most + # purposes. If closure size needs to be reduced, features should be disabled + # via an override. + passthru = { + inherit + hasFeature + versionAttr + features + featuresInfo + python + qt + gtk + ; + }; + # Wrapping is done with an external wrapper + dontWrapPythonPrograms = true; + # Tests should succeed, but it's hard to get LD_LIBRARY_PATH right in order + # for it to happen. + doCheck = false; + + meta = with lib; { + description = "Software Defined Radio (SDR) software"; + longDescription = '' + GNU Radio is a free & open-source software development toolkit that + provides signal processing blocks to implement software radios. It can be + used with readily-available low-cost external RF hardware to create + software-defined radios, or without hardware in a simulation-like + environment. It is widely used in hobbyist, academic and commercial + environments to support both wireless communications research and + real-world radio systems. + ''; + homepage = "https://www.gnuradio.org"; + license = licenses.gpl3; + platforms = platforms.unix; + maintainers = with maintainers; [ doronbehar bjornfor fpletz ]; + }; +} diff --git a/pkgs/applications/radio/gnuradio/wrapper.nix b/pkgs/applications/radio/gnuradio/wrapper.nix index ffed3da03187..05202840ac02 100644 --- a/pkgs/applications/radio/gnuradio/wrapper.nix +++ b/pkgs/applications/radio/gnuradio/wrapper.nix @@ -1,24 +1,132 @@ -{ stdenv, gnuradio, makeWrapper, python, extraPackages ? [] }: +{ stdenv +, unwrapped +, makeWrapper +# For lndir +, xorg +# For Emulating wrapGAppsHook +, gsettings-desktop-schemas +, glib +, hicolor-icon-theme +, pango +, json-glib +, dconf +, gobject-introspection +, librsvg +, gdk-pixbuf +, harfbuzz +, at-spi2-core +, atk +# For Adding additional GRC blocks +, extraPackages ? [] +# For Adding additional python packaages +, extraPythonPackages ? [] +# Allow to add whatever you want to the wrapper +, extraMakeWrapperArgs ? [] +}: -with { inherit (stdenv.lib) appendToName makeSearchPath; }; +let + pythonPkgs = extraPythonPackages + ++ stdenv.lib.flatten (stdenv.lib.mapAttrsToList ( + feat: info: ( + if unwrapped.hasFeature feat unwrapped.features then + (if builtins.hasAttr "pythonRuntime" info then info.pythonRuntime else []) + else + [] + ) + ) unwrapped.featuresInfo) + ++ stdenv.lib.optionals (unwrapped.hasFeature "python-support" unwrapped.features) [ + # Add unwrapped itself as a python module + (unwrapped.python.pkgs.toPythonModule unwrapped) + ] + ; + python3Env = unwrapped.python.withPackages(ps: pythonPkgs); + name = (stdenv.lib.appendToName "wrapped" unwrapped).name; + makeWrapperArgs = builtins.concatStringsSep " " ([ + ] + # Emulating wrapGAppsHook & wrapQtAppsHook working together + ++ stdenv.lib.optionals ( + (unwrapped.hasFeature "gnuradio-companion" unwrapped.features) + || (unwrapped.hasFeature "gr-qtgui" unwrapped.features) + ) [ + "--prefix" "XDG_DATA_DIRS" ":" "$out/share" + "--prefix" "XDG_DATA_DIRS" ":" "$out/share/gsettings-schemas/${name}" + "--prefix" "XDG_DATA_DIRS" ":" "${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name}" + "--prefix" "XDG_DATA_DIRS" ":" "${hicolor-icon-theme}/share" + # Needs to run `gsettings` on startup, see: + # https://www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg1764890.html + "--prefix" "PATH" ":" "${stdenv.lib.getBin glib}/bin" + ] + ++ stdenv.lib.optionals (unwrapped.hasFeature "gnuradio-companion" unwrapped.features) [ + "--set" "GDK_PIXBUF_MODULE_FILE" "${librsvg}/${gdk-pixbuf.moduleDir}.cache" + "--prefix" "GIO_EXTRA_MODULES" ":" "${stdenv.lib.getLib dconf}/lib/gio/modules" + "--prefix" "XDG_DATA_DIRS" ":" "${unwrapped.gtk}/share" + "--prefix" "XDG_DATA_DIRS" ":" "${unwrapped.gtk}/share/gsettings-schemas/${unwrapped.gtk.name}" + "--prefix" "GI_TYPELIB_PATH" ":" "${stdenv.lib.makeSearchPath "lib/girepository-1.0" [ + unwrapped.gtk + gsettings-desktop-schemas + atk + # From some reason, if .out is not used, .bin is used, and we want + # what's in `.out`. + pango.out + gdk-pixbuf + json-glib + harfbuzz + librsvg + gobject-introspection + at-spi2-core + ]}" + ] + ++ stdenv.lib.optionals (extraPackages != []) [ + "--prefix" "GRC_BLOCKS_PATH" ":" "${stdenv.lib.makeSearchPath "share/gnuradio/grc/blocks" extraPackages}" + ] + ++ stdenv.lib.optionals (unwrapped.hasFeature "gr-qtgui" unwrapped.features) + # 3.7 builds with qt4 + (if unwrapped.versionAttr.major == "3.8" then + [ + "--prefix" "QT_PLUGIN_PATH" ":" + "${stdenv.lib.getBin unwrapped.qt.qtbase}/${unwrapped.qt.qtbase.qtPluginPrefix}" + "--prefix" "QML2_IMPORT_PATH" ":" + "${stdenv.lib.getBin unwrapped.qt.qtbase}/${unwrapped.qt.qtbase.qtQmlPrefix}" + ] + else + # TODO: Add here qt4 related environment for 3.7? + [ + + ] + ) + ++ extraMakeWrapperArgs + ); +in stdenv.mkDerivation { - name = (appendToName "with-packages" gnuradio).name; - buildInputs = [ makeWrapper python ]; + inherit name; - buildCommand = '' - mkdir -p $out/bin - ln -s "${gnuradio}"/bin/* $out/bin/ + buildInputs = [ + makeWrapper + xorg.lndir + ]; - for file in $(find -L $out/bin -type f); do - if test -x "$(readlink -f "$file")"; then - wrapProgram "$file" \ - --prefix PYTHONPATH : ${stdenv.lib.concatStringsSep ":" - (map (path: "$(toPythonPath ${path})") extraPackages)} \ - --prefix GRC_BLOCKS_PATH : ${makeSearchPath "share/gnuradio/grc/blocks" extraPackages} - fi + passthru = { + inherit python3Env pythonPkgs unwrapped; + }; + + buildCommand = '' + mkdir $out + cd $out + lndir -silent ${unwrapped} + for i in $out/bin/*; do + if [[ ! -x "$i" ]]; then + continue + fi + cp -L "$i" "$i".tmp + mv -f "$i".tmp "$i" + if head -1 "$i" | grep -q ${unwrapped.python}; then + substituteInPlace "$i" \ + --replace ${unwrapped.python} ${python3Env} + fi + wrapProgram "$i" ${makeWrapperArgs} done ''; - inherit (gnuradio) meta; + inherit (unwrapped) meta; } diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index 28b5614a80cb..d9ec9bdca97e 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -189,6 +189,10 @@ mapAliases ({ gnuradio-limesdr = gr-limesdr; # added 2019-05-27 gnuradio-rds = gr-rds; # added 2019-05-27 gnuradio-osmosdr = gr-osmosdr; # added 2019-05-27 + # added 20-10-2020 + gnuradio-with-packages = gnuradio3_7.override { + extraPackages = [ gr-nacl gr-gsm gr-ais gr-limesdr gr-rds gr-osmosdr ]; + }; gnustep-make = gnustep.make; # added 2016-7-6 gnupg20 = throw "gnupg20 has been removed from nixpkgs as upstream dropped support on 2017-12-31";# added 2020-07-12 go_1_12 = throw "go_1_12 has been removed"; # added 2020-04-26 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 9a0051b5bf9c..67bed0dedb24 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -15743,7 +15743,13 @@ in qm-dsp = callPackage ../development/libraries/audio/qm-dsp { }; - qradiolink = callPackage ../applications/radio/qradiolink { }; + qradiolink = callPackage ../applications/radio/qradiolink { + # 3.8 support is not ready yet: + # https://github.com/qradiolink/qradiolink/issues/67#issuecomment-703222573 + # The non minimal build is used because the 'qtgui' component is needed. + # gr-osmosdr is using the same gnuradio as of now. + gnuradio = gnuradio3_7-unwrapped; + }; qrupdate = callPackage ../development/libraries/qrupdate { }; @@ -21154,34 +21160,80 @@ in gksu = callPackage ../applications/misc/gksu { }; - gnss-sdr = callPackage ../applications/radio/gnss-sdr { boost=boost166; }; + gnss-sdr = callPackage ../applications/radio/gnss-sdr { + boost = boost166; + gnuradio = gnuradio3_7-unwrapped; + }; - gnuradio = callPackage ../applications/radio/gnuradio { - inherit (python2Packages) cheetah lxml Mako matplotlib numpy python pyopengl pyqt4 scipy wxPython pygtk; + gnuradio-unwrapped = callPackage ../applications/radio/gnuradio { inherit (darwin.apple_sdk.frameworks) CoreAudio; - fftw = fftwFloat; - qwt = qwt6_qt4; + python = python3; }; - - gnuradio-with-packages = callPackage ../applications/radio/gnuradio/wrapper.nix { - inherit (python2Packages) python; - extraPackages = [ gr-nacl gr-osmosdr gr-ais gr-rds ] - ++ lib.optionals stdenv.isLinux [ gr-gsm gr-limesdr ]; + # A build without gui components and other utilites not needed for end user + # libraries + gnuradioMinimal = gnuradio-unwrapped.override { + features = { + gnuradio-companion = false; + python-support = false; + gr-ctrlport = false; + examples = false; + gr-qtgui = false; + gr-utils = false; + gr-modtool = false; + sphinx = false; + doxygen = false; + }; + }; + gnuradio = callPackage ../applications/radio/gnuradio/wrapper.nix { + unwrapped = gnuradio-unwrapped; + }; + gnuradio3_7-unwrapped = callPackage ../applications/radio/gnuradio/3.7.nix { + inherit (darwin.apple_sdk.frameworks) CoreAudio; + python = python2; + }; + # A build without gui components and other utilites not needed if gnuradio is + # used as a c++ library. + gnuradio3_7Minimal = gnuradio3_7-unwrapped.override { + features = { + gnuradio-companion = false; + python-support = false; + gr-ctrlport = false; + gr-qtgui = false; + gr-utils = false; + sphinx = false; + doxygen = false; + gr-wxgui = false; + }; + }; + gnuradio3_7 = callPackage ../applications/radio/gnuradio/wrapper.nix { + unwrapped = gnuradio3_7-unwrapped; }; grandorgue = callPackage ../applications/audio/grandorgue { }; - gr-nacl = callPackage ../applications/radio/gnuradio/nacl.nix { }; + gr-nacl = callPackage ../applications/radio/gnuradio/nacl.nix { + gnuradio = gnuradio3_7-unwrapped; + }; - gr-gsm = callPackage ../applications/radio/gnuradio/gsm.nix { }; + gr-gsm = callPackage ../applications/radio/gnuradio/gsm.nix { + gnuradio = gnuradio3_7-unwrapped; + }; - gr-ais = callPackage ../applications/radio/gnuradio/ais.nix { }; + gr-ais = callPackage ../applications/radio/gnuradio/ais.nix { + gnuradio = gnuradio3_7-unwrapped; + }; - gr-limesdr = callPackage ../applications/radio/gnuradio/limesdr.nix { }; + gr-limesdr = callPackage ../applications/radio/gnuradio/limesdr.nix { + gnuradio = gnuradio3_7-unwrapped; + }; - gr-rds = callPackage ../applications/radio/gnuradio/rds.nix { }; + gr-rds = callPackage ../applications/radio/gnuradio/rds.nix { + gnuradio = gnuradio3_7-unwrapped; + }; - gr-osmosdr = callPackage ../applications/radio/gnuradio/osmosdr.nix { }; + gr-osmosdr = callPackage ../applications/radio/gnuradio/osmosdr.nix { + gnuradio = gnuradio3_7-unwrapped; + }; goldendict = libsForQt514.callPackage ../applications/misc/goldendict { inherit (darwin) libiconv; @@ -21220,7 +21272,13 @@ in gpx = callPackage ../applications/misc/gpx { }; - gqrx = libsForQt514.callPackage ../applications/radio/gqrx { }; + gqrx = libsForQt514.callPackage ../applications/radio/gqrx { + gnuradio = gnuradio3_7Minimal; + # Use the same gnuradio for gr-osmosdr as well + gr-osmosdr = gr-osmosdr.override { + gnuradio = gnuradio3_7Minimal; + }; + }; gpx-viewer = callPackage ../applications/misc/gpx-viewer { }; @@ -21986,7 +22044,9 @@ in inkscape-extensions = recurseIntoAttrs (callPackages ../applications/graphics/inkscape/extensions.nix {}); - inspectrum = libsForQt514.callPackage ../applications/radio/inspectrum { }; + inspectrum = libsForQt514.callPackage ../applications/radio/inspectrum { + gnuradio = gnuradioMinimal; + }; ion3 = callPackage ../applications/window-managers/ion-3 { lua = lua5_1; -- cgit v1.2.3 From ed44b466e6119901d8e69b39647a15692ffa7cb1 Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Tue, 6 Oct 2020 02:27:00 +0300 Subject: treewide/(gnuradio plugins): Add log4cpp as it's needed now. Since gnuradio-runtime is compiled with log4cpp, all plugins that need gnuradio-runtime (which is all of them probably) need log4cpp as well. Add python.pkgs.cheetah to inputs of gr-osmosdr as it somehow started to be needed. --- pkgs/applications/radio/gnuradio/gsm.nix | 4 ++-- pkgs/applications/radio/gnuradio/limesdr.nix | 4 ++-- pkgs/applications/radio/gnuradio/nacl.nix | 4 ++-- pkgs/applications/radio/gnuradio/osmosdr.nix | 5 +++-- pkgs/applications/radio/gnuradio/rds.nix | 4 ++-- pkgs/top-level/all-packages.nix | 1 + 6 files changed, 12 insertions(+), 10 deletions(-) diff --git a/pkgs/applications/radio/gnuradio/gsm.nix b/pkgs/applications/radio/gnuradio/gsm.nix index e0b8d7dd44f7..4e2406fc07a0 100644 --- a/pkgs/applications/radio/gnuradio/gsm.nix +++ b/pkgs/applications/radio/gnuradio/gsm.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchFromGitHub, cmake, pkgconfig, boost, gnuradio +{ stdenv, fetchFromGitHub, cmake, pkgconfig, boost, gnuradio, log4cpp , makeWrapper, cppunit, libosmocore, gr-osmosdr , pythonSupport ? true, python, swig }: @@ -18,7 +18,7 @@ stdenv.mkDerivation { nativeBuildInputs = [ pkgconfig ]; buildInputs = [ - cmake boost gnuradio makeWrapper cppunit libosmocore gr-osmosdr + cmake boost gnuradio makeWrapper cppunit libosmocore gr-osmosdr log4cpp ] ++ stdenv.lib.optionals pythonSupport [ python swig ]; postInstall = '' diff --git a/pkgs/applications/radio/gnuradio/limesdr.nix b/pkgs/applications/radio/gnuradio/limesdr.nix index 490caaaa7bea..b2f99164bec6 100644 --- a/pkgs/applications/radio/gnuradio/limesdr.nix +++ b/pkgs/applications/radio/gnuradio/limesdr.nix @@ -1,5 +1,5 @@ { stdenv, fetchFromGitHub, cmake, pkgconfig, boost, gnuradio -, pythonSupport ? true, python, swig, limesuite +, pythonSupport ? true, python, swig, limesuite, log4cpp } : assert pythonSupport -> python != null && swig != null; @@ -24,7 +24,7 @@ in stdenv.mkDerivation { ] ++ stdenv.lib.optionals pythonSupport [ swig ]; buildInputs = [ - boost gnuradio limesuite + boost gnuradio limesuite log4cpp ] ++ stdenv.lib.optionals pythonSupport [ python ]; diff --git a/pkgs/applications/radio/gnuradio/nacl.nix b/pkgs/applications/radio/gnuradio/nacl.nix index e3d851e2e14a..3435d5cdb4f0 100644 --- a/pkgs/applications/radio/gnuradio/nacl.nix +++ b/pkgs/applications/radio/gnuradio/nacl.nix @@ -1,5 +1,5 @@ { stdenv, fetchFromGitHub, cmake, pkgconfig, boost, gnuradio, uhd -, makeWrapper, libsodium, cppunit +, makeWrapper, libsodium, cppunit, log4cpp , pythonSupport ? true, python, swig }: @@ -18,7 +18,7 @@ stdenv.mkDerivation { nativeBuildInputs = [ pkgconfig ]; buildInputs = [ - cmake boost gnuradio uhd makeWrapper libsodium cppunit + cmake boost gnuradio uhd makeWrapper libsodium cppunit log4cpp ] ++ stdenv.lib.optionals pythonSupport [ python swig ]; postInstall = '' diff --git a/pkgs/applications/radio/gnuradio/osmosdr.nix b/pkgs/applications/radio/gnuradio/osmosdr.nix index ad54fc8d7c4f..9eb6fe648d02 100644 --- a/pkgs/applications/radio/gnuradio/osmosdr.nix +++ b/pkgs/applications/radio/gnuradio/osmosdr.nix @@ -8,6 +8,7 @@ , rtl-sdr , soapysdr-with-plugins , uhd +, log4cpp }: assert pythonSupport -> python != null && swig != null; @@ -24,10 +25,10 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ pkgconfig ]; buildInputs = [ - cmake makeWrapper boost + cmake makeWrapper boost log4cpp airspy gnuradio hackrf libbladeRF rtl-sdr uhd ] ++ stdenv.lib.optionals stdenv.isLinux [ soapysdr-with-plugins ] - ++ stdenv.lib.optionals pythonSupport [ python swig ]; + ++ stdenv.lib.optionals pythonSupport [ python swig python.pkgs.cheetah ]; postInstall = '' for prog in "$out"/bin/*; do diff --git a/pkgs/applications/radio/gnuradio/rds.nix b/pkgs/applications/radio/gnuradio/rds.nix index 1f8ed211ef29..72838569bb3b 100644 --- a/pkgs/applications/radio/gnuradio/rds.nix +++ b/pkgs/applications/radio/gnuradio/rds.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchFromGitHub, cmake, pkgconfig, boost, gnuradio +{ stdenv, fetchFromGitHub, cmake, pkgconfig, boost, gnuradio, log4cpp , makeWrapper, pythonSupport ? true, python, swig }: @@ -17,7 +17,7 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ pkgconfig ]; buildInputs = [ - cmake boost gnuradio makeWrapper + cmake boost gnuradio makeWrapper log4cpp ] ++ stdenv.lib.optionals pythonSupport [ python swig ]; postInstall = '' diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 67bed0dedb24..8468009bd625 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -21277,6 +21277,7 @@ in # Use the same gnuradio for gr-osmosdr as well gr-osmosdr = gr-osmosdr.override { gnuradio = gnuradio3_7Minimal; + pythonSupport = false; }; }; -- cgit v1.2.3 From 080930412b51d80a78a6c505a682323e7ad0cb2b Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Tue, 6 Oct 2020 05:03:16 +0300 Subject: gnss-sdr: Fix build by adding python six --- pkgs/applications/radio/gnss-sdr/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/applications/radio/gnss-sdr/default.nix b/pkgs/applications/radio/gnss-sdr/default.nix index cc89ffb4f870..d7e2d44c75ce 100644 --- a/pkgs/applications/radio/gnss-sdr/default.nix +++ b/pkgs/applications/radio/gnss-sdr/default.nix @@ -41,6 +41,7 @@ stdenv.mkDerivation rec { orc pkgconfig pythonPackages.Mako + pythonPackages.six # UHD support is optional, but gnuradio is built with it, so there's # nothing to be gained by leaving it out. -- cgit v1.2.3 From 44d041786b878ba6b37b86d3a86d01fdd66044fc Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Tue, 20 Oct 2020 19:56:26 +0300 Subject: rl-2103: Mention gnuradio expressions changes. Mention 3.8 and that it's now possible to override it and 3.7 to compile only certain features. --- nixos/doc/manual/release-notes/rl-2103.xml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/nixos/doc/manual/release-notes/rl-2103.xml b/nixos/doc/manual/release-notes/rl-2103.xml index 96061e9ca597..87a99f9ac8e7 100644 --- a/nixos/doc/manual/release-notes/rl-2103.xml +++ b/nixos/doc/manual/release-notes/rl-2103.xml @@ -26,6 +26,19 @@ GNOME desktop environment was upgraded to 3.38, see its release notes. + + + GNURadio 3.8 was + finnally + packaged, along with a rewrite to the Nix expressions, allowing users to + override the features upstream supports selecting to compile or not to. + Additionally, the attribute gnuradio and gnuradio3_7 + now point to an externally wrapped by default derivations, that allow you to + also add `extraPythonPackages` to the Python interpreter used by GNURadio. + Missing environmental variables needed for operational GUI were also added + (#7547). + + -- cgit v1.2.3 From 3d55b9a8993ad34674acd1894b5fc7ba325b6a8b Mon Sep 17 00:00:00 2001 From: "R. RyanTM" Date: Thu, 22 Oct 2020 10:52:56 +0000 Subject: comedilib: 0.11.0 -> 0.12.0 --- pkgs/development/libraries/comedilib/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/comedilib/default.nix b/pkgs/development/libraries/comedilib/default.nix index f011c04d8856..98811b97c87e 100644 --- a/pkgs/development/libraries/comedilib/default.nix +++ b/pkgs/development/libraries/comedilib/default.nix @@ -13,13 +13,13 @@ stdenv.mkDerivation rec { pname = "comedilib"; - version = "0.11.0"; + version = "0.12.0"; src = fetchFromGitHub { owner = "Linux-Comedi"; repo = "comedilib"; rev = "r${stdenv.lib.replaceStrings [ "." ] [ "_" ] version}"; - sha256 = "159sv4jdgmcaqz76vazkyxxb85ni7pg14p1qv7y94hib3kspc195"; + sha256 = "0kfs2dw62vjz8j7fgsxq6ky8r8kca726gyklbm6kljvgfh47lyfw"; }; nativeBuildInputs = [ -- cgit v1.2.3 From d3b3bf7eb8aee5cd08e3250f049a9eb7d6e212b0 Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Fri, 6 Nov 2020 12:03:47 +0200 Subject: fixup! gnuradio: rewrite --- pkgs/applications/radio/gnuradio/wrapper.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/applications/radio/gnuradio/wrapper.nix b/pkgs/applications/radio/gnuradio/wrapper.nix index 05202840ac02..6b854918f571 100644 --- a/pkgs/applications/radio/gnuradio/wrapper.nix +++ b/pkgs/applications/radio/gnuradio/wrapper.nix @@ -26,6 +26,8 @@ let pythonPkgs = extraPythonPackages + # Add the extraPackages as python modules as well + ++ (builtins.map unwrapped.python.pkgs.toPythonModule extraPackages) ++ stdenv.lib.flatten (stdenv.lib.mapAttrsToList ( feat: info: ( if unwrapped.hasFeature feat unwrapped.features then -- cgit v1.2.3 From 0f615e80a09b186c1086a8080f9580bd4f83218e Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Mon, 9 Nov 2020 01:17:12 +0200 Subject: fixup! gnuradio: rewrite --- pkgs/applications/radio/gnuradio/3.7.nix | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/pkgs/applications/radio/gnuradio/3.7.nix b/pkgs/applications/radio/gnuradio/3.7.nix index fdf0016de8c4..54fb0d7d66cd 100644 --- a/pkgs/applications/radio/gnuradio/3.7.nix +++ b/pkgs/applications/radio/gnuradio/3.7.nix @@ -33,10 +33,8 @@ , qt4 , qwt6_qt4 # Features available to override, the list of them is in featuresInfo. They -# are all turned on by default, besides wxgui which is recommended by upstream -# in favor of gr-qtgui, see: -# https://www.gnuradio.org/news/2019-08-10-gnu-radio-v3-8-0-0-release/ -, features ? { gr-wxgui = false; } +# are all turned on by default +, features ? {} # If one wishes to use a different src or name for a very custom build , overrideSrc ? {} , pname ? "gnuradio" -- cgit v1.2.3