pothosware / SoapyUHD

Soapy SDR plugins for UHD supported SDR devices
https://github.com/pothosware/SoapyUHD/wiki
GNU General Public License v3.0
55 stars 29 forks source link

soapyuhd 0.4.0 can't compile against uhd 4.0.0.0 #34

Closed ZeroChaos- closed 4 years ago

ZeroChaos- commented 4 years ago

This compiles fine against older uhd, but doesn't appear to quite be compatible with 4.0.0.0

cmake -C /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/soapyuhd-0.4.0_build/gentoo_common_config.cmake -G Unix Makefiles -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Gentoo -DCMAKE_TOOLCHAIN_FILE=/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/soapyuhd-0.4.0_build/gentoo_toolchain.cmake  /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0
loading initial cache file /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/soapyuhd-0.4.0_build/gentoo_common_config.cmake
-- The CXX compiler identification is GNU 9.3.0
-- The C compiler identification is GNU 9.3.0
-- Check for working CXX compiler: /usr/bin/x86_64-pc-linux-gnu-g++
-- Check for working CXX compiler: /usr/bin/x86_64-pc-linux-gnu-g++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Check for working C compiler: /usr/bin/x86_64-pc-linux-gnu-gcc
-- Check for working C compiler: /usr/bin/x86_64-pc-linux-gnu-gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Found PkgConfig: x86_64-pc-linux-gnu-pkg-config (found version "0.29.2") 
-- Found UHD: /usr/lib64/libuhd.so  
-- UHD root directory: /usr
-- UHD include directories: /usr/include
-- UHD libraries: /usr/lib64/libuhd.so
-- Checking uhd::device::register_device() API...
--   Reading /usr/include/uhd/device.hpp...
--   has filter API
-- Checking uhd::usrp::multi_usrp::set_rx_agc() API...
--   Reading /usr/include/uhd/usrp/multi_usrp.hpp...
--   has set_rx_agc() API
-- Checking uhd::property::set_publisher() API...
--   Reading /usr/include/uhd/property_tree.hpp...
--   has set_publisher() API
--   use log.hpp for logging
-- Configuring Boost C++ Libraries...
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE  
-- Found Boost: /usr/include (found version "1.72.0") found components: thread system chrono date_time atomic 
-- Boost include directories: /usr/include
-- Boost library directories: /usr/lib64
-- Boost libraries: /usr/lib64/libboost_thread-mt.so;-lpthread;/usr/lib64/libboost_system-mt.so;/usr/lib64/libboost_chrono-mt.so;/usr/lib64/libboost_date_time-mt.so;/usr/lib64/libboost_atomic-mt.so
-- Module uhdSupport configured with version: 0.4.0
-- Using install prefix: /usr
-- <<< Gentoo configuration >>>
Build type      Gentoo
Install path    /usr
Compiler flags:
C               -O3 -march=native -mtune=native -pipe -frecord-gcc-switches
C++             -O3 -march=native -mtune=native -pipe -frecord-gcc-switches
Linker flags:
Executable      -Wl,-O1 -Wl,--as-needed -Wl,--defsym=__gentoo_check_ldflags__=0
Module          -Wl,-O1 -Wl,--as-needed -Wl,--defsym=__gentoo_check_ldflags__=0 -Wl,--no-undefined
Shared          -Wl,-O1 -Wl,--as-needed -Wl,--defsym=__gentoo_check_ldflags__=0 -Wl,--no-undefined

-- Configuring done
-- Generating done
-- Build files have been written to: /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/soapyuhd-0.4.0_build
>>> Source configured.
>>> Compiling source in /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0 ...
>>> Working in BUILD_DIR: "/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/soapyuhd-0.4.0_build"
make -j1 VERBOSE=1 
/usr/bin/cmake -S/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0 -B/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/soapyuhd-0.4.0_build --check-build-system CMakeFiles/Makefile.cmake 0
/usr/bin/cmake -E cmake_progress_start /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/soapyuhd-0.4.0_build/CMakeFiles /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/soapyuhd-0.4.0_build/CMakeFiles/progress.marks
make -f CMakeFiles/Makefile2 all
make[1]: Entering directory '/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/soapyuhd-0.4.0_build'
make -f CMakeFiles/soapySupport.dir/build.make CMakeFiles/soapySupport.dir/depend
make[2]: Entering directory '/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/soapyuhd-0.4.0_build'
cd /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/soapyuhd-0.4.0_build && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0 /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0 /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/soapyuhd-0.4.0_build /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/soapyuhd-0.4.0_build /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/soapyuhd-0.4.0_build/CMakeFiles/soapySupport.dir/DependInfo.cmake --color=
Dependee "/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/soapyuhd-0.4.0_build/CMakeFiles/soapySupport.dir/DependInfo.cmake" is newer than depender "/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/soapyuhd-0.4.0_build/CMakeFiles/soapySupport.dir/depend.internal".
Dependee "/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/soapyuhd-0.4.0_build/CMakeFiles/CMakeDirectoryInformation.cmake" is newer than depender "/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/soapyuhd-0.4.0_build/CMakeFiles/soapySupport.dir/depend.internal".
Scanning dependencies of target soapySupport
make[2]: Leaving directory '/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/soapyuhd-0.4.0_build'
make -f CMakeFiles/soapySupport.dir/build.make CMakeFiles/soapySupport.dir/build
make[2]: Entering directory '/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/soapyuhd-0.4.0_build'
[ 20%] Building CXX object CMakeFiles/soapySupport.dir/UHDSoapyDevice.cpp.o
/usr/bin/x86_64-pc-linux-gnu-g++ -DBOOST_ALL_DYN_LINK -DUHD_HAS_DEVICE_FILTER -DUHD_HAS_SET_PUBLISHER -DUHD_HAS_SET_RX_AGC -DsoapySupport_EXPORTS -I/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0   -DNDEBUG -O3 -march=native -mtune=native -pipe -frecord-gcc-switches -fPIC   -Wall -Wextra -std=gnu++11 -o CMakeFiles/soapySupport.dir/UHDSoapyDevice.cpp.o -c /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp
/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp: In member function ‘virtual uhd::rx_streamer::sptr UHDSoapyDevice::get_rx_stream(const uhd::stream_args_t&)’:
/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:725:62: error: no match for ‘operator=’ (operand types are ‘std::map<long unsigned int, boost::weak_ptr<uhd::rx_streamer> >::mapped_type’ {aka ‘boost::weak_ptr<uhd::rx_streamer>’} and ‘uhd::rx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::rx_streamer>’})
  725 |     for(const size_t ch : args.channels) _rx_streamers[ch] = stream;
      |                                                              ^~~~~~
In file included from /usr/include/boost/smart_ptr/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/thread/pthread/thread_data.hpp:18,
                 from /usr/include/boost/thread/thread_only.hpp:17,
                 from /usr/include/boost/thread/thread.hpp:12,
                 from /usr/include/uhd/utils/log.hpp:12,
                 from /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:23:
/usr/include/boost/smart_ptr/weak_ptr.hpp:49:16: note: candidate: ‘boost::weak_ptr<T>& boost::weak_ptr<T>::operator=(const boost::weak_ptr<T>&) [with T = uhd::rx_streamer]’
   49 |     weak_ptr & operator=( weak_ptr const & r ) BOOST_SP_NOEXCEPT
      |                ^~~~~~~~
/usr/include/boost/smart_ptr/weak_ptr.hpp:49:44: note:   no known conversion for argument 1 from ‘uhd::rx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::rx_streamer>’} to ‘const boost::weak_ptr<uhd::rx_streamer>&’
   49 |     weak_ptr & operator=( weak_ptr const & r ) BOOST_SP_NOEXCEPT
      |                           ~~~~~~~~~~~~~~~~~^
/usr/include/boost/smart_ptr/weak_ptr.hpp:116:16: note: candidate: ‘boost::weak_ptr<T>& boost::weak_ptr<T>::operator=(boost::weak_ptr<T>&&) [with T = uhd::rx_streamer]’
  116 |     weak_ptr & operator=( weak_ptr && r ) BOOST_SP_NOEXCEPT
      |                ^~~~~~~~
/usr/include/boost/smart_ptr/weak_ptr.hpp:116:39: note:   no known conversion for argument 1 from ‘uhd::rx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::rx_streamer>’} to ‘boost::weak_ptr<uhd::rx_streamer>&&’
  116 |     weak_ptr & operator=( weak_ptr && r ) BOOST_SP_NOEXCEPT
      |                           ~~~~~~~~~~~~^
In file included from /usr/include/boost/smart_ptr/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/thread/pthread/thread_data.hpp:18,
                 from /usr/include/boost/thread/thread_only.hpp:17,
                 from /usr/include/boost/thread/thread.hpp:12,
                 from /usr/include/uhd/utils/log.hpp:12,
                 from /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:23:
/usr/include/boost/smart_ptr/weak_ptr.hpp:160:16: note: candidate: ‘template<class Y> boost::weak_ptr<T>& boost::weak_ptr<T>::operator=(const boost::weak_ptr<Y>&) [with Y = Y; T = uhd::rx_streamer]’
  160 |     weak_ptr & operator=( weak_ptr<Y> const & r ) BOOST_SP_NOEXCEPT
      |                ^~~~~~~~
/usr/include/boost/smart_ptr/weak_ptr.hpp:160:16: note:   template argument deduction/substitution failed:
/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:725:62: note:   ‘uhd::rx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::rx_streamer>’} is not derived from ‘const boost::weak_ptr<Y>’
  725 |     for(const size_t ch : args.channels) _rx_streamers[ch] = stream;
      |                                                              ^~~~~~
In file included from /usr/include/boost/smart_ptr/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/thread/pthread/thread_data.hpp:18,
                 from /usr/include/boost/thread/thread_only.hpp:17,
                 from /usr/include/boost/thread/thread.hpp:12,
                 from /usr/include/uhd/utils/log.hpp:12,
                 from /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:23:
/usr/include/boost/smart_ptr/weak_ptr.hpp:173:16: note: candidate: ‘template<class Y> boost::weak_ptr<T>& boost::weak_ptr<T>::operator=(boost::weak_ptr<Y>&&) [with Y = Y; T = uhd::rx_streamer]’
  173 |     weak_ptr & operator=( weak_ptr<Y> && r ) BOOST_SP_NOEXCEPT
      |                ^~~~~~~~
/usr/include/boost/smart_ptr/weak_ptr.hpp:173:16: note:   template argument deduction/substitution failed:
/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:725:62: note:   ‘uhd::rx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::rx_streamer>’} is not derived from ‘boost::weak_ptr<Y>’
  725 |     for(const size_t ch : args.channels) _rx_streamers[ch] = stream;
      |                                                              ^~~~~~
In file included from /usr/include/boost/smart_ptr/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/thread/pthread/thread_data.hpp:18,
                 from /usr/include/boost/thread/thread_only.hpp:17,
                 from /usr/include/boost/thread/thread.hpp:12,
                 from /usr/include/uhd/utils/log.hpp:12,
                 from /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:23:
/usr/include/boost/smart_ptr/weak_ptr.hpp:182:16: note: candidate: ‘template<class Y> boost::weak_ptr<T>& boost::weak_ptr<T>::operator=(const boost::shared_ptr<Y>&) [with Y = Y; T = uhd::rx_streamer]’
  182 |     weak_ptr & operator=( shared_ptr<Y> const & r ) BOOST_SP_NOEXCEPT
      |                ^~~~~~~~
/usr/include/boost/smart_ptr/weak_ptr.hpp:182:16: note:   template argument deduction/substitution failed:
/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:725:62: note:   ‘uhd::rx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::rx_streamer>’} is not derived from ‘const boost::shared_ptr<X>’
  725 |     for(const size_t ch : args.channels) _rx_streamers[ch] = stream;
      |                                                              ^~~~~~
/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:726:51: error: no match for ‘operator=’ (operand types are ‘std::map<long unsigned int, boost::weak_ptr<uhd::rx_streamer> >::mapped_type’ {aka ‘boost::weak_ptr<uhd::rx_streamer>’} and ‘uhd::rx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::rx_streamer>’})
  726 |     if (args.channels.empty()) _rx_streamers[0] = stream;
      |                                                   ^~~~~~
In file included from /usr/include/boost/smart_ptr/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/thread/pthread/thread_data.hpp:18,
                 from /usr/include/boost/thread/thread_only.hpp:17,
                 from /usr/include/boost/thread/thread.hpp:12,
                 from /usr/include/uhd/utils/log.hpp:12,
                 from /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:23:
/usr/include/boost/smart_ptr/weak_ptr.hpp:49:16: note: candidate: ‘boost::weak_ptr<T>& boost::weak_ptr<T>::operator=(const boost::weak_ptr<T>&) [with T = uhd::rx_streamer]’
   49 |     weak_ptr & operator=( weak_ptr const & r ) BOOST_SP_NOEXCEPT
      |                ^~~~~~~~
/usr/include/boost/smart_ptr/weak_ptr.hpp:49:44: note:   no known conversion for argument 1 from ‘uhd::rx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::rx_streamer>’} to ‘const boost::weak_ptr<uhd::rx_streamer>&’
   49 |     weak_ptr & operator=( weak_ptr const & r ) BOOST_SP_NOEXCEPT
      |                           ~~~~~~~~~~~~~~~~~^
/usr/include/boost/smart_ptr/weak_ptr.hpp:116:16: note: candidate: ‘boost::weak_ptr<T>& boost::weak_ptr<T>::operator=(boost::weak_ptr<T>&&) [with T = uhd::rx_streamer]’
  116 |     weak_ptr & operator=( weak_ptr && r ) BOOST_SP_NOEXCEPT
      |                ^~~~~~~~
/usr/include/boost/smart_ptr/weak_ptr.hpp:116:39: note:   no known conversion for argument 1 from ‘uhd::rx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::rx_streamer>’} to ‘boost::weak_ptr<uhd::rx_streamer>&&’
  116 |     weak_ptr & operator=( weak_ptr && r ) BOOST_SP_NOEXCEPT
      |                           ~~~~~~~~~~~~^
In file included from /usr/include/boost/smart_ptr/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/thread/pthread/thread_data.hpp:18,
                 from /usr/include/boost/thread/thread_only.hpp:17,
                 from /usr/include/boost/thread/thread.hpp:12,
                 from /usr/include/uhd/utils/log.hpp:12,
                 from /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:23:
/usr/include/boost/smart_ptr/weak_ptr.hpp:160:16: note: candidate: ‘template<class Y> boost::weak_ptr<T>& boost::weak_ptr<T>::operator=(const boost::weak_ptr<Y>&) [with Y = Y; T = uhd::rx_streamer]’
  160 |     weak_ptr & operator=( weak_ptr<Y> const & r ) BOOST_SP_NOEXCEPT
      |                ^~~~~~~~
/usr/include/boost/smart_ptr/weak_ptr.hpp:160:16: note:   template argument deduction/substitution failed:
/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:726:51: note:   ‘uhd::rx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::rx_streamer>’} is not derived from ‘const boost::weak_ptr<Y>’
  726 |     if (args.channels.empty()) _rx_streamers[0] = stream;
      |                                                   ^~~~~~
In file included from /usr/include/boost/smart_ptr/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/thread/pthread/thread_data.hpp:18,
                 from /usr/include/boost/thread/thread_only.hpp:17,
                 from /usr/include/boost/thread/thread.hpp:12,
                 from /usr/include/uhd/utils/log.hpp:12,
                 from /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:23:
/usr/include/boost/smart_ptr/weak_ptr.hpp:173:16: note: candidate: ‘template<class Y> boost::weak_ptr<T>& boost::weak_ptr<T>::operator=(boost::weak_ptr<Y>&&) [with Y = Y; T = uhd::rx_streamer]’
  173 |     weak_ptr & operator=( weak_ptr<Y> && r ) BOOST_SP_NOEXCEPT
      |                ^~~~~~~~
/usr/include/boost/smart_ptr/weak_ptr.hpp:173:16: note:   template argument deduction/substitution failed:
/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:726:51: note:   ‘uhd::rx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::rx_streamer>’} is not derived from ‘boost::weak_ptr<Y>’
  726 |     if (args.channels.empty()) _rx_streamers[0] = stream;
      |                                                   ^~~~~~
In file included from /usr/include/boost/smart_ptr/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/thread/pthread/thread_data.hpp:18,
                 from /usr/include/boost/thread/thread_only.hpp:17,
                 from /usr/include/boost/thread/thread.hpp:12,
                 from /usr/include/uhd/utils/log.hpp:12,
                 from /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:23:
/usr/include/boost/smart_ptr/weak_ptr.hpp:182:16: note: candidate: ‘template<class Y> boost::weak_ptr<T>& boost::weak_ptr<T>::operator=(const boost::shared_ptr<Y>&) [with Y = Y; T = uhd::rx_streamer]’
  182 |     weak_ptr & operator=( shared_ptr<Y> const & r ) BOOST_SP_NOEXCEPT
      |                ^~~~~~~~
/usr/include/boost/smart_ptr/weak_ptr.hpp:182:16: note:   template argument deduction/substitution failed:
/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:726:51: note:   ‘uhd::rx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::rx_streamer>’} is not derived from ‘const boost::shared_ptr<X>’
  726 |     if (args.channels.empty()) _rx_streamers[0] = stream;
      |                                                   ^~~~~~
/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp: In member function ‘virtual uhd::tx_streamer::sptr UHDSoapyDevice::get_tx_stream(const uhd::stream_args_t&)’:
/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:865:62: error: no match for ‘operator=’ (operand types are ‘std::map<long unsigned int, boost::weak_ptr<uhd::tx_streamer> >::mapped_type’ {aka ‘boost::weak_ptr<uhd::tx_streamer>’} and ‘uhd::tx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::tx_streamer>’})
  865 |     for(const size_t ch : args.channels) _tx_streamers[ch] = stream;
      |                                                              ^~~~~~
In file included from /usr/include/boost/smart_ptr/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/thread/pthread/thread_data.hpp:18,
                 from /usr/include/boost/thread/thread_only.hpp:17,
                 from /usr/include/boost/thread/thread.hpp:12,
                 from /usr/include/uhd/utils/log.hpp:12,
                 from /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:23:
/usr/include/boost/smart_ptr/weak_ptr.hpp:49:16: note: candidate: ‘boost::weak_ptr<T>& boost::weak_ptr<T>::operator=(const boost::weak_ptr<T>&) [with T = uhd::tx_streamer]’
   49 |     weak_ptr & operator=( weak_ptr const & r ) BOOST_SP_NOEXCEPT
      |                ^~~~~~~~
/usr/include/boost/smart_ptr/weak_ptr.hpp:49:44: note:   no known conversion for argument 1 from ‘uhd::tx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::tx_streamer>’} to ‘const boost::weak_ptr<uhd::tx_streamer>&’
   49 |     weak_ptr & operator=( weak_ptr const & r ) BOOST_SP_NOEXCEPT
      |                           ~~~~~~~~~~~~~~~~~^
/usr/include/boost/smart_ptr/weak_ptr.hpp:116:16: note: candidate: ‘boost::weak_ptr<T>& boost::weak_ptr<T>::operator=(boost::weak_ptr<T>&&) [with T = uhd::tx_streamer]’
  116 |     weak_ptr & operator=( weak_ptr && r ) BOOST_SP_NOEXCEPT
      |                ^~~~~~~~
/usr/include/boost/smart_ptr/weak_ptr.hpp:116:39: note:   no known conversion for argument 1 from ‘uhd::tx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::tx_streamer>’} to ‘boost::weak_ptr<uhd::tx_streamer>&&’
  116 |     weak_ptr & operator=( weak_ptr && r ) BOOST_SP_NOEXCEPT
      |                           ~~~~~~~~~~~~^
In file included from /usr/include/boost/smart_ptr/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/thread/pthread/thread_data.hpp:18,
                 from /usr/include/boost/thread/thread_only.hpp:17,
                 from /usr/include/boost/thread/thread.hpp:12,
                 from /usr/include/uhd/utils/log.hpp:12,
                 from /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:23:
/usr/include/boost/smart_ptr/weak_ptr.hpp:160:16: note: candidate: ‘template<class Y> boost::weak_ptr<T>& boost::weak_ptr<T>::operator=(const boost::weak_ptr<Y>&) [with Y = Y; T = uhd::tx_streamer]’
  160 |     weak_ptr & operator=( weak_ptr<Y> const & r ) BOOST_SP_NOEXCEPT
      |                ^~~~~~~~
/usr/include/boost/smart_ptr/weak_ptr.hpp:160:16: note:   template argument deduction/substitution failed:
/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:865:62: note:   ‘uhd::tx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::tx_streamer>’} is not derived from ‘const boost::weak_ptr<Y>’
  865 |     for(const size_t ch : args.channels) _tx_streamers[ch] = stream;
      |                                                              ^~~~~~
In file included from /usr/include/boost/smart_ptr/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/thread/pthread/thread_data.hpp:18,
                 from /usr/include/boost/thread/thread_only.hpp:17,
                 from /usr/include/boost/thread/thread.hpp:12,
                 from /usr/include/uhd/utils/log.hpp:12,
                 from /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:23:
/usr/include/boost/smart_ptr/weak_ptr.hpp:173:16: note: candidate: ‘template<class Y> boost::weak_ptr<T>& boost::weak_ptr<T>::operator=(boost::weak_ptr<Y>&&) [with Y = Y; T = uhd::tx_streamer]’
  173 |     weak_ptr & operator=( weak_ptr<Y> && r ) BOOST_SP_NOEXCEPT
      |                ^~~~~~~~
/usr/include/boost/smart_ptr/weak_ptr.hpp:173:16: note:   template argument deduction/substitution failed:
/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:865:62: note:   ‘uhd::tx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::tx_streamer>’} is not derived from ‘boost::weak_ptr<Y>’
  865 |     for(const size_t ch : args.channels) _tx_streamers[ch] = stream;
      |                                                              ^~~~~~
In file included from /usr/include/boost/smart_ptr/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/thread/pthread/thread_data.hpp:18,
                 from /usr/include/boost/thread/thread_only.hpp:17,
                 from /usr/include/boost/thread/thread.hpp:12,
                 from /usr/include/uhd/utils/log.hpp:12,
                 from /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:23:
/usr/include/boost/smart_ptr/weak_ptr.hpp:182:16: note: candidate: ‘template<class Y> boost::weak_ptr<T>& boost::weak_ptr<T>::operator=(const boost::shared_ptr<Y>&) [with Y = Y; T = uhd::tx_streamer]’
  182 |     weak_ptr & operator=( shared_ptr<Y> const & r ) BOOST_SP_NOEXCEPT
      |                ^~~~~~~~
/usr/include/boost/smart_ptr/weak_ptr.hpp:182:16: note:   template argument deduction/substitution failed:
/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:865:62: note:   ‘uhd::tx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::tx_streamer>’} is not derived from ‘const boost::shared_ptr<X>’
  865 |     for(const size_t ch : args.channels) _tx_streamers[ch] = stream;
      |                                                              ^~~~~~
/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:866:51: error: no match for ‘operator=’ (operand types are ‘std::map<long unsigned int, boost::weak_ptr<uhd::tx_streamer> >::mapped_type’ {aka ‘boost::weak_ptr<uhd::tx_streamer>’} and ‘uhd::tx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::tx_streamer>’})
  866 |     if (args.channels.empty()) _tx_streamers[0] = stream;
      |                                                   ^~~~~~
In file included from /usr/include/boost/smart_ptr/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/thread/pthread/thread_data.hpp:18,
                 from /usr/include/boost/thread/thread_only.hpp:17,
                 from /usr/include/boost/thread/thread.hpp:12,
                 from /usr/include/uhd/utils/log.hpp:12,
                 from /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:23:
/usr/include/boost/smart_ptr/weak_ptr.hpp:49:16: note: candidate: ‘boost::weak_ptr<T>& boost::weak_ptr<T>::operator=(const boost::weak_ptr<T>&) [with T = uhd::tx_streamer]’
   49 |     weak_ptr & operator=( weak_ptr const & r ) BOOST_SP_NOEXCEPT
      |                ^~~~~~~~
/usr/include/boost/smart_ptr/weak_ptr.hpp:49:44: note:   no known conversion for argument 1 from ‘uhd::tx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::tx_streamer>’} to ‘const boost::weak_ptr<uhd::tx_streamer>&’
   49 |     weak_ptr & operator=( weak_ptr const & r ) BOOST_SP_NOEXCEPT
      |                           ~~~~~~~~~~~~~~~~~^
/usr/include/boost/smart_ptr/weak_ptr.hpp:116:16: note: candidate: ‘boost::weak_ptr<T>& boost::weak_ptr<T>::operator=(boost::weak_ptr<T>&&) [with T = uhd::tx_streamer]’
  116 |     weak_ptr & operator=( weak_ptr && r ) BOOST_SP_NOEXCEPT
      |                ^~~~~~~~
/usr/include/boost/smart_ptr/weak_ptr.hpp:116:39: note:   no known conversion for argument 1 from ‘uhd::tx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::tx_streamer>’} to ‘boost::weak_ptr<uhd::tx_streamer>&&’
  116 |     weak_ptr & operator=( weak_ptr && r ) BOOST_SP_NOEXCEPT
      |                           ~~~~~~~~~~~~^
In file included from /usr/include/boost/smart_ptr/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/thread/pthread/thread_data.hpp:18,
                 from /usr/include/boost/thread/thread_only.hpp:17,
                 from /usr/include/boost/thread/thread.hpp:12,
                 from /usr/include/uhd/utils/log.hpp:12,
                 from /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:23:
/usr/include/boost/smart_ptr/weak_ptr.hpp:160:16: note: candidate: ‘template<class Y> boost::weak_ptr<T>& boost::weak_ptr<T>::operator=(const boost::weak_ptr<Y>&) [with Y = Y; T = uhd::tx_streamer]’
  160 |     weak_ptr & operator=( weak_ptr<Y> const & r ) BOOST_SP_NOEXCEPT
      |                ^~~~~~~~
/usr/include/boost/smart_ptr/weak_ptr.hpp:160:16: note:   template argument deduction/substitution failed:
/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:866:51: note:   ‘uhd::tx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::tx_streamer>’} is not derived from ‘const boost::weak_ptr<Y>’
  866 |     if (args.channels.empty()) _tx_streamers[0] = stream;
      |                                                   ^~~~~~
In file included from /usr/include/boost/smart_ptr/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/thread/pthread/thread_data.hpp:18,
                 from /usr/include/boost/thread/thread_only.hpp:17,
                 from /usr/include/boost/thread/thread.hpp:12,
                 from /usr/include/uhd/utils/log.hpp:12,
                 from /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:23:
/usr/include/boost/smart_ptr/weak_ptr.hpp:173:16: note: candidate: ‘template<class Y> boost::weak_ptr<T>& boost::weak_ptr<T>::operator=(boost::weak_ptr<Y>&&) [with Y = Y; T = uhd::tx_streamer]’
  173 |     weak_ptr & operator=( weak_ptr<Y> && r ) BOOST_SP_NOEXCEPT
      |                ^~~~~~~~
/usr/include/boost/smart_ptr/weak_ptr.hpp:173:16: note:   template argument deduction/substitution failed:
/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:866:51: note:   ‘uhd::tx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::tx_streamer>’} is not derived from ‘boost::weak_ptr<Y>’
  866 |     if (args.channels.empty()) _tx_streamers[0] = stream;
      |                                                   ^~~~~~
In file included from /usr/include/boost/smart_ptr/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/thread/pthread/thread_data.hpp:18,
                 from /usr/include/boost/thread/thread_only.hpp:17,
                 from /usr/include/boost/thread/thread.hpp:12,
                 from /usr/include/uhd/utils/log.hpp:12,
                 from /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:23:
/usr/include/boost/smart_ptr/weak_ptr.hpp:182:16: note: candidate: ‘template<class Y> boost::weak_ptr<T>& boost::weak_ptr<T>::operator=(const boost::shared_ptr<Y>&) [with Y = Y; T = uhd::tx_streamer]’
  182 |     weak_ptr & operator=( shared_ptr<Y> const & r ) BOOST_SP_NOEXCEPT
      |                ^~~~~~~~
/usr/include/boost/smart_ptr/weak_ptr.hpp:182:16: note:   template argument deduction/substitution failed:
/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:866:51: note:   ‘uhd::tx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::tx_streamer>’} is not derived from ‘const boost::shared_ptr<X>’
  866 |     if (args.channels.empty()) _tx_streamers[0] = stream;
      |                                                   ^~~~~~
make[2]: *** [CMakeFiles/soapySupport.dir/build.make:63: CMakeFiles/soapySupport.dir/UHDSoapyDevice.cpp.o] Error 1
make[2]: Leaving directory '/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/soapyuhd-0.4.0_build'
make[1]: *** [CMakeFiles/Makefile2:78: CMakeFiles/soapySupport.dir/all] Error 2
make[1]: Leaving directory '/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/soapyuhd-0.4.0_build'
make: *** [Makefile:141: all] Error 2
guruofquality commented 4 years ago

The behaviour makes it look like the UHD_VERSION define is different on your system. You should not see boost:: smart pointer stuff in there.

What value do you have in uhd/version.hpp? I have #define UHD_VERSION 4000099 after installing from the "v4.0.0.0" tag


    //stash streamers to implement old-style issue stream cmd and async message
    #if UHD_VERSION > 4000000
    std::map<size_t, std::weak_ptr<uhd::rx_streamer> > _rx_streamers;
    std::map<size_t, std::weak_ptr<uhd::tx_streamer> > _tx_streamers;
    #else
    std::map<size_t, boost::weak_ptr<uhd::rx_streamer> > _rx_streamers;
    std::map<size_t, boost::weak_ptr<uhd::tx_streamer> > _tx_streamers;
    #endif
ZeroChaos- commented 4 years ago
zero@theprophet ~ % cat /usr/include/uhd/version.hpp
//
// Copyright 2010-2016 Ettus Research LLC
// Copyright 2018 Ettus Research, a National Instruments Company
//
// SPDX-License-Identifier: GPL-3.0-or-later
//

#pragma once

/*!
 * The ABI version string that the client application builds against.
 * Call get_abi_string() to check this against the library build.
 * The format is oldest API compatible release - ABI compat number.
 * The compatibility number allows pre-release ABI to be versioned.
 */
#define UHD_VERSION_ABI_STRING "4.0.0"

/*!
 * A macro to check UHD version at compile-time.
 * The value of this macro is MAJOR * 1000000 + API * 10000 + ABI * 100 + PATCH
 * (e.g., for UHD 3.10.0.1 this is 3100001).
 */
#define UHD_VERSION 4000000

#ifdef __cplusplus
#include <uhd/config.hpp>
#include <string>

namespace uhd{

    //! Get the version string (dotted version number + build info)
    UHD_API std::string get_version_string(void);

    //! Get the ABI compatibility string for this build of the library
    UHD_API std::string get_abi_string(void);

    //! Get the component string
    UHD_API std::string get_component(void);

} //namespace uhd
#endif
guruofquality commented 4 years ago

You must have a release mode build or something that doesnt set the patch level. Such a dumb fix: https://github.com/pothosware/SoapyUHD/commit/a267e3b266cc0df01c16b8eff8a349b356cde3df

ZeroChaos- commented 4 years ago

compiled successfully and looking good. my apologies for not catching this before asking for a release. Risking it all again, can I get another tag please? :-)

guruofquality commented 4 years ago

https://github.com/pothosware/SoapyUHD/tree/soapy-uhd-0.4.1

ZeroChaos- commented 4 years ago

thanks again :-)