From 728af8117e79bf900e2d38b8d92f0184803bda55 Mon Sep 17 00:00:00 2001 From: Jordan Moore Date: Sat, 24 May 2025 18:45:24 -0400 Subject: [PATCH] gnu: Add limesuite-ng. * gnu/packages/radio.scm (limesuite-ng): New variable. Change-Id: I3df16ede6ba42249e201b3331d03a9ec15adaeda Signed-off-by: Ian Eure --- gnu/packages/radio.scm | 92 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) diff --git a/gnu/packages/radio.scm b/gnu/packages/radio.scm index 175ed05f8c2..25f9d53fedc 100644 --- a/gnu/packages/radio.scm +++ b/gnu/packages/radio.scm @@ -17,6 +17,7 @@ ;;; Copyright © 2024 Andy Tai ;;; Copyright © 2024 Noisytoot ;;; Copyright © 2025 Rutherther +;;; Copyright © 2025 Jordan Moore ;;; ;;; This file is part of GNU Guix. ;;; @@ -1913,6 +1914,97 @@ mode) providing weak signal keyboard to keyboard messaging to amateur radio operators.") (license license:gpl3))) +(define-public limesuite-ng + (package + (name "limesuite-ng") + (version "25.1.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/myriadrf/LimeSuiteNG.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1riawgl7x89n6384y1j6brak3yzslap1vsnr5i33rwqf7hbrl4kh")))) + (build-system cmake-build-system) + (arguments + (list + #:configure-flags + #~(list + ;; Do not build pcie drivers, as they require + ;; kernel specific headers. + "-DBUILD_DRIVERS_LIMEPCIE=false" + ;; Specify the udev rules installation path into + ;; the ouput profile. + (string-append "-DUDEV_RULES_INSTALL_PATH=" + #$output "/lib/udev/rules.d") + ;; Do not reload udev rules after build. + "-DUDEV_RULES_RELOAD_ON_INSTALL=false") + #:phases + #~(modify-phases %standard-phases + ;; The test binary requires different build options, so we + ;; re-issue a cmake configure + build before running the tests. + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (with-directory-excursion "../source" + (substitute* "tests/CMakeLists.txt" + ;; Provide google test locally instead of remote fetch. + (("fetchcontent_makeavailable\\(googletest\\)") + "find_package(GTest REQUIRED)")) + ;; Configure the test build. + (invoke "cmake" + "-B" + "../tests" + "-DCMAKE_BUILD_TYPE=Debug" + "-DBUILD_SHARED_LIBS=OFF" + "-DENABLE_UNIT_TESTS=on" + "-DBUILD_GUI=off")) + ;; Build and run the test binary. + (with-directory-excursion "../tests" + (invoke "cmake" + "--build" + "tests" + "--parallel" + (number->string (parallel-job-count)) + "--config" + "Debug" + "--target" + "gtest-runner") + (invoke "./bin/gtest-runner")))))))) + (native-inputs (list pkg-config)) + (inputs (list boost + fftw + glew + gmp + gnuplot + gnuradio + googletest + libusb + mesa + pybind11 + python + python-numpy + soapysdr + wxwidgets + ;; GnuRadio-specific dependencies we need for the plugin, + ;; if one is not present, then it will silently omit the + ;; GnuRadio plugin from the build. Necessary dependencies + ;; can be found in the path `cmake/Modules/GnuradioConfig.cmake` + ;; in the GnuRadio source code checkout and by grepping for + ;; "Gnuradio_NOT_FOUND_MESSAGE" in CMake build logs. + spdlog + volk)) + (home-page "https://github.com/myriadrf/LimeSuiteNG") + (synopsis "C++ library and tools for LimeSDR devices (LMS7002M)") + (description + "Lime Suite NG is a collection of software supporting several hardware + platforms based on the LMS7002M transceiver under the LimeSDR name. + It provides a C++ API, command-line tools, a GUI, and plugins for + multiple SDR tools.") + (license license:expat))) + (define-public xnec2c (package (name "xnec2c")