uhd: 3.15.0.0 -> 4.0.0.0
This commit is contained in:
parent
a3228bb6e8
commit
4f2573e875
159
pkgs/applications/radio/uhd/3.5.nix
Normal file
159
pkgs/applications/radio/uhd/3.5.nix
Normal file
|
@ -0,0 +1,159 @@
|
||||||
|
{ lib
|
||||||
|
, stdenv
|
||||||
|
, fetchurl
|
||||||
|
, fetchFromGitHub
|
||||||
|
, cmake
|
||||||
|
, pkg-config
|
||||||
|
# See https://files.ettus.com/manual_archive/v3.15.0.0/html/page_build_guide.html for dependencies explanations
|
||||||
|
, boost
|
||||||
|
, enableLibuhd_C_api ? true
|
||||||
|
# requires numpy
|
||||||
|
, enableLibuhd_Python_api ? false
|
||||||
|
, python3
|
||||||
|
, enableExamples ? false
|
||||||
|
, enableUtils ? false
|
||||||
|
, enableLiberio ? false
|
||||||
|
, liberio
|
||||||
|
, libusb1
|
||||||
|
, enableDpdk ? false
|
||||||
|
, dpdk
|
||||||
|
# Devices
|
||||||
|
, enableOctoClock ? true
|
||||||
|
, enableMpmd ? true
|
||||||
|
, enableB100 ? true
|
||||||
|
, enableB200 ? true
|
||||||
|
, enableUsrp1 ? true
|
||||||
|
, enableUsrp2 ? true
|
||||||
|
, enableX300 ? true
|
||||||
|
, enableN230 ? true
|
||||||
|
, enableN300 ? true
|
||||||
|
, enableN320 ? true
|
||||||
|
, enableE300 ? true
|
||||||
|
, enableE320 ? true
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
onOffBool = b: if b then "ON" else "OFF";
|
||||||
|
inherit (lib) optionals;
|
||||||
|
in
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "uhd";
|
||||||
|
# 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.15.0.0";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "EttusResearch";
|
||||||
|
repo = "uhd";
|
||||||
|
rev = "v${version}";
|
||||||
|
sha256 = "0jknln88a69fh244670nb7qrflbyv0vvdxfddb5g8ncpb6hcg8qf";
|
||||||
|
};
|
||||||
|
# Firmware images are downloaded (pre-built) from the respective release on Github
|
||||||
|
uhdImagesSrc = fetchurl {
|
||||||
|
url = "https://github.com/EttusResearch/uhd/releases/download/v${version}/uhd-images_${version}.tar.xz";
|
||||||
|
sha256 = "1fir1a13ac07mqhm4sr34cixiqj2difxq0870qv1wr7a7cbfw6vp";
|
||||||
|
};
|
||||||
|
|
||||||
|
cmakeFlags = [
|
||||||
|
"-DENABLE_LIBUHD=ON"
|
||||||
|
"-DENABLE_USB=ON"
|
||||||
|
"-DENABLE_TESTS=ON" # This installs tests as well so we delete them via postPhases
|
||||||
|
"-DENABLE_EXAMPLES=${onOffBool enableExamples}"
|
||||||
|
"-DENABLE_UTILS=${onOffBool enableUtils}"
|
||||||
|
"-DENABLE_LIBUHD_C_API=${onOffBool enableLibuhd_C_api}"
|
||||||
|
"-DENABLE_LIBUHD_PYTHON_API=${onOffBool enableLibuhd_Python_api}"
|
||||||
|
"-DENABLE_LIBERIO=${onOffBool enableLiberio}"
|
||||||
|
"-DENABLE_DPDK=${onOffBool enableDpdk}"
|
||||||
|
# Devices
|
||||||
|
"-DENABLE_OCTOCLOCK=${onOffBool enableOctoClock}"
|
||||||
|
"-DENABLE_MPMD=${onOffBool enableMpmd}"
|
||||||
|
"-DENABLE_B100=${onOffBool enableB100}"
|
||||||
|
"-DENABLE_B200=${onOffBool enableB200}"
|
||||||
|
"-DENABLE_USRP1=${onOffBool enableUsrp1}"
|
||||||
|
"-DENABLE_USRP2=${onOffBool enableUsrp2}"
|
||||||
|
"-DENABLE_X300=${onOffBool enableX300}"
|
||||||
|
"-DENABLE_N230=${onOffBool enableN230}"
|
||||||
|
"-DENABLE_N300=${onOffBool enableN300}"
|
||||||
|
"-DENABLE_N320=${onOffBool enableN320}"
|
||||||
|
"-DENABLE_E300=${onOffBool enableE300}"
|
||||||
|
"-DENABLE_E320=${onOffBool enableE320}"
|
||||||
|
]
|
||||||
|
# TODO: Check if this still needed
|
||||||
|
# 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
|
||||||
|
++ [ (lib.optionalString stdenv.isAarch32 "-DCMAKE_CXX_FLAGS=-Wno-psabi") ]
|
||||||
|
;
|
||||||
|
|
||||||
|
# Python + Mako are always required for the build itself but not necessary for runtime.
|
||||||
|
pythonEnv = python3.withPackages (ps: with ps; [ Mako ]
|
||||||
|
++ optionals (enableLibuhd_Python_api) [ numpy setuptools ]
|
||||||
|
++ optionals (enableUtils) [ requests six ]
|
||||||
|
);
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
cmake
|
||||||
|
pkg-config
|
||||||
|
]
|
||||||
|
# If both enableLibuhd_Python_api and enableUtils are off, we don't need
|
||||||
|
# pythonEnv in buildInputs as it's a 'build' dependency and not a runtime
|
||||||
|
# dependency
|
||||||
|
++ optionals (!enableLibuhd_Python_api && !enableUtils) [ pythonEnv ]
|
||||||
|
;
|
||||||
|
buildInputs = [
|
||||||
|
boost
|
||||||
|
libusb1
|
||||||
|
]
|
||||||
|
# However, if enableLibuhd_Python_api *or* enableUtils is on, we need
|
||||||
|
# pythonEnv for runtime as well. The utilities' runtime dependencies are
|
||||||
|
# handled at the environment
|
||||||
|
++ optionals (enableLibuhd_Python_api || enableUtils) [ pythonEnv ]
|
||||||
|
++ optionals (enableLiberio) [ liberio ]
|
||||||
|
++ optionals (enableDpdk) [ dpdk ]
|
||||||
|
;
|
||||||
|
|
||||||
|
doCheck = true;
|
||||||
|
|
||||||
|
# Build only the host software
|
||||||
|
preConfigure = "cd host";
|
||||||
|
# TODO: Check if this still needed, perhaps relevant:
|
||||||
|
# https://files.ettus.com/manual_archive/v3.15.0.0/html/page_build_guide.html#build_instructions_unix_arm
|
||||||
|
patches = if stdenv.isAarch32 then ./neon.patch else null;
|
||||||
|
|
||||||
|
postPhases = [ "installFirmware" "removeInstalledTests" ]
|
||||||
|
++ optionals (enableUtils) [ "moveUdevRules" ]
|
||||||
|
;
|
||||||
|
|
||||||
|
# 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"
|
||||||
|
'';
|
||||||
|
|
||||||
|
# -DENABLE_TESTS=ON installs the tests, we don't need them in the output
|
||||||
|
removeInstalledTests = ''
|
||||||
|
rm -r $out/lib/uhd/tests
|
||||||
|
'';
|
||||||
|
|
||||||
|
# Moves the udev rules to the standard location, needed only if utils are
|
||||||
|
# enabled
|
||||||
|
moveUdevRules = ''
|
||||||
|
mkdir -p $out/lib/udev/rules.d
|
||||||
|
mv $out/lib/uhd/utils/uhd-usrp.rules $out/lib/udev/rules.d/
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with 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 ];
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,4 +1,5 @@
|
||||||
{ lib, stdenv
|
{ lib
|
||||||
|
, stdenv
|
||||||
, fetchurl
|
, fetchurl
|
||||||
, fetchFromGitHub
|
, fetchFromGitHub
|
||||||
, cmake
|
, cmake
|
||||||
|
@ -8,14 +9,14 @@
|
||||||
, enableLibuhd_C_api ? true
|
, enableLibuhd_C_api ? true
|
||||||
# requires numpy
|
# requires numpy
|
||||||
, enableLibuhd_Python_api ? false
|
, enableLibuhd_Python_api ? false
|
||||||
, python3 ? null
|
, python3
|
||||||
, enableExamples ? false
|
, enableExamples ? false
|
||||||
, enableUtils ? false
|
, enableUtils ? false
|
||||||
, enableLiberio ? false
|
, enableLiberio ? false
|
||||||
, liberio ? null
|
, liberio
|
||||||
, libusb1 ? null
|
, libusb1
|
||||||
, enableDpdk ? false
|
, enableDpdk ? false
|
||||||
, dpdk ? null
|
, dpdk
|
||||||
# Devices
|
# Devices
|
||||||
, enableOctoClock ? true
|
, enableOctoClock ? true
|
||||||
, enableMpmd ? true
|
, enableMpmd ? true
|
||||||
|
@ -40,18 +41,18 @@ stdenv.mkDerivation rec {
|
||||||
pname = "uhd";
|
pname = "uhd";
|
||||||
# UHD seems to use three different version number styles: x.y.z, xxx_yyy_zzz
|
# UHD seems to use three different version number styles: x.y.z, xxx_yyy_zzz
|
||||||
# and xxx.yyy.zzz. Hrmpf... style keeps changing
|
# and xxx.yyy.zzz. Hrmpf... style keeps changing
|
||||||
version = "3.15.0.0";
|
version = "4.0.0.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "EttusResearch";
|
owner = "EttusResearch";
|
||||||
repo = "uhd";
|
repo = "uhd";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "0jknln88a69fh244670nb7qrflbyv0vvdxfddb5g8ncpb6hcg8qf";
|
sha256 = "NCyiI4pIPw0nBRFdUGpgZ/x2mWz+Qm78ZGACUnSbGSs=";
|
||||||
};
|
};
|
||||||
# Firmware images are downloaded (pre-built) from the respective release on Github
|
# Firmware images are downloaded (pre-built) from the respective release on Github
|
||||||
uhdImagesSrc = fetchurl {
|
uhdImagesSrc = fetchurl {
|
||||||
url = "https://github.com/EttusResearch/uhd/releases/download/v${version}/uhd-images_${version}.tar.xz";
|
url = "https://github.com/EttusResearch/uhd/releases/download/v${version}/uhd-images_${version}.tar.xz";
|
||||||
sha256 = "1fir1a13ac07mqhm4sr34cixiqj2difxq0870qv1wr7a7cbfw6vp";
|
sha256 = "Xfx0bsHUQ5+Dp+xk0sVWWP83oyXQcUH5AX4PNEE7fY4=";
|
||||||
};
|
};
|
||||||
|
|
||||||
cmakeFlags = [
|
cmakeFlags = [
|
||||||
|
|
|
@ -13141,6 +13141,7 @@ in
|
||||||
|
|
||||||
uefi-firmware-parser = callPackage ../development/tools/analysis/uefi-firmware-parser { };
|
uefi-firmware-parser = callPackage ../development/tools/analysis/uefi-firmware-parser { };
|
||||||
|
|
||||||
|
uhd3_5 = callPackage ../applications/radio/uhd/3.5.nix { };
|
||||||
uhd = callPackage ../applications/radio/uhd { };
|
uhd = callPackage ../applications/radio/uhd { };
|
||||||
|
|
||||||
uisp = callPackage ../development/tools/misc/uisp { };
|
uisp = callPackage ../development/tools/misc/uisp { };
|
||||||
|
@ -22358,6 +22359,8 @@ in
|
||||||
gnuradio3_7-unwrapped = callPackage ../applications/radio/gnuradio/3.7.nix {
|
gnuradio3_7-unwrapped = callPackage ../applications/radio/gnuradio/3.7.nix {
|
||||||
inherit (darwin.apple_sdk.frameworks) CoreAudio;
|
inherit (darwin.apple_sdk.frameworks) CoreAudio;
|
||||||
python = python2;
|
python = python2;
|
||||||
|
# Incompatible with uhd4+
|
||||||
|
uhd = uhd3_5;
|
||||||
};
|
};
|
||||||
# A build without gui components and other utilites not needed if gnuradio is
|
# A build without gui components and other utilites not needed if gnuradio is
|
||||||
# used as a c++ library.
|
# used as a c++ library.
|
||||||
|
|
Loading…
Reference in a new issue