Source: srslte
Version: 18.06.1+ds.1
Severity: important
Tags: ftbfs

I am building rdeps of libsoapysdr in preparation of the transition to
version 0.8. This version has changed the SoapySDRDevice_setupStream()
function signature to return the SoapySDRStream directly rather than
through a pointer:

    *   Recommended keys to use in the args dictionary:
    *    - "WIRE" - format of the samples between device and host
    * \endparblock
  - * \return 0 for success or error code on failure
  + * \return the stream pointer or nullptr for failure
    */
  -SOAPY_SDR_API int SoapySDRDevice_setupStream(SoapySDRDevice *device,
  -    SoapySDRStream **stream,
  +SOAPY_SDR_API SoapySDRStream *SoapySDRDevice_setupStream(SoapySDRDevice 
*device,
       const int direction,
       const char *format,
       const size_t *channels,

This change causes a build failure in srslte when building against the
new libsoapysdr. I can see upstream has already fixed that in their
sources. Log of the failed build:

/build/srslte-18.06.1+ds.1/lib/src/phy/rf/rf_soapy_imp.c: In function 
'rf_soapy_open_multi':
/build/srslte-18.06.1+ds.1/lib/src/phy/rf/rf_soapy_imp.c:344:52: warning: 
passing argument 2 of 'SoapySDRDevice_setupStream' makes integer from pointer 
without a cast [-Wint-conversion]
  344 |     if(SoapySDRDevice_setupStream(handler->device, 
&(handler->rxStream), SOAPY_SDR_RX, SOAPY_SDR_CF32, NULL, 0, NULL) != 0) {
      |                                                    ^~~~~~~~~~~~~~~~~~~~
      |                                                    |
      |                                                    SoapySDRStream **
In file included from 
/build/srslte-18.06.1+ds.1/lib/src/phy/rf/rf_soapy_imp.c:37:
/usr/include/SoapySDR/Device.h:307:15: note: expected 'int' but argument is of 
type 'SoapySDRStream **'
  307 |     const int direction,
      |     ~~~~~~~~~~^~~~~~~~~
/build/srslte-18.06.1+ds.1/lib/src/phy/rf/rf_soapy_imp.c:344:74: warning: 
passing argument 3 of 'SoapySDRDevice_setupStream' makes pointer from integer 
without a cast [-Wint-conversion]
  344 |     if(SoapySDRDevice_setupStream(handler->device, 
&(handler->rxStream), SOAPY_SDR_RX, SOAPY_SDR_CF32, NULL, 0, NULL) != 0) {
      |                                                                         
 ^~~~~~~~~~~~
      |                                                                         
 |
      |                                                                         
 int
In file included from 
/build/srslte-18.06.1+ds.1/lib/src/phy/rf/rf_soapy_imp.c:37:
/usr/include/SoapySDR/Device.h:308:17: note: expected 'const char *' but 
argument is of type 'int'
  308 |     const char *format,
      |     ~~~~~~~~~~~~^~~~~~
/build/srslte-18.06.1+ds.1/lib/src/phy/rf/rf_soapy_imp.c:344:88: error: passing 
argument 4 of 'SoapySDRDevice_setupStream' from incompatible pointer type 
[-Werror=incompatible-pointer-types]
  344 |     if(SoapySDRDevice_setupStream(handler->device, 
&(handler->rxStream), SOAPY_SDR_RX, SOAPY_SDR_CF32, NULL, 0, NULL) != 0) {
      |                                                                         
               ^~~~~~~~~~~~~~
      |                                                                         
               |
      |                                                                         
               char *
In file included from 
/build/srslte-18.06.1+ds.1/lib/src/phy/rf/rf_soapy_imp.c:37:
/usr/include/SoapySDR/Device.h:309:19: note: expected 'const size_t *' {aka 
'const long unsigned int *'} but argument is of type 'char *'
  309 |     const size_t *channels,
      |     ~~~~~~~~~~~~~~^~~~~~~~
/build/srslte-18.06.1+ds.1/lib/src/phy/rf/rf_soapy_imp.c:344:104: warning: 
passing argument 5 of 'SoapySDRDevice_setupStream' makes integer from pointer 
without a cast [-Wint-conversion]
  344 |     if(SoapySDRDevice_setupStream(handler->device, 
&(handler->rxStream), SOAPY_SDR_RX, SOAPY_SDR_CF32, NULL, 0, NULL) != 0) {
      |                                                                         
                               ^~~~
      |                                                                         
                               |
      |                                                                         
                               void *
In file included from 
/build/srslte-18.06.1+ds.1/lib/src/phy/rf/rf_soapy_imp.c:37:
/usr/include/SoapySDR/Device.h:310:18: note: expected 'size_t' {aka 'const long 
unsigned int'} but argument is of type 'void *'
  310 |     const size_t numChans,
      |     ~~~~~~~~~~~~~^~~~~~~~
/build/srslte-18.06.1+ds.1/lib/src/phy/rf/rf_soapy_imp.c:344:8: error: too many 
arguments to function 'SoapySDRDevice_setupStream'
  344 |     if(SoapySDRDevice_setupStream(handler->device, 
&(handler->rxStream), SOAPY_SDR_RX, SOAPY_SDR_CF32, NULL, 0, NULL) != 0) {
      |        ^~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from 
/build/srslte-18.06.1+ds.1/lib/src/phy/rf/rf_soapy_imp.c:37:
/usr/include/SoapySDR/Device.h:306:31: note: declared here
  306 | SOAPY_SDR_API SoapySDRStream *SoapySDRDevice_setupStream(SoapySDRDevice 
*device,
      |                               ^~~~~~~~~~~~~~~~~~~~~~~~~~
/build/srslte-18.06.1+ds.1/lib/src/phy/rf/rf_soapy_imp.c:353:53: warning: 
passing argument 2 of 'SoapySDRDevice_setupStream' makes integer from pointer 
without a cast [-Wint-conversion]
  353 |     if (SoapySDRDevice_setupStream(handler->device, 
&(handler->txStream), SOAPY_SDR_TX, SOAPY_SDR_CF32, NULL, 0, NULL) != 0) {
      |                                                     ^~~~~~~~~~~~~~~~~~~~
      |                                                     |
      |                                                     SoapySDRStream **
In file included from 
/build/srslte-18.06.1+ds.1/lib/src/phy/rf/rf_soapy_imp.c:37:
/usr/include/SoapySDR/Device.h:307:15: note: expected 'int' but argument is of 
type 'SoapySDRStream **'
  307 |     const int direction,
      |     ~~~~~~~~~~^~~~~~~~~
/build/srslte-18.06.1+ds.1/lib/src/phy/rf/rf_soapy_imp.c:353:89: error: passing 
argument 4 of 'SoapySDRDevice_setupStream' from incompatible pointer type 
[-Werror=incompatible-pointer-types]
  353 |     if (SoapySDRDevice_setupStream(handler->device, 
&(handler->txStream), SOAPY_SDR_TX, SOAPY_SDR_CF32, NULL, 0, NULL) != 0) {
      |                                                                         
                ^~~~~~~~~~~~~~
      |                                                                         
                |
      |                                                                         
                char *
In file included from 
/build/srslte-18.06.1+ds.1/lib/src/phy/rf/rf_soapy_imp.c:37:
/usr/include/SoapySDR/Device.h:309:19: note: expected 'const size_t *' {aka 
'const long unsigned int *'} but argument is of type 'char *'
  309 |     const size_t *channels,
      |     ~~~~~~~~~~~~~~^~~~~~~~
/build/srslte-18.06.1+ds.1/lib/src/phy/rf/rf_soapy_imp.c:353:105: warning: 
passing argument 5 of 'SoapySDRDevice_setupStream' makes integer from pointer 
without a cast [-Wint-conversion]
  353 |     if (SoapySDRDevice_setupStream(handler->device, 
&(handler->txStream), SOAPY_SDR_TX, SOAPY_SDR_CF32, NULL, 0, NULL) != 0) {
      |                                                                         
                                ^~~~
      |                                                                         
                                |
      |                                                                         
                                void *
In file included from 
/build/srslte-18.06.1+ds.1/lib/src/phy/rf/rf_soapy_imp.c:37:
/usr/include/SoapySDR/Device.h:310:18: note: expected 'size_t' {aka 'const long 
unsigned int'} but argument is of type 'void *'
  310 |     const size_t numChans,
      |     ~~~~~~~~~~~~~^~~~~~~~
/build/srslte-18.06.1+ds.1/lib/src/phy/rf/rf_soapy_imp.c:353:9: error: too many 
arguments to function 'SoapySDRDevice_setupStream'
  353 |     if (SoapySDRDevice_setupStream(handler->device, 
&(handler->txStream), SOAPY_SDR_TX, SOAPY_SDR_CF32, NULL, 0, NULL) != 0) {
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~

Reply via email to