diff options
Diffstat (limited to 'infra/libkookie/nixpkgs/pkgs/applications/radio/gnuradio/3.7.nix')
-rw-r--r-- | infra/libkookie/nixpkgs/pkgs/applications/radio/gnuradio/3.7.nix | 295 |
1 files changed, 295 insertions, 0 deletions
diff --git a/infra/libkookie/nixpkgs/pkgs/applications/radio/gnuradio/3.7.nix b/infra/libkookie/nixpkgs/pkgs/applications/radio/gnuradio/3.7.nix new file mode 100644 index 000000000000..54fb0d7d66cd --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/radio/gnuradio/3.7.nix @@ -0,0 +1,295 @@ +{ 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 +, features ? {} +# 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 + ; +} |