aboutsummaryrefslogtreecommitdiff
path: root/infra/libkookie/nixpkgs/pkgs/applications/radio/gnuradio/3.7.nix
diff options
context:
space:
mode:
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.nix295
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
+ ;
+}