diff options
Diffstat (limited to 'infra/libkookie/nixpkgs/pkgs/applications/radio')
30 files changed, 985 insertions, 271 deletions
diff --git a/infra/libkookie/nixpkgs/pkgs/applications/radio/aldo/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/radio/aldo/default.nix index df52531a518d..83bb520272ea 100644 --- a/infra/libkookie/nixpkgs/pkgs/applications/radio/aldo/default.nix +++ b/infra/libkookie/nixpkgs/pkgs/applications/radio/aldo/default.nix @@ -1,14 +1,19 @@ -{ stdenv, fetchurl, libao }: +{ stdenv, fetchgit, libao, autoreconfHook }: -stdenv.mkDerivation rec { +let pname = "aldo"; - version = "0.7.7"; + version = "0.7.8"; +in stdenv.mkDerivation { + inherit pname version; - src = fetchurl { - url = "mirror://savannah/${pname}/${pname}-${version}.tar.bz2"; - sha256 = "14lzgldqzbbzydsy1cai3wln3hpyj1yhj8ji3wygyzr616fq9f7i"; + src = fetchgit { + url = "git://git.savannah.gnu.org/${pname}.git"; + rev = "v${version}"; + sha256 = "0swvdq0pw1msy40qkpn1ar9kacqjyrw2azvf2fy38y0svyac8z2i"; }; + nativeBuildInputs = [ autoreconfHook ]; + buildInputs = [ libao ]; meta = with stdenv.lib; { diff --git a/infra/libkookie/nixpkgs/pkgs/applications/radio/direwolf/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/radio/direwolf/default.nix index aab76574968b..321b103c7f7a 100644 --- a/infra/libkookie/nixpkgs/pkgs/applications/radio/direwolf/default.nix +++ b/infra/libkookie/nixpkgs/pkgs/applications/radio/direwolf/default.nix @@ -1,50 +1,41 @@ -{ stdenv, fetchFromGitHub -, alsaLib, espeak, glibc, gpsd +{ stdenv, fetchFromGitHub, cmake, alsaLib, espeak, glibc, gpsd , hamlib, perl, python, udev }: with stdenv.lib; stdenv.mkDerivation rec { pname = "direwolf"; - version = "1.5"; + version = "1.6"; src = fetchFromGitHub { owner = "wb2osz"; repo = "direwolf"; rev = version; - sha256 = "1w55dv9xqgc9mpincsj017838vmvdy972fhis3ddskyfvhhzgcsk"; + sha256 = "0xmz64m02knbrpasfij4rrq53ksxna5idxwgabcw4n2b1ig7pyx5"; }; + nativeBuildInputs = [ cmake ]; + buildInputs = [ espeak gpsd hamlib perl python ] ++ (optionals stdenv.isLinux [alsaLib udev]); - makeFlags = [ "DESTDIR=$(out)" ]; + patches = [ + ./udev-fix.patch + ]; postPatch = '' - substituteInPlace symbols.c \ + substituteInPlace src/symbols.c \ --replace /usr/share/direwolf/symbols-new.txt $out/share/direwolf/symbols-new.txt \ --replace /opt/local/share/direwolf/symbols-new.txt $out/share/direwolf/symbols-new.txt - substituteInPlace decode_aprs.c \ + substituteInPlace src/decode_aprs.c \ --replace /usr/share/direwolf/tocalls.txt $out/share/direwolf/tocalls.txt \ --replace /opt/local/share/direwolf/tocalls.txt $out/share/direwolf/tocalls.txt - substituteInPlace dwespeak.sh \ + substituteInPlace scripts/dwespeak.sh \ --replace espeak ${espeak}/bin/espeak - '' + (optionalString stdenv.isLinux '' - substituteInPlace Makefile.linux \ - --replace /usr/include/pthread.h ${stdenv.glibc.dev}/include/pthread.h \ - --replace /usr/include/alsa ${alsaLib.dev}/include/alsa \ - --replace /usr/include/gps.h ${gpsd}/include/gps.h \ - --replace /usr/include/hamlib ${hamlib}/include/hamlib \ - --replace /usr/include/libudev.h ${udev.dev}/include/libudev.h \ - --replace /etc/udev $out/etc/udev \ - --replace 'Exec=xterm -hold -title \"Dire Wolf\" -bg white -e \"$(DESTDIR)/bin/direwolf\"' "Exec=$out/bin/direwolf" \ - --replace '#Terminal=true' 'Terminal=true' \ - --replace 'Path=$(HOME)' '#Path=' - ''); - - preInstall = '' - mkdir -p $out/bin + substituteInPlace cmake/cpack/direwolf.desktop.in \ + --replace 'Terminal=false' 'Terminal=true' \ + --replace 'Exec=@APPLICATION_DESKTOP_EXEC@' 'Exec=direwolf' \ ''; meta = { diff --git a/infra/libkookie/nixpkgs/pkgs/applications/radio/direwolf/udev-fix.patch b/infra/libkookie/nixpkgs/pkgs/applications/radio/direwolf/udev-fix.patch new file mode 100644 index 000000000000..cff17fb88621 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/radio/direwolf/udev-fix.patch @@ -0,0 +1,11 @@ +--- direwolf/conf/CMakeLists.txt.orig 2020-12-04 11:12:59.739390894 -0600 ++++ direwolf/conf/CMakeLists.txt 2020-12-04 11:23:09.146594795 -0600 +@@ -26,7 +26,7 @@ + + # install udev rules for CM108 + if(LINUX) +- install(FILES "${CUSTOM_CONF_DIR}/99-direwolf-cmedia.rules" DESTINATION /etc/udev/rules.d/) ++ install(FILES "${CUSTOM_CONF_DIR}/99-direwolf-cmedia.rules" DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/udev/rules.d/") + endif() + + install(FILES "${CMAKE_BINARY_DIR}/direwolf.conf" DESTINATION ${INSTALL_CONF_DIR}) diff --git a/infra/libkookie/nixpkgs/pkgs/applications/radio/dump1090/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/radio/dump1090/default.nix index 11c5c46ae681..6e70a9f8d032 100644 --- a/infra/libkookie/nixpkgs/pkgs/applications/radio/dump1090/default.nix +++ b/infra/libkookie/nixpkgs/pkgs/applications/radio/dump1090/default.nix @@ -9,13 +9,13 @@ stdenv.mkDerivation rec { pname = "dump1090"; - version = "3.8.1"; + version = "4.0"; src = fetchFromGitHub { owner = "flightaware"; repo = pname; rev = "v${version}"; - sha256 = "0xg8rzrxqklx1m9ncxsd96dlkbjcsxfi2mrb859v50f07xysdyd8"; + sha256 = "1zacsqaqsiapljhzw31dwc4nld2rp98jm3ivkyznrhzk9n156p42"; }; nativeBuildInputs = [ pkgconfig ]; diff --git a/infra/libkookie/nixpkgs/pkgs/applications/radio/ebook2cw/Makefile.patch b/infra/libkookie/nixpkgs/pkgs/applications/radio/ebook2cw/Makefile.patch new file mode 100644 index 000000000000..be6c32e41470 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/radio/ebook2cw/Makefile.patch @@ -0,0 +1,12 @@ +diff --git a/Makefile b/Makefile +index 005d60d..f69c7fe 100644 +--- a/Makefile ++++ b/Makefile +@@ -41,6 +41,7 @@ install: + install -d -v $(DESTDIR)/bin/ + install -d -v $(DESTDIR)/share/doc/ebook2cw/ + install -d -v $(DESTDIR)/share/doc/ebook2cw/examples/ ++ install -d -v $(DESTDIR)/share/locale/de/LC_MESSAGES/ + install -s -m 0755 ebook2cw $(DESTDIR)/bin/ + install -m 0644 ebook2cw.1 $(DESTDIR)/share/man/man1/ + install -m 0644 README $(DESTDIR)/share/doc/ebook2cw/ diff --git a/infra/libkookie/nixpkgs/pkgs/applications/radio/ebook2cw/configfile.patch b/infra/libkookie/nixpkgs/pkgs/applications/radio/ebook2cw/configfile.patch deleted file mode 100644 index c7aafe5227a5..000000000000 --- a/infra/libkookie/nixpkgs/pkgs/applications/radio/ebook2cw/configfile.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/ebook2cw.c 2017-11-08 19:52:58.298131348 -0700 -+++ b/ebook2cw.c 2017-11-08 19:53:02.588231067 -0700 -@@ -136,7 +136,7 @@ - char isomap[256][4]; /* by these strings */ - char utf8map[256][8]; - -- char configfile[1025]; -+ char configfile[2048]; - - char id3_author[80], - id3_title[80], diff --git a/infra/libkookie/nixpkgs/pkgs/applications/radio/ebook2cw/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/radio/ebook2cw/default.nix index d273594f4c90..5bd9e47ab716 100644 --- a/infra/libkookie/nixpkgs/pkgs/applications/radio/ebook2cw/default.nix +++ b/infra/libkookie/nixpkgs/pkgs/applications/radio/ebook2cw/default.nix @@ -1,17 +1,18 @@ -{ stdenv, fetchsvn, lame, libvorbis }: +{ stdenv, fetchgit, lame, libvorbis, gettext }: stdenv.mkDerivation rec { pname = "ebook2cw"; - version = "0.8.2"; + version = "0.8.3"; - src = fetchsvn { - url = "svn://svn.fkurz.net/ebook2cw/tags/${pname}-${version}"; - sha256 = "1mvp3nz3k76v757792n9b7fcm5jm3jcwarl1k7cila9fi0c2rsiw"; + src = fetchgit { + url = "https://git.fkurz.net/dj1yfk/ebook2cw.git"; + rev = "${pname}-${version}"; + sha256 = "0jqmnjblv3wzr0ppqzndzd8wg02nlkvzg1fqw14vyyp76sdjsh46"; }; - buildInputs = [ lame libvorbis ]; + buildInputs = [ lame libvorbis gettext ]; - patches = [ ./configfile.patch ]; + patches = [ ./Makefile.patch ]; makeFlags = [ "DESTDIR=$(out)" ]; diff --git a/infra/libkookie/nixpkgs/pkgs/applications/radio/fldigi/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/radio/fldigi/default.nix index af93b7ee65d6..07e9647f2c3f 100644 --- a/infra/libkookie/nixpkgs/pkgs/applications/radio/fldigi/default.nix +++ b/infra/libkookie/nixpkgs/pkgs/applications/radio/fldigi/default.nix @@ -2,12 +2,12 @@ libsamplerate, libpulseaudio, libXinerama, gettext, pkgconfig, alsaLib }: stdenv.mkDerivation rec { - version = "4.1.14"; + version = "4.1.17"; pname = "fldigi"; src = fetchurl { url = "mirror://sourceforge/${pname}/${pname}-${version}.tar.gz"; - sha256 = "0hr6xbv01xf7z4r2jxxhn8xjdmca2198q4m9glh4877dllvfq6xj"; + sha256 = "1gzff60sn3h05279f9mdi1rkdws52m28shcil16911lvlq6ki13m"; }; buildInputs = [ libXinerama gettext hamlib fltk14 libjpeg libpng portaudio diff --git a/infra/libkookie/nixpkgs/pkgs/applications/radio/flmsg/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/radio/flmsg/default.nix index e437dffa4856..fa3f175fcc56 100644 --- a/infra/libkookie/nixpkgs/pkgs/applications/radio/flmsg/default.nix +++ b/infra/libkookie/nixpkgs/pkgs/applications/radio/flmsg/default.nix @@ -6,12 +6,12 @@ }: stdenv.mkDerivation rec { - version = "4.0.14"; + version = "4.0.17"; pname = "flmsg"; src = fetchurl { url = "mirror://sourceforge/fldigi/${pname}-${version}.tar.gz"; - sha256 = "0s1prawkpvr7xr7h8w7r0ly90ya3n8h6qsii0x6laqrkgjn9w9iy"; + sha256 = "09xf3f65d3qi69frznf4fdznbfbc7kmgxw716q2c7ccsmh9c5q44"; }; buildInputs = [ diff --git a/infra/libkookie/nixpkgs/pkgs/applications/radio/flrig/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/radio/flrig/default.nix index d95d894bdef7..322f2eb9a3b9 100644 --- a/infra/libkookie/nixpkgs/pkgs/applications/radio/flrig/default.nix +++ b/infra/libkookie/nixpkgs/pkgs/applications/radio/flrig/default.nix @@ -6,12 +6,12 @@ }: stdenv.mkDerivation rec { - version = "1.3.51"; + version = "1.3.53"; pname = "flrig"; src = fetchurl { url = "mirror://sourceforge/fldigi/${pname}-${version}.tar.gz"; - sha256 = "0aq4x0ai9q08ypfhzfj2inc4z3q39zq1l6h9as1kil9yn4zbay61"; + sha256 = "1m0fa891scpaf719002w9gpg1famx84kpzav1mw1fafmbzyvjw1i"; }; buildInputs = [ diff --git a/infra/libkookie/nixpkgs/pkgs/applications/radio/gnss-sdr/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/radio/gnss-sdr/default.nix index cc89ffb4f870..d7e2d44c75ce 100644 --- a/infra/libkookie/nixpkgs/pkgs/applications/radio/gnss-sdr/default.nix +++ b/infra/libkookie/nixpkgs/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. 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 + ; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/radio/gnuradio/ais.nix b/infra/libkookie/nixpkgs/pkgs/applications/radio/gnuradio/ais.nix index 30c2638a72f8..46d46d1c3255 100644 --- a/infra/libkookie/nixpkgs/pkgs/applications/radio/gnuradio/ais.nix +++ b/infra/libkookie/nixpkgs/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/infra/libkookie/nixpkgs/pkgs/applications/radio/gnuradio/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/radio/gnuradio/default.nix index dec968cd32d7..811eb37f4f31 100644 --- a/infra/libkookie/nixpkgs/pkgs/applications/radio/gnuradio/default.nix +++ b/infra/libkookie/nixpkgs/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($<$<COMPILE_LANGUAGE:CXX>:-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/infra/libkookie/nixpkgs/pkgs/applications/radio/gnuradio/gsm.nix b/infra/libkookie/nixpkgs/pkgs/applications/radio/gnuradio/gsm.nix index e0b8d7dd44f7..4e2406fc07a0 100644 --- a/infra/libkookie/nixpkgs/pkgs/applications/radio/gnuradio/gsm.nix +++ b/infra/libkookie/nixpkgs/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/infra/libkookie/nixpkgs/pkgs/applications/radio/gnuradio/limesdr.nix b/infra/libkookie/nixpkgs/pkgs/applications/radio/gnuradio/limesdr.nix index 490caaaa7bea..b2f99164bec6 100644 --- a/infra/libkookie/nixpkgs/pkgs/applications/radio/gnuradio/limesdr.nix +++ b/infra/libkookie/nixpkgs/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/infra/libkookie/nixpkgs/pkgs/applications/radio/gnuradio/nacl.nix b/infra/libkookie/nixpkgs/pkgs/applications/radio/gnuradio/nacl.nix index e3d851e2e14a..3435d5cdb4f0 100644 --- a/infra/libkookie/nixpkgs/pkgs/applications/radio/gnuradio/nacl.nix +++ b/infra/libkookie/nixpkgs/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/infra/libkookie/nixpkgs/pkgs/applications/radio/gnuradio/osmosdr.nix b/infra/libkookie/nixpkgs/pkgs/applications/radio/gnuradio/osmosdr.nix index ad54fc8d7c4f..9eb6fe648d02 100644 --- a/infra/libkookie/nixpkgs/pkgs/applications/radio/gnuradio/osmosdr.nix +++ b/infra/libkookie/nixpkgs/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/infra/libkookie/nixpkgs/pkgs/applications/radio/gnuradio/rds.nix b/infra/libkookie/nixpkgs/pkgs/applications/radio/gnuradio/rds.nix index 1f8ed211ef29..72838569bb3b 100644 --- a/infra/libkookie/nixpkgs/pkgs/applications/radio/gnuradio/rds.nix +++ b/infra/libkookie/nixpkgs/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/infra/libkookie/nixpkgs/pkgs/applications/radio/gnuradio/shared.nix b/infra/libkookie/nixpkgs/pkgs/applications/radio/gnuradio/shared.nix new file mode 100644 index 000000000000..66ce0a5f5132 --- /dev/null +++ b/infra/libkookie/nixpkgs/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/infra/libkookie/nixpkgs/pkgs/applications/radio/gnuradio/wrapper.nix b/infra/libkookie/nixpkgs/pkgs/applications/radio/gnuradio/wrapper.nix index ffed3da03187..6b854918f571 100644 --- a/infra/libkookie/nixpkgs/pkgs/applications/radio/gnuradio/wrapper.nix +++ b/infra/libkookie/nixpkgs/pkgs/applications/radio/gnuradio/wrapper.nix @@ -1,24 +1,134 @@ -{ 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 + # 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 + (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/infra/libkookie/nixpkgs/pkgs/applications/radio/gqrx/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/radio/gqrx/default.nix index 33b858799e2a..b2402aad33eb 100644 --- a/infra/libkookie/nixpkgs/pkgs/applications/radio/gqrx/default.nix +++ b/infra/libkookie/nixpkgs/pkgs/applications/radio/gqrx/default.nix @@ -9,13 +9,13 @@ assert pulseaudioSupport -> libpulseaudio != null; mkDerivation rec { pname = "gqrx"; - version = "2.12.1"; + version = "2.14.2"; src = fetchFromGitHub { owner = "csete"; repo = "gqrx"; rev = "v${version}"; - sha256 = "00alf3q6y313xpx6p7v43vqsphd2x4am4q362lw21bcy9wc4jidw"; + sha256 = "15xlzfgmffq43wn74xjqc5p2m21i3lh28qqskd2jf2hhvanpcwcp"; }; nativeBuildInputs = [ cmake ]; diff --git a/infra/libkookie/nixpkgs/pkgs/applications/radio/inspectrum/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/radio/inspectrum/default.nix index f55c78ea26b5..cf4ddd5b6e86 100644 --- a/infra/libkookie/nixpkgs/pkgs/applications/radio/inspectrum/default.nix +++ b/infra/libkookie/nixpkgs/pkgs/applications/radio/inspectrum/default.nix @@ -13,13 +13,13 @@ mkDerivation rec { pname = "inspectrum"; - version = "0.2.2"; + version = "0.2.3"; src = fetchFromGitHub { owner = "miek"; repo = "inspectrum"; rev = "v${version}"; - sha256 = "1a517y7s1xi66y5kjrpjay450pad9nc228pa8801mxq1c7m1lamm"; + sha256 = "1x6nyn429pk0f7lqzskrgsbq09mq5787xd4piic95add6n1cc355"; }; nativeBuildInputs = [ cmake pkgconfig wrapQtAppsHook ]; diff --git a/infra/libkookie/nixpkgs/pkgs/applications/radio/limesuite/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/radio/limesuite/default.nix index 013b4978b56a..25f49c3a2d65 100644 --- a/infra/libkookie/nixpkgs/pkgs/applications/radio/limesuite/default.nix +++ b/infra/libkookie/nixpkgs/pkgs/applications/radio/limesuite/default.nix @@ -5,13 +5,13 @@ stdenv.mkDerivation rec { pname = "limesuite"; - version = "20.07.2"; + version = "20.10.0"; src = fetchFromGitHub { owner = "myriadrf"; repo = "LimeSuite"; rev = "v${version}"; - sha256 = "0v0w0f5ff1gwpfy13x1q1jsx9xfg4s3ccg05ikpnkzj4yg6sjps1"; + sha256 = "04wzfhzqmxjsa6bgcr4zd518fln9rbwnbabf48kha84d70vzkdlx"; }; nativeBuildInputs = [ cmake ]; diff --git a/infra/libkookie/nixpkgs/pkgs/applications/radio/noaa-apt/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/radio/noaa-apt/default.nix index 5034d5fd93c1..01dc7b5c30db 100644 --- a/infra/libkookie/nixpkgs/pkgs/applications/radio/noaa-apt/default.nix +++ b/infra/libkookie/nixpkgs/pkgs/applications/radio/noaa-apt/default.nix @@ -13,13 +13,13 @@ rustPlatform.buildRustPackage rec { pname = "noaa-apt"; - version = "1.2.0"; + version = "1.3.0"; src = fetchFromGitHub { owner = "martinber"; repo = "noaa-apt"; rev = "v${version}"; - sha256 = "0fqki4a9c54rixdz5bpswvn433f9saw6yazgw4av3xdd7g2fdvvj"; + sha256 = "0fmbg6lw7lmm402hzddpzgi7y9mc6kic14x8rif7fampk20mv3ms"; }; nativeBuildInputs = [ @@ -36,7 +36,7 @@ rustPlatform.buildRustPackage rec { pango ]; - cargoSha256 = "1pzcq31inazmc9cz31fspzqkp0lpkjid8ai3g17sin1pfzby5jlh"; + cargoSha256 = "0w4rbbz8lsh31xkgibzndiic47690nfcjrn1411dskf7ali6djy8"; preBuild = '' # Used by macro pointing to resource location at compile time. @@ -56,9 +56,10 @@ rustPlatform.buildRustPackage rec { meta = with lib; { description = "NOAA APT image decoder"; - homepage = "http://noaa-apt.mbernardi.com.ar/"; + homepage = "https://noaa-apt.mbernardi.com.ar/"; license = licenses.gpl3Only; maintainers = with maintainers; [ trepetti ]; + platforms = platforms.all; changelog = "https://github.com/martinber/noaa-apt/releases/tag/v${version}"; }; } diff --git a/infra/libkookie/nixpkgs/pkgs/applications/radio/quisk/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/radio/quisk/default.nix new file mode 100644 index 000000000000..86edfadcce11 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/radio/quisk/default.nix @@ -0,0 +1,39 @@ +{ stdenv, python38Packages, fetchPypi +, fftw, alsaLib, pulseaudio, wxPython_4_0 }: + +python38Packages.buildPythonApplication rec { + pname = "quisk"; + version = "4.1.73"; + + src = fetchPypi { + inherit pname version; + sha256 = "37dfb02a32341025c086b07d66ddf1608d4ee1ae1c62fb51f87c97662f13e0d8"; + }; + + buildInputs = [ fftw alsaLib pulseaudio ]; + + propagatedBuildInputs = [ wxPython_4_0 ]; + + doCheck = false; + + meta = with stdenv.lib; { + description = "A SDR transceiver for radios that use the Hermes protocol"; + longDescription = '' + QUISK is a Software Defined Radio (SDR) transceiver. You supply radio + hardware that converts signals at the antenna to complex (I/Q) data at an + intermediate frequency (IF). Data can come from a sound card, Ethernet or + USB. Quisk then filters and demodulates the data and sends the audio to + your speakers or headphones. For transmit, Quisk takes the microphone + signal, converts it to I/Q data and sends it to the hardware. + + Quisk can be used with SoftRock, Hermes Lite 2, HiQSDR, Odyssey and many + radios that use the Hermes protocol. Quisk can connect to digital + programs like Fldigi and WSJT-X. Quisk can be connected to other software + like N1MM+ and software that uses Hamlib. + ''; + license = licenses.gpl2Plus; + homepage = "https://james.ahlstrom.name/quisk/"; + maintainers = with maintainers; [ pulsation ]; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/radio/rtl-sdr/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/radio/rtl-sdr/default.nix index 8fb5154ff788..7e044296b02c 100644 --- a/infra/libkookie/nixpkgs/pkgs/applications/radio/rtl-sdr/default.nix +++ b/infra/libkookie/nixpkgs/pkgs/applications/radio/rtl-sdr/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchgit, cmake, pkgconfig, libusb1 }: +{ stdenv, fetchgit, fetchpatch, cmake, pkgconfig, libusb1 }: stdenv.mkDerivation rec { pname = "rtl-sdr"; @@ -10,6 +10,12 @@ stdenv.mkDerivation rec { sha256 = "0lmvsnb4xw4hmz6zs0z5ilsah5hjz29g1s0050n59fllskqr3b8k"; }; + patches = [ (fetchpatch { + name = "hardened-udev-rules.patch"; + url = "https://osmocom.org/projects/rtl-sdr/repository/revisions/b2814731563be4d5a0a68554ece6454a2c63af12/diff?format=diff"; + sha256 = "0ns740s2rys4glq4la4bh0sxfv1mn61yfjns2yllhx70rsb2fqrn"; + }) ]; + nativeBuildInputs = [ pkgconfig cmake ]; buildInputs = [ libusb1 ]; diff --git a/infra/libkookie/nixpkgs/pkgs/applications/radio/rtl_433/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/radio/rtl_433/default.nix index 78d0f8befc98..c84160c19eae 100644 --- a/infra/libkookie/nixpkgs/pkgs/applications/radio/rtl_433/default.nix +++ b/infra/libkookie/nixpkgs/pkgs/applications/radio/rtl_433/default.nix @@ -1,25 +1,26 @@ -{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig +{ stdenv, fetchFromGitHub, cmake, pkgconfig , libusb1, rtl-sdr, soapysdr-with-plugins }: -stdenv.mkDerivation { - - version = "20.02"; +stdenv.mkDerivation rec { + version = "20.11"; pname = "rtl_433"; src = fetchFromGitHub { owner = "merbanan"; repo = "rtl_433"; - rev = "20.02"; - sha256 = "11991xky9gawkragdyg27qsf7kw5bhlg7ygvf3fn7ng00x4xbh1z"; + rev = version; + sha256 = "093bxjxkg7yf78wqj5gpijbfa2p05ny09qqsj84kzi1svnzsa369"; }; - nativeBuildInputs = [ autoreconfHook pkgconfig ]; + nativeBuildInputs = [ pkgconfig cmake ]; buildInputs = [ libusb1 rtl-sdr soapysdr-with-plugins ]; + doCheck = true; + meta = with stdenv.lib; { - description = "Decode traffic from devices that broadcast on 433.9 MHz"; + description = "Decode traffic from devices that broadcast on 433.9 MHz, 868 MHz, 315 MHz, 345 MHz and 915 MHz"; homepage = "https://github.com/merbanan/rtl_433"; license = licenses.gpl2; maintainers = with maintainers; [ earldouglas ]; diff --git a/infra/libkookie/nixpkgs/pkgs/applications/radio/sdrangel/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/radio/sdrangel/default.nix index 6d0a19334dec..dd8c56610c28 100644 --- a/infra/libkookie/nixpkgs/pkgs/applications/radio/sdrangel/default.nix +++ b/infra/libkookie/nixpkgs/pkgs/applications/radio/sdrangel/default.nix @@ -13,47 +13,40 @@ libav, libiio, libopus, libpulseaudio, -libusb-compat-0_1, +libusb1, limesuite, +libbladeRF, mkDerivation, ocl-icd, opencv3, pkgconfig, qtbase, qtmultimedia, +qtserialport, qtwebsockets, rtl-sdr, -serialdv +serialdv, +uhd }: -let - - codec2' = codec2.overrideAttrs (old: { - src = fetchFromGitHub { - owner = "drowe67"; - repo = "codec2"; - rev = "567346818c0d4d697773cf66d925fdb031e15668"; - sha256 = "0ngqlh2cw5grx2lg7xj8baz6p55gfhq4caggxkb4pxlg817pwbpa"; - }; - }); - -in mkDerivation rec { +mkDerivation rec { pname = "sdrangel"; - version = "4.11.12"; + version = "4.21.1"; src = fetchFromGitHub { owner = "f4exb"; repo = "sdrangel"; rev = "v${version}"; - sha256 = "0zbx0gklylk8npb3wnnmqpam0pdxl40f20i3wzwwh4gqrppxywzx"; + sha256 = "y6BVwnSJXiapgm9pAuby1DLLeU5MSyB4uqEa3oS35/U="; fetchSubmodules = false; }; nativeBuildInputs = [ cmake pkgconfig ]; buildInputs = [ - glew opencv3 libusb-compat-0_1 boost libopus limesuite libav libiio libpulseaudio + glew opencv3 libusb1 boost libopus limesuite libav libiio libpulseaudio qtbase qtwebsockets qtmultimedia rtl-sdr airspy hackrf - fftwFloat codec2' cm256cc serialdv + fftwFloat codec2 cm256cc serialdv qtserialport + libbladeRF uhd ]; cmakeFlags = [ "-DLIBSERIALDV_INCLUDE_DIR:PATH=${serialdv}/include/serialdv" diff --git a/infra/libkookie/nixpkgs/pkgs/applications/radio/urh/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/radio/urh/default.nix index 730b679ba61e..5411571113d5 100644 --- a/infra/libkookie/nixpkgs/pkgs/applications/radio/urh/default.nix +++ b/infra/libkookie/nixpkgs/pkgs/applications/radio/urh/default.nix @@ -5,13 +5,13 @@ python3Packages.buildPythonApplication rec { pname = "urh"; - version = "2.8.8"; + version = "2.9.0"; src = fetchFromGitHub { owner = "jopohl"; repo = pname; rev = "v${version}"; - sha256 = "0knymy85n9kxj364jpxjc4v9c238b00nl40rafi1ripkqx36bsfv"; + sha256 = "1pcyj1vzv51j8rgi0hh9chw3vfkfi03bg1rg7gs4nk95ffmwx4pd"; }; nativeBuildInputs = [ qt5.wrapQtAppsHook ]; |