diff --git a/net-wireless/uhd/Manifest b/net-wireless/uhd/Manifest new file mode 100644 index 000000000..56c287e9d --- /dev/null +++ b/net-wireless/uhd/Manifest @@ -0,0 +1,2 @@ +DIST EttusResearch-UHD-3.15.0.0.tar.gz 12895934 BLAKE2B 75bf474120a09ffe1268684659c8bbc8e781060db96b82e42a4d3463265e2a3df5e60da77d835587e6650795ae50bcab8bdecccf0f2bdd32fe77bbd6ce1ec5c8 SHA512 ef62639d956adb5b4815b8e57bf4d6e62519bcaf509ce87af4f6091b79b4bb78c2bc079ec6f678777c24a146d5d5e1c8f225ad7ac5dba46bec6f8e1cc20309b0 +DIST uhd-images_3.15.0.0.tar.xz 110161052 BLAKE2B 681b5ab0d79bbd2e5661bbfe5c975fdda83e7749f1c3b8a5ac2ba4088009a69c58f9b6a4e4c697c5ac90bdb809bc859937b3b63c9daf0984636bafaeee10e977 SHA512 ec7aa9740e0eda90bbee3751f5c65d5998e67d2bf74d36aa912041be8818e3ad03e5dfbf26ad340261f72fc98048ab5a90c56f6dff8efdd38cf0501585554033 diff --git a/net-wireless/uhd/files/uhd-3.10.3.0-tinfo.patch b/net-wireless/uhd/files/uhd-3.10.3.0-tinfo.patch new file mode 100644 index 000000000..ff9956fee --- /dev/null +++ b/net-wireless/uhd/files/uhd-3.10.3.0-tinfo.patch @@ -0,0 +1,34 @@ +--- host/utils/latency/CMakeLists.txt.orig 2017-05-11 19:44:54.824946672 +0300 ++++ host/utils/latency/CMakeLists.txt 2017-05-11 19:45:08.498880360 +0300 +@@ -35,7 +35,8 @@ + GET_FILENAME_COMPONENT(name ${source} NAME_WE) + ADD_EXECUTABLE(${name} ${source} ${latency_lib_path}) + LIBUHD_APPEND_SOURCES(${name}) +- TARGET_LINK_LIBRARIES(${name} uhd ${Boost_LIBRARIES} ${CURSES_LIBRARIES}) ++ TARGET_LINK_LIBRARIES(${name} uhd ${Boost_LIBRARIES} ++ ${CURSES_LIBRARIES} tinfo) + UHD_INSTALL(TARGETS ${name} RUNTIME DESTINATION ${latency_comp_dest} COMPONENT ${latency_comp_name}) + ENDFOREACH(source) + +--- host/examples/CMakeLists.txt.orig 2017-05-11 19:41:02.322302577 +0300 ++++ host/examples/CMakeLists.txt 2017-05-11 19:44:32.604066325 +0300 +@@ -59,7 +59,7 @@ + IF(CURSES_FOUND) + INCLUDE_DIRECTORIES(${CURSES_INCLUDE_DIR}) + ADD_EXECUTABLE(rx_ascii_art_dft rx_ascii_art_dft.cpp) +- TARGET_LINK_LIBRARIES(rx_ascii_art_dft uhd ${CURSES_LIBRARIES} ${Boost_LIBRARIES}) ++ TARGET_LINK_LIBRARIES(rx_ascii_art_dft uhd ${CURSES_LIBRARIES} tinfo ${Boost_LIBRARIES}) + UHD_INSTALL(TARGETS rx_ascii_art_dft RUNTIME DESTINATION ${PKG_LIB_DIR}/examples COMPONENT examples) + ENDIF(CURSES_FOUND) + +--- host/CMakeLists.txt.orig 2017-05-11 19:36:38.944798634 +0300 ++++ host/CMakeLists.txt 2017-05-11 19:36:40.819788408 +0300 +@@ -436,6 +436,8 @@ + LIST(APPEND UHD_LINK_LIST_STATIC "usb-1.0") + ENDIF(ENABLE_USB) + ++LIST(APPEND UHD_LINK_LIST_STATIC "tinfo") ++ + CONFIGURE_FILE( + ${CMAKE_SOURCE_DIR}/cmake/Modules/UHDConfigVersion.cmake.in + ${CMAKE_BINARY_DIR}/cmake/Modules/UHDConfigVersion.cmake diff --git a/net-wireless/uhd/files/uhd-3.13.1.0-tinfo.patch b/net-wireless/uhd/files/uhd-3.13.1.0-tinfo.patch new file mode 100644 index 000000000..de165e9de --- /dev/null +++ b/net-wireless/uhd/files/uhd-3.13.1.0-tinfo.patch @@ -0,0 +1,45 @@ +diff --git host/CMakeLists.txt host/CMakeLists.txt +index 2337396e7..3a77776a0 100644 +--- host/CMakeLists.txt ++++ host/CMakeLists.txt +@@ -531,6 +531,9 @@ endforeach(Boost_Comp) + if(ENABLE_USB) + list(APPEND UHD_LINK_LIST_STATIC "usb-1.0") + endif(ENABLE_USB) ++ ++LIST(APPEND UHD_LINK_LIST_STATIC "tinfo") ++ + # UHDConfig.cmake also needs UHD_RFNOC_FOUND + if(ENABLE_RFNOC) + set(UHD_RFNOC_FOUND "TRUE") +diff --git host/examples/CMakeLists.txt host/examples/CMakeLists.txt +index b384d978c..402aded94 100644 +--- host/examples/CMakeLists.txt ++++ host/examples/CMakeLists.txt +@@ -58,11 +58,11 @@ find_package(Curses) + if(CURSES_FOUND) + include_directories(${CURSES_INCLUDE_DIR}) + add_executable(rx_ascii_art_dft rx_ascii_art_dft.cpp) +- target_link_libraries(rx_ascii_art_dft uhd ${CURSES_LIBRARIES} ${Boost_LIBRARIES}) ++ target_link_libraries(rx_ascii_art_dft uhd ${CURSES_LIBRARIES} tinfo ${Boost_LIBRARIES}) + UHD_INSTALL(TARGETS rx_ascii_art_dft RUNTIME DESTINATION ${PKG_LIB_DIR}/examples COMPONENT examples) + + add_executable(twinrx_freq_hopping twinrx_freq_hopping.cpp) +- target_link_libraries(twinrx_freq_hopping uhd ${CURSES_LIBRARIES} ${Boost_LIBRARIES}) ++ target_link_libraries(twinrx_freq_hopping uhd ${CURSES_LIBRARIES} tinfo ${Boost_LIBRARIES}) + UHD_INSTALL(TARGETS twinrx_freq_hopping RUNTIME DESTINATION ${PKG_LIB_DIR}/examples COMPONENT examples) + endif(CURSES_FOUND) + +diff --git host/utils/latency/CMakeLists.txt host/utils/latency/CMakeLists.txt +index 05bacd77a..d3b1449a6 100644 +--- host/utils/latency/CMakeLists.txt ++++ host/utils/latency/CMakeLists.txt +@@ -25,7 +25,7 @@ if(CURSES_FOUND) + get_filename_component(name ${source} NAME_WE) + add_executable(${name} ${source} ${latency_lib_path}) + LIBUHD_APPEND_SOURCES(${name}) +- target_link_libraries(${name} uhd ${Boost_LIBRARIES} ${CURSES_LIBRARIES}) ++ target_link_libraries(${name} uhd ${Boost_LIBRARIES} tinfo ${CURSES_LIBRARIES}) + UHD_INSTALL(TARGETS ${name} RUNTIME DESTINATION ${latency_comp_dest} COMPONENT ${latency_comp_name}) + endforeach(source) + diff --git a/net-wireless/uhd/files/uhd_man_pages_optional_compress.diff b/net-wireless/uhd/files/uhd_man_pages_optional_compress.diff new file mode 100644 index 000000000..5847d50c6 --- /dev/null +++ b/net-wireless/uhd/files/uhd_man_pages_optional_compress.diff @@ -0,0 +1,76 @@ +diff --git a/host/docs/CMakeLists.txt b/host/docs/CMakeLists.txt +index 240a534db..7a7108f00 100644 +--- a/host/docs/CMakeLists.txt ++++ b/host/docs/CMakeLists.txt +@@ -144,34 +144,49 @@ set(man_page_sources + ######################################################################## + # Setup man pages + ######################################################################## +-find_package(GZip) ++option(ENABLE_MAN_PAGE_COMPRESSION "Compress man pages if installed." ON) + + # No elegant way in CMake to reverse a boolean + if(NOT WIN32) + set(NOT_WIN32 TRUE) + endif(NOT WIN32) + +-LIBUHD_REGISTER_COMPONENT("Man Pages" ENABLE_MAN_PAGES ON "GZIP_FOUND;NOT_WIN32" OFF OFF) ++set(MAN_PAGES_DEPS "NOT_WIN32") ++ ++message(STATUS "") ++if(ENABLE_MAN_PAGE_COMPRESSION) ++ message(STATUS "Compress man pages enabled; looking for compression program") ++ find_package(GZip) ++ list(APPEND MAN_PAGES_DEPS "GZIP_FOUND") ++else(ENABLE_MAN_PAGE_COMPRESSION) ++ message(STATUS "Compress man pages disabled") ++endif(ENABLE_MAN_PAGE_COMPRESSION) ++ ++LIBUHD_REGISTER_COMPONENT("Man Pages" ENABLE_MAN_PAGES ON "${MAN_PAGES_DEPS}" OFF OFF) + + if(ENABLE_MAN_PAGES) +- #Generate man pages +- foreach(manfile ${man_page_sources}) +- #make the gzip file depend on the text file +- string(REPLACE ".1" "" PROGRAM_NAME "${manfile}") +- set(gzfile "${CMAKE_CURRENT_BINARY_DIR}/${manfile}.gz") +- set(manfile "${CMAKE_CURRENT_SOURCE_DIR}/${manfile}") +- add_custom_command( +- OUTPUT ${gzfile} +- DEPENDS ${manfile} +- COMMAND ${GZIP_EXECUTABLE} -9 -cf ${manfile} > ${gzfile} +- COMMENT "Generating ${PROGRAM_NAME} man page" +- ) +- +- #make the man page target depend on the gz file +- list(APPEND man_page_gz_files ${gzfile}) +- UHD_INSTALL(FILES ${gzfile} DESTINATION ${PKG_MAN_DIR} COMPONENT manpages) +- endforeach(manfile ${man_page_sources}) +- +- #make the man pages a build-time dependency +- add_custom_target(man_page_gzips ALL DEPENDS ${man_page_gz_files}) ++ #Generate man pages; either compressed or not ++ if(ENABLE_MAN_PAGE_COMPRESSION) ++ # compress man pages ++ foreach(manfile ${man_page_sources}) ++ #make the gzip file depend on the text file ++ string(REPLACE ".1" "" PROGRAM_NAME "${manfile}") ++ set(gzfile "${CMAKE_CURRENT_BINARY_DIR}/${manfile}.gz") ++ set(manfile "${CMAKE_CURRENT_SOURCE_DIR}/${manfile}") ++ add_custom_command( ++ OUTPUT ${gzfile} ++ DEPENDS ${manfile} ++ COMMAND ${GZIP_EXECUTABLE} -9 -cf ${manfile} > ${gzfile} ++ COMMENT "Generating ${PROGRAM_NAME} man page" ++ ) ++ #make the man page target depend on the gz file ++ list(APPEND man_page_gz_files ${gzfile}) ++ endforeach(manfile ${man_page_sources}) ++ #make the man pages a build-time dependency ++ UHD_INSTALL(FILES ${man_page_gz_files} DESTINATION ${PKG_MAN_DIR} COMPONENT manpages) ++ add_custom_target(man_page_gzips ALL DEPENDS ${man_page_gz_files}) ++ else(ENABLE_MAN_PAGE_COMPRESSION) ++ # uncompressed man pages; just install them ++ UHD_INSTALL(FILES ${man_page_sources} DESTINATION ${PKG_MAN_DIR} COMPONENT manpages) ++ endif(ENABLE_MAN_PAGE_COMPRESSION) + endif(ENABLE_MAN_PAGES) diff --git a/net-wireless/uhd/metadata.xml b/net-wireless/uhd/metadata.xml new file mode 100644 index 000000000..c6f847e4f --- /dev/null +++ b/net-wireless/uhd/metadata.xml @@ -0,0 +1,31 @@ + + + + + zerochaos@gentoo.org + Rick Farina + + + zx2c4@gentoo.org + Jason A. Donenfeld + + + radio@gentoo.org + Radio + + + EttusResearch/uhd + + + support B100 hardware + support B200, B210, B200mini, B205mini hardware + support E300, E310 hardware + support N300, N310 hardware + Octoclock Network Support + support N230 harware + support USRP1 hardware + support USRP2, N200, N210 hardware + utilities needed to list, query, calibrate, or update FPGA/Firmware + support X300, X310 hardware + + diff --git a/net-wireless/uhd/uhd-3.15.0.0-r1.ebuild b/net-wireless/uhd/uhd-3.15.0.0-r1.ebuild new file mode 100644 index 000000000..28d3e4a2b --- /dev/null +++ b/net-wireless/uhd/uhd-3.15.0.0-r1.ebuild @@ -0,0 +1,147 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 +#not sure why, but eapi 7 fails + +PYTHON_COMPAT=( python3_{6,7,8} ) + +inherit eapi7-ver python-single-r1 gnome2-utils cmake-utils multilib + +DESCRIPTION="Universal Software Radio Peripheral (USRP) Hardware Driver" +HOMEPAGE="https://kb.ettus.com" + +SRC_URI="https://github.com/EttusResearch/uhd/archive/v${PV}.tar.gz -> EttusResearch-UHD-${PV}.tar.gz \ + https://github.com/EttusResearch/uhd/releases/download/v${PV}/uhd-images_${PV}.tar.xz" +#https://github.com/EttusResearch/UHD-Mirror/tags +#http://files.ettus.com/binaries/images/ + +LICENSE="GPL-3" +SLOT="0/$(ver_cut 1-3)" +KEYWORDS="~amd64 ~arm ~x86" +IUSE="b100 b200 doc e300 examples mpmd octoclock n230 test usb usrp1 usrp2 +utils x300" +RESTRICT="!test? ( test )" +REQUIRED_USE="${PYTHON_REQUIRED_USE} + b100? ( usb ) + b200? ( usb ) + usrp1? ( usb ) + usrp2? ( usb ) + || ( b100 b200 e300 mpmd n230 usrp1 usrp2 x300 )" + +RDEPEND="${PYTHON_DEPS} + e300? ( virtual/udev ) + usb? ( virtual/libusb:1 ) + dev-libs/boost:= + sys-libs/ncurses:0[tinfo] + $(python_gen_cond_dep ' + || ( + dev-python/numpy-python2[${PYTHON_MULTI_USEDEP}] + dev-python/numpy[${PYTHON_MULTI_USEDEP}] + ) + dev-python/requests[${PYTHON_MULTI_USEDEP}] + ') +" + +DEPEND="${RDEPEND} + doc? ( app-doc/doxygen ) + $(python_gen_cond_dep ' + dev-python/mako[${PYTHON_MULTI_USEDEP}] + ') + app-arch/unzip + app-arch/gzip +" + +PATCHES=( "${FILESDIR}/${PN}-3.13.1.0-tinfo.patch" ) + +S="${WORKDIR}/${P}/host" + +src_unpack() { + default + mv "uhd-images_${PV}" images || die +} + +src_prepare() { + cmake-utils_src_prepare + + gnome2_environment_reset #534582 + + #this may not be needed in 3.4.3 and above, please verify + sed -i 's#SET(PKG_LIB_DIR ${PKG_DATA_DIR})#SET(PKG_LIB_DIR ${LIBRARY_DIR}/uhd)#g' CMakeLists.txt || die + + #rpath is set for apple and no one else, just remove the conditional + sed -i -e '/if(APPLE)/d' -e '/endif(APPLE)/d' CMakeLists.txt || die +} + +src_configure() { + mycmakeargs=( + -DENABLE_LIBUHD=ON + -DENABLE_C_API=ON + -DENABLE_LIBERIO=OFF + -DENABLE_MAN_PAGES=ON + -DENABLE_GPSD=OFF + -DENABLE_MAN_PAGE_COMPRESSION=OFF + -DENABLE_EXAMPLES="$(usex examples)" + -DENABLE_TESTS="$(usex test)" + -DENABLE_USB="$(usex usb)" + -DENABLE_UTILS="$(usex utils)" + -DENABLE_MANUAL="$(usex doc)" + -DENABLE_DOXYGEN="$(usex doc)" + -DENABLE_B100="$(usex b100)" + -DENABLE_B200="$(usex b200)" + -DENABLE_E300="$(usex e300)" + -DENABLE_USRP1="$(usex usrp1)" + -DENABLE_USRP2="$(usex usrp2)" + -DENABLE_X300="$(usex x300)" + -DENABLE_N230="$(usex n230)" + -DENABLE_MPMD="$(usex mpmd)" + -DENABLE_OCTOCLOCK="$(usex octoclock)" + -DPYTHON_EXECUTABLE="${PYTHON}" + -DPKG_DOC_DIR="${EPREFIX}/usr/share/doc/${PF}" + ) + cmake-utils_src_configure +} +src_install() { + cmake-utils_src_install + python_optimize + use utils && python_fix_shebang "${ED}"/usr/$(get_libdir)/${PN}/utils/ + if [ "${PV}" != "9999" ]; then + rm -rf "${ED}/usr/bin/uhd_images_downloader" + rm -rf "${ED}/usr/share/man/man1/uhd_images_downloader.1" + fi + + insinto /lib/udev/rules.d/ + doins "${S}/utils/uhd-usrp.rules" + + rm -rf "${WORKDIR}/images/winusb_driver" + if ! use b100; then + rm "${WORKDIR}"/images/usrp_b100* || die + fi + if ! use b200; then + rm "${WORKDIR}"/images/usrp_b2[01]* || die + fi + if ! use e300; then + rm "${WORKDIR}"/images/usrp_e3* || die + fi + if ! use mpmd; then + rm "${WORKDIR}"/images/usrp_n310* || die + fi + if ! use n230; then + rm "${WORKDIR}"/images/usrp_n230* || die + fi + if ! use octoclock; then + rm "${WORKDIR}"/images/octoclock* || die + fi + if ! use usrp1; then + rm "${WORKDIR}"/images/usrp1* || die + fi + if ! use usrp2; then + rm "${WORKDIR}"/images/usrp2* || die + rm "${WORKDIR}"/images/usrp_n2[01]* || die + rm -r "${WORKDIR}"/images/bit || die + fi + if ! use x300; then + rm "${WORKDIR}/"images/usrp_x3* || die + fi + insinto /usr/share/${PN} + doins -r "${WORKDIR}/images" +}