about summary refs log tree commit diff
path: root/pkgs/applications/radio
diff options
context:
space:
mode:
authorElis Hirwing <elis@hirwing.se>2019-02-09 20:00:17 +0100
committerElis Hirwing <elis@hirwing.se>2019-02-09 21:40:16 +0100
commit4619f2ab12fef6e7a808c3b38427da6ed86b6932 (patch)
tree0ffbf06d0716af0f7e055785e50f08a887b9b56d /pkgs/applications/radio
parent7bbe7e34a70f5d87b5e169b406dd536123ded3e4 (diff)
downloadnixlib-4619f2ab12fef6e7a808c3b38427da6ed86b6932.tar
nixlib-4619f2ab12fef6e7a808c3b38427da6ed86b6932.tar.gz
nixlib-4619f2ab12fef6e7a808c3b38427da6ed86b6932.tar.bz2
nixlib-4619f2ab12fef6e7a808c3b38427da6ed86b6932.tar.lz
nixlib-4619f2ab12fef6e7a808c3b38427da6ed86b6932.tar.xz
nixlib-4619f2ab12fef6e7a808c3b38427da6ed86b6932.tar.zst
nixlib-4619f2ab12fef6e7a808c3b38427da6ed86b6932.zip
uhd: Move from misc to radio
Diffstat (limited to 'pkgs/applications/radio')
-rw-r--r--pkgs/applications/radio/uhd/default.nix70
-rw-r--r--pkgs/applications/radio/uhd/neon.patch19
2 files changed, 89 insertions, 0 deletions
diff --git a/pkgs/applications/radio/uhd/default.nix b/pkgs/applications/radio/uhd/default.nix
new file mode 100644
index 000000000000..484e8787d50a
--- /dev/null
+++ b/pkgs/applications/radio/uhd/default.nix
@@ -0,0 +1,70 @@
+{ stdenv, fetchurl, fetchFromGitHub, cmake, pkgconfig
+, python, pythonPackages, orc, libusb1, boost }:
+
+# You need these udev rules to not have to run as root (copied from
+# ${uhd}/share/uhd/utils/uhd-usrp.rules):
+#
+#   SUBSYSTEMS=="usb", ATTRS{idVendor}=="fffe", ATTRS{idProduct}=="0002", MODE:="0666"
+#   SUBSYSTEMS=="usb", ATTRS{idVendor}=="2500", ATTRS{idProduct}=="0002", MODE:="0666"
+
+let
+  uhdVer = "v" + version;
+
+  # UHD seems to use three different version number styles: x.y.z, xxx_yyy_zzz
+  # and xxx.yyy.zzz. Hrmpf... style keeps changing
+  version = "3.13.0.1";
+
+  # Firmware images are downloaded (pre-built) from the respective release on Github
+  uhdImagesSrc = fetchurl {
+    url = "https://github.com/EttusResearch/uhd/releases/download/${uhdVer}/uhd-images_${version}.tar.xz";
+    sha256 = "0y9i93z188ch0hdlkvv0k9m0k7vns7rbxaqsnk35xnlqlxxgqdvj";
+  };
+
+in stdenv.mkDerivation {
+  name = "uhd-${version}";
+
+  src = fetchFromGitHub {
+    owner = "EttusResearch";
+    repo = "uhd";
+    rev = "${uhdVer}";
+    sha256 = "0si49qk96zhpanmcrzlr3igc5s1y30x4p0z973q60dx9fhqsbb6k";
+  };
+
+  enableParallelBuilding = true;
+
+  # ABI differences GCC 7.1
+  # /nix/store/wd6r25miqbk9ia53pp669gn4wrg9n9cj-gcc-7.3.0/include/c++/7.3.0/bits/vector.tcc:394:7: note: parameter passing for argument of type 'std::vector<uhd::range_t>::iterator {aka __gnu_cxx::__normal_iterator<uhd::range_t*, std::vector<uhd::range_t> >}' changed in GCC 7.1
+
+  cmakeFlags = [ "-DLIBUSB_INCLUDE_DIRS=${libusb1.dev}/include/libusb-1.0"] ++
+               [ (stdenv.lib.optionalString stdenv.isAarch32 "-DCMAKE_CXX_FLAGS=-Wno-psabi") ];
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+  buildInputs = [ python pythonPackages.pyramid_mako orc libusb1 boost ];
+
+  # Build only the host software
+  preConfigure = "cd host";
+  patches = if stdenv.isAarch32 then ./neon.patch else null;
+
+  postPhases = [ "installFirmware" ];
+
+  # UHD expects images in `$CMAKE_INSTALL_PREFIX/share/uhd/images`
+  installFirmware = ''
+    mkdir -p "$out/share/uhd/images"
+    tar --strip-components=1 -xvf "${uhdImagesSrc}" -C "$out/share/uhd/images"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "USRP Hardware Driver (for Software Defined Radio)";
+    longDescription = ''
+      The USRP Hardware Driver (UHD) software is the hardware driver for all
+      USRP (Universal Software Radio Peripheral) devices.
+
+      USRP devices are designed and sold by Ettus Research, LLC and its parent
+      company, National Instruments.
+    '';
+    homepage = https://uhd.ettus.com/;
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux ++ platforms.darwin;
+    maintainers = with maintainers; [ bjornfor fpletz tomberek ];
+  };
+}
diff --git a/pkgs/applications/radio/uhd/neon.patch b/pkgs/applications/radio/uhd/neon.patch
new file mode 100644
index 000000000000..18ec59c1d64b
--- /dev/null
+++ b/pkgs/applications/radio/uhd/neon.patch
@@ -0,0 +1,19 @@
+Description: When building for armhf, enable NEON
+ NEON is part of the armhf baseline, so this will always be enabled on
+ armhf.
+Author: Paul Tagliamonte <paultag@debian.org>
+Bug-Debian: https://bugs.debian.org/873608
+Origin: vendor
+Last-Update: 2017-08-29
+
+--- uhd-3.10.2.0.orig/host/lib/convert/CMakeLists.txt
++++ uhd-3.10.2.0/host/lib/convert/CMakeLists.txt
+@@ -67,6 +67,8 @@ IF(HAVE_ARM_NEON_H AND (${CMAKE_SIZEOF_V
+         ${CMAKE_CURRENT_SOURCE_DIR}/convert_with_neon.cpp
+         ${CMAKE_CURRENT_SOURCE_DIR}/convert_neon.S
+     )
++
++    SET ( CMAKE_CXX_FLAGS "-mfpu=neon" )
+ ENDIF()
+ 
+ ########################################################################