freeswitch/spandsp

Questions regarding this spandsp "fork"

Closed this issue · 5 comments

Hi all,

I maintain the FreeSWITCH package for OpenWrt and the FreeSWITCH update 1.10.4 causes me some consternation regarding the spandsp dependency.

I saw that there was a commit made shortly before the release that lowered the spandsp version requirement from 1.99 to 0.0.6, apparently to be able to compile against the spandsp version used in Debian. But I have to wonder if this would really work (on Debian), because OpenWrt uses the same spandsp version 0.0.6 and the few patches that Debian adds on top don't seem to be related to the build failure I see when trying to compile FreeSWITCH against the OpenWrt spandsp 0.0.6 (I'll paste the log below in case anybody is curious).

So for all I know spandsp 0.0.6 is not compatible with FreeSWITCH 1.10.4 and one needs this spandsp fork (1.99).

Which leads me to the part which gives me consternation :)

I cannot compile FreeSWITCH without spandsp, because libfreeswitch.so seems to have a hard dependency on it (on version 1.99, because as mentioned building against 0.0.6 fails). But the fork uses the same library name as the "original" version 0.0.6. So I'd like to know your view on how things should go from here. Do you consider this fork with version 1.99 to be a "drop-in" replacement for the "original" version 0.0.6? Is 1.99 ABI/API compatible with 0.0.6? The SONAME is the same, which suggests that it should be ABI/API compatible?

In OpenWrt we have not only FreeSWITCH that depends on spandsp. We also package Asterisk, yate, rtpengine and baresip and they all have dependencies on spandsp. Will they work without changes with this fork of spandsp, with spandsp 1.99?

If this is not the case I will probably put some efforts into trying to rename the library of this fork to something different, so that the "original" spandsp can coexist with this "fork", in order for the other applications that depend on spandsp to keep working as expected.

I would really appreciate your feedback on this matter.

Thanks and kind regards,
Seb

OpenWrt-libtool: compile:  ccache_cc -DHAVE_CONFIG_H -I. -I../../../../src/include -I../../../../libs/esl/src/include -I../../../../libs/xmlrpc-c -I. -I/home/sk/tmp/openwrt/staging_dir/target-mips_24kc_musl/usr/include -I/home/sk/tmp/openwrt/staging_dir/toolchain-mips_24kc_gcc-10.1.0_musl/usr/include -I/home/sk/tmp/openwrt/staging_dir/toolchain-mips_24kc_gcc-10.1.0_musl/include/fortify -I/home/sk/tmp/openwrt/staging_dir/toolchain-mips_24kc_gcc-10.1.0_musl/include -I/home/sk/tmp/openwrt/staging_dir/target-mips_24kc_musl/usr/lib/libiconv-stub/include -I/home/sk/tmp/openwrt/staging_dir/target-mips_24kc_musl/usr/lib/libintl-stub/include -I/home/sk/tmp/openwrt/staging_dir/target-mips_24kc_musl/usr/include/uuid -I/home/sk/tmp/openwrt/build_dir/target-mips_24kc_musl/freeswitch-1.10.4.-release/src/include -I/home/sk/tmp/openwrt/build_dir/target-mips_24kc_musl/freeswitch-1.10.4.-release/src/include -I/home/sk/tmp/openwrt/build_dir/target-mips_24kc_musl/freeswitch-1.10.4.-release/libs/libteletone/src -fPIC -ffast-math -Werror -Wno-unused-result -Wno-misleading-indentation -Wno-error=format-truncation -fvisibility=hidden -DSWITCH_API_VISIBILITY=1 -DCJSON_API_VISIBILITY=1 -DHAVE_VISIBILITY=1 -DHAVE_OPENSSL -Wdeclaration-after-statement -Os -pipe -mno-branch-likely -mips32r2 -mtune=24kc -fno-caller-saves -fno-plt -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -msoft-float -mips16 -minterlink-mips16 -ffile-prefix-map=/home/sk/tmp/openwrt/build_dir/target-mips_24kc_musl/freeswitch-1.10.4.-release=freeswitch-1.10.4.-release -Wformat -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro -I/home/sk/tmp/openwrt/staging_dir/target-mips_24kc_musl/usr/lib/libiconv-stub/include -I/home/sk/tmp/openwrt/staging_dir/target-mips_24kc_musl/usr/lib/libintl-stub/include -c mod_spandsp_fax.c  -fPIC -DPIC -o .libs/mod_spandsp_la-mod_spandsp_fax.o
mod_spandsp_fax.c: In function 'phase_d_handler':
mod_spandsp_fax.c:422:86: error: 't30_stats_t' has no member named 'image_x_resolution'; did you mean 'x_resolution'?
  422 |  fax_file_image_resolution = switch_core_session_sprintf(session, "%ix%i", t30_stats.image_x_resolution, t30_stats.image_y_resolution);
      |                                                                                      ^~~~~~~~~~~~~~~~~~
      |                                                                                      x_resolution
mod_spandsp_fax.c:422:116: error: 't30_stats_t' has no member named 'image_y_resolution'; did you mean 'y_resolution'?
  422 |  fax_file_image_resolution = switch_core_session_sprintf(session, "%ix%i", t30_stats.image_x_resolution, t30_stats.image_y_resolution);
      |                                                                                                                    ^~~~~~~~~~~~~~~~~~
      |                                                                                                                    y_resolution
mod_spandsp_fax.c:432:85: error: 't30_stats_t' has no member named 'image_width'
  432 |  fax_file_image_pixel_size = switch_core_session_sprintf(session, "%ix%i", t30_stats.image_width, t30_stats.image_length);
      |                                                                                     ^
mod_spandsp_fax.c:432:108: error: 't30_stats_t' has no member named 'image_length'
  432 |  fax_file_image_pixel_size = switch_core_session_sprintf(session, "%ix%i", t30_stats.image_width, t30_stats.image_length);
      |                                                                                                            ^
mod_spandsp_fax.c:452:69: error: 't30_stats_t' has no member named 'compression'
  452 |  fax_encoding = switch_core_session_sprintf(session, "%d", t30_stats.compression);
      |                                                                     ^
In file included from ../../../../src/include/switch.h:127,
                 from mod_spandsp.h:35,
                 from mod_spandsp_fax.c:35:
mod_spandsp_fax.c:457:60: error: implicit declaration of function 't4_compression_to_str' [-Werror=implicit-function-declaration]
  457 |  switch_channel_set_variable(channel, "fax_encoding_name", t4_compression_to_str(t30_stats.compression));
      |                                                            ^~~~~~~~~~~~~~~~~~~~~
../../../../src/include/switch_channel.h:297:113: note: in definition of macro 'switch_channel_set_variable'
  297 | #define switch_channel_set_variable(_channel, _var, _val) switch_channel_set_variable_var_check(_channel, _var, _val, SWITCH_TRUE)
      |                                                                                                                 ^~~~
mod_spandsp_fax.c:457:91: error: 't30_stats_t' has no member named 'compression'
  457 |  switch_channel_set_variable(channel, "fax_encoding_name", t4_compression_to_str(t30_stats.compression));
      |                                                                                           ^
../../../../src/include/switch_channel.h:297:113: note: in definition of macro 'switch_channel_set_variable'
  297 | #define switch_channel_set_variable(_channel, _var, _val) switch_channel_set_variable_var_check(_channel, _var, _val, SWITCH_TRUE)
      |                                                                                                                 ^~~~
mod_spandsp_fax.c:476:113: error: implicit declaration of function 't4_image_type_to_str'; did you mean 't38_data_type_to_str'? [-Werror=implicit-function-declaration]
  476 |  switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Image type = %s (%s in the file)\n", t4_image_type_to_str(t30_stats.type), t4_image_type_to_str(t30_stats.image_type));
      |                                                                                                                 ^~~~~~~~~~~~~~~~~~~~
      |                                                                                                                 t38_data_type_to_str
mod_spandsp_fax.c:476:143: error: 't30_stats_t' has no member named 'type'
  476 |  switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Image type = %s (%s in the file)\n", t4_image_type_to_str(t30_stats.type), t4_image_type_to_str(t30_stats.image_type));
      |                                                                                                                                               ^
mod_spandsp_fax.c:476:182: error: 't30_stats_t' has no member named 'image_type'; did you mean 'image_size'?
  476 |  switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Image type = %s (%s in the file)\n", t4_image_type_to_str(t30_stats.type), t4_image_type_to_str(t30_stats.image_type));
      |                                                                                                                                                                                      ^~~~~~~~~~
      |                                                                                                                                                                                      image_size
mod_spandsp_fax.c:477:181: error: 't30_stats_t' has no member named 'image_width'
  477 |  switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Image size = %d x %d pixels (%d x %d pixels in the file)\n", t30_stats.width, t30_stats.length, t30_stats.image_width, t30_stats.image_length);
      |                                                                                                                                                                                     ^
mod_spandsp_fax.c:477:204: error: 't30_stats_t' has no member named 'image_length'
  477 |  switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Image size = %d x %d pixels (%d x %d pixels in the file)\n", t30_stats.width, t30_stats.length, t30_stats.image_width, t30_stats.image_length);
      |                                                                                                                                                                                                            ^
mod_spandsp_fax.c:478:195: error: 't30_stats_t' has no member named 'image_x_resolution'; did you mean 'x_resolution'?
  478 |  switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Image resolution = %d/m x %d/m (%d/m x %d/m in the file)\n", t30_stats.x_resolution, t30_stats.y_resolution, t30_stats.image_x_resolution, t30_stats.image_y_resolution);
      |                                                                                                                                                                                                   ^~~~~~~~~~~~~~~~~~
      |                                                                                                                                                                                                   x_resolution
mod_spandsp_fax.c:478:225: error: 't30_stats_t' has no member named 'image_y_resolution'; did you mean 'y_resolution'?
  478 |  switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Image resolution = %d/m x %d/m (%d/m x %d/m in the file)\n", t30_stats.x_resolution, t30_stats.y_resolution, t30_stats.image_x_resolution, t30_stats.image_y_resolution);
      |                                                                                                                                                                                                                                 ^~~~~~~~~~~~~~~~~~
      |                                                                                                                                                                                                                                 y_resolution
mod_spandsp_fax.c:479:133: error: 't30_stats_t' has no member named 'compression'
  479 |  switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Compression = %s (%d)\n", t4_compression_to_str(t30_stats.compression), t30_stats.compression);
      |                                                                                                                                     ^
mod_spandsp_fax.c:479:157: error: 't30_stats_t' has no member named 'compression'
  479 |  switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Compression = %s (%d)\n", t4_compression_to_str(t30_stats.compression), t30_stats.compression);
      |                                                                                                                                                             ^
mod_spandsp_fax.c:503:114: error: 't30_stats_t' has no member named 'compression'
  503 |   switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fax-encoding-name", t4_compression_to_str(t30_stats.compression));
      |                                                                                                                  ^
mod_spandsp_fax.c: In function 'spanfax_init':
mod_spandsp_fax.c:775:60: error: passing argument 2 of 'span_log_set_message_handler' from incompatible pointer type [-Werror=incompatible-pointer-types]
  775 |   span_log_set_message_handler(fax_get_logging_state(fax), mod_spandsp_log_message, pvt->session);
      |                                                            ^~~~~~~~~~~~~~~~~~~~~~~
      |                                                            |
      |                                                            void (*)(void *, int,  const char *)
In file included from /home/sk/tmp/openwrt/staging_dir/target-mips_24kc_musl/usr/include/spandsp.h:47,
                 from mod_spandsp.h:50,
                 from mod_spandsp_fax.c:35:
/home/sk/tmp/openwrt/staging_dir/target-mips_24kc_musl/usr/include/spandsp/logging.h:120:92: note: expected 'message_handler_func_t' {aka 'void (*)(int,  const char *)'} but argument is of type 'void (*)(void *, int,  const char *)'
  120 | SPAN_DECLARE(void) span_log_set_message_handler(logging_state_t *s, message_handler_func_t func);
      |                                                                     ~~~~~~~~~~~~~~~~~~~~~~~^~~~
mod_spandsp_fax.c:775:3: error: too many arguments to function 'span_log_set_message_handler'
  775 |   span_log_set_message_handler(fax_get_logging_state(fax), mod_spandsp_log_message, pvt->session);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/sk/tmp/openwrt/staging_dir/target-mips_24kc_musl/usr/include/spandsp.h:47,
                 from mod_spandsp.h:50,
                 from mod_spandsp_fax.c:35:
/home/sk/tmp/openwrt/staging_dir/target-mips_24kc_musl/usr/include/spandsp/logging.h:120:20: note: declared here
  120 | SPAN_DECLARE(void) span_log_set_message_handler(logging_state_t *s, message_handler_func_t func);
      |                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
mod_spandsp_fax.c:776:60: error: passing argument 2 of 'span_log_set_message_handler' from incompatible pointer type [-Werror=incompatible-pointer-types]
  776 |   span_log_set_message_handler(t30_get_logging_state(t30), mod_spandsp_log_message, pvt->session);
      |                                                            ^~~~~~~~~~~~~~~~~~~~~~~
      |                                                            |
      |                                                            void (*)(void *, int,  const char *)
In file included from /home/sk/tmp/openwrt/staging_dir/target-mips_24kc_musl/usr/include/spandsp.h:47,
                 from mod_spandsp.h:50,
                 from mod_spandsp_fax.c:35:
/home/sk/tmp/openwrt/staging_dir/target-mips_24kc_musl/usr/include/spandsp/logging.h:120:92: note: expected 'message_handler_func_t' {aka 'void (*)(int,  const char *)'} but argument is of type 'void (*)(void *, int,  const char *)'
  120 | SPAN_DECLARE(void) span_log_set_message_handler(logging_state_t *s, message_handler_func_t func);
      |                                                                     ~~~~~~~~~~~~~~~~~~~~~~~^~~~
mod_spandsp_fax.c:776:3: error: too many arguments to function 'span_log_set_message_handler'
  776 |   span_log_set_message_handler(t30_get_logging_state(t30), mod_spandsp_log_message, pvt->session);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/sk/tmp/openwrt/staging_dir/target-mips_24kc_musl/usr/include/spandsp.h:47,
                 from mod_spandsp.h:50,
                 from mod_spandsp_fax.c:35:
/home/sk/tmp/openwrt/staging_dir/target-mips_24kc_musl/usr/include/spandsp/logging.h:120:20: note: declared here
  120 | SPAN_DECLARE(void) span_log_set_message_handler(logging_state_t *s, message_handler_func_t func);
      |                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
mod_spandsp_fax.c:830:70: error: passing argument 2 of 'span_log_set_message_handler' from incompatible pointer type [-Werror=incompatible-pointer-types]
  830 |    span_log_set_message_handler(t38_terminal_get_logging_state(t38), mod_spandsp_log_message, pvt->session);
      |                                                                      ^~~~~~~~~~~~~~~~~~~~~~~
      |                                                                      |
      |                                                                      void (*)(void *, int,  const char *)
In file included from /home/sk/tmp/openwrt/staging_dir/target-mips_24kc_musl/usr/include/spandsp.h:47,
                 from mod_spandsp.h:50,
                 from mod_spandsp_fax.c:35:
/home/sk/tmp/openwrt/staging_dir/target-mips_24kc_musl/usr/include/spandsp/logging.h:120:92: note: expected 'message_handler_func_t' {aka 'void (*)(int,  const char *)'} but argument is of type 'void (*)(void *, int,  const char *)'
  120 | SPAN_DECLARE(void) span_log_set_message_handler(logging_state_t *s, message_handler_func_t func);
      |                                                                     ~~~~~~~~~~~~~~~~~~~~~~~^~~~
mod_spandsp_fax.c:830:4: error: too many arguments to function 'span_log_set_message_handler'
  830 |    span_log_set_message_handler(t38_terminal_get_logging_state(t38), mod_spandsp_log_message, pvt->session);
      |    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/sk/tmp/openwrt/staging_dir/target-mips_24kc_musl/usr/include/spandsp.h:47,
                 from mod_spandsp.h:50,
                 from mod_spandsp_fax.c:35:
/home/sk/tmp/openwrt/staging_dir/target-mips_24kc_musl/usr/include/spandsp/logging.h:120:20: note: declared here
  120 | SPAN_DECLARE(void) span_log_set_message_handler(logging_state_t *s, message_handler_func_t func);
      |                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
mod_spandsp_fax.c:831:61: error: passing argument 2 of 'span_log_set_message_handler' from incompatible pointer type [-Werror=incompatible-pointer-types]
  831 |    span_log_set_message_handler(t30_get_logging_state(t30), mod_spandsp_log_message, pvt->session);
      |                                                             ^~~~~~~~~~~~~~~~~~~~~~~
      |                                                             |
      |                                                             void (*)(void *, int,  const char *)
In file included from /home/sk/tmp/openwrt/staging_dir/target-mips_24kc_musl/usr/include/spandsp.h:47,
                 from mod_spandsp.h:50,
                 from mod_spandsp_fax.c:35:
/home/sk/tmp/openwrt/staging_dir/target-mips_24kc_musl/usr/include/spandsp/logging.h:120:92: note: expected 'message_handler_func_t' {aka 'void (*)(int,  const char *)'} but argument is of type 'void (*)(void *, int,  const char *)'
  120 | SPAN_DECLARE(void) span_log_set_message_handler(logging_state_t *s, message_handler_func_t func);
      |                                                                     ~~~~~~~~~~~~~~~~~~~~~~~^~~~
mod_spandsp_fax.c:831:4: error: too many arguments to function 'span_log_set_message_handler'
  831 |    span_log_set_message_handler(t30_get_logging_state(t30), mod_spandsp_log_message, pvt->session);
      |    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/sk/tmp/openwrt/staging_dir/target-mips_24kc_musl/usr/include/spandsp.h:47,
                 from mod_spandsp.h:50,
                 from mod_spandsp_fax.c:35:
/home/sk/tmp/openwrt/staging_dir/target-mips_24kc_musl/usr/include/spandsp/logging.h:120:20: note: declared here
  120 | SPAN_DECLARE(void) span_log_set_message_handler(logging_state_t *s, message_handler_func_t func);
      |                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
mod_spandsp_fax.c:880:87: error: passing argument 2 of 'span_log_set_message_handler' from incompatible pointer type [-Werror=incompatible-pointer-types]
  880 |   span_log_set_message_handler(t38_gateway_get_logging_state(pvt->t38_gateway_state), mod_spandsp_log_message, pvt->session);
      |                                                                                       ^~~~~~~~~~~~~~~~~~~~~~~
      |                                                                                       |
      |                                                                                       void (*)(void *, int,  const char *)
In file included from /home/sk/tmp/openwrt/staging_dir/target-mips_24kc_musl/usr/include/spandsp.h:47,
                 from mod_spandsp.h:50,
                 from mod_spandsp_fax.c:35:
/home/sk/tmp/openwrt/staging_dir/target-mips_24kc_musl/usr/include/spandsp/logging.h:120:92: note: expected 'message_handler_func_t' {aka 'void (*)(int,  const char *)'} but argument is of type 'void (*)(void *, int,  const char *)'
  120 | SPAN_DECLARE(void) span_log_set_message_handler(logging_state_t *s, message_handler_func_t func);
      |                                                                     ~~~~~~~~~~~~~~~~~~~~~~~^~~~
mod_spandsp_fax.c:880:3: error: too many arguments to function 'span_log_set_message_handler'
  880 |   span_log_set_message_handler(t38_gateway_get_logging_state(pvt->t38_gateway_state), mod_spandsp_log_message, pvt->session);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/sk/tmp/openwrt/staging_dir/target-mips_24kc_musl/usr/include/spandsp.h:47,
                 from mod_spandsp.h:50,
                 from mod_spandsp_fax.c:35:
/home/sk/tmp/openwrt/staging_dir/target-mips_24kc_musl/usr/include/spandsp/logging.h:120:20: note: declared here
  120 | SPAN_DECLARE(void) span_log_set_message_handler(logging_state_t *s, message_handler_func_t func);
      |                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
mod_spandsp_fax.c:881:75: error: passing argument 2 of 'span_log_set_message_handler' from incompatible pointer type [-Werror=incompatible-pointer-types]
  881 |   span_log_set_message_handler(t38_core_get_logging_state(pvt->t38_core), mod_spandsp_log_message, pvt->session);
      |                                                                           ^~~~~~~~~~~~~~~~~~~~~~~
      |                                                                           |
      |                                                                           void (*)(void *, int,  const char *)
In file included from /home/sk/tmp/openwrt/staging_dir/target-mips_24kc_musl/usr/include/spandsp.h:47,
                 from mod_spandsp.h:50,
                 from mod_spandsp_fax.c:35:
/home/sk/tmp/openwrt/staging_dir/target-mips_24kc_musl/usr/include/spandsp/logging.h:120:92: note: expected 'message_handler_func_t' {aka 'void (*)(int,  const char *)'} but argument is of type 'void (*)(void *, int,  const char *)'
  120 | SPAN_DECLARE(void) span_log_set_message_handler(logging_state_t *s, message_handler_func_t func);
      |                                                                     ~~~~~~~~~~~~~~~~~~~~~~~^~~~
mod_spandsp_fax.c:881:3: error: too many arguments to function 'span_log_set_message_handler'
  881 |   span_log_set_message_handler(t38_core_get_logging_state(pvt->t38_core), mod_spandsp_log_message, pvt->session);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/sk/tmp/openwrt/staging_dir/target-mips_24kc_musl/usr/include/spandsp.h:47,
                 from mod_spandsp.h:50,
                 from mod_spandsp_fax.c:35:
/home/sk/tmp/openwrt/staging_dir/target-mips_24kc_musl/usr/include/spandsp/logging.h:120:20: note: declared here
  120 | SPAN_DECLARE(void) span_log_set_message_handler(logging_state_t *s, message_handler_func_t func);
      |                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
mod_spandsp_fax.c:906:31: error: passing argument 2 of 't30_set_phase_e_handler' from incompatible pointer type [-Werror=incompatible-pointer-types]
  906 |  t30_set_phase_e_handler(t30, phase_e_handler, pvt);
      |                               ^~~~~~~~~~~~~~~
      |                               |
      |                               void (*)(void *, int)
In file included from /home/sk/tmp/openwrt/staging_dir/target-mips_24kc_musl/usr/include/spandsp.h:110,
                 from mod_spandsp.h:50,
                 from mod_spandsp_fax.c:35:
/home/sk/tmp/openwrt/staging_dir/target-mips_24kc_musl/usr/include/spandsp/t30_api.h:524:83: note: expected 'void (*)(t30_state_t *, void *, int)' {aka 'void (*)(struct t30_state_s *, void *, int)'} but argument is of type 'void (*)(void *, int)'
  524 | SPAN_DECLARE(void) t30_set_phase_e_handler(t30_state_t *s, t30_phase_e_handler_t *handler, void *user_data);
      |                                                            ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
mod_spandsp_fax.c:907:31: error: passing argument 2 of 't30_set_phase_d_handler' from incompatible pointer type [-Werror=incompatible-pointer-types]
  907 |  t30_set_phase_d_handler(t30, phase_d_handler, pvt);
      |                               ^~~~~~~~~~~~~~~
      |                               |
      |                               int (*)(void *, int)
In file included from /home/sk/tmp/openwrt/staging_dir/target-mips_24kc_musl/usr/include/spandsp.h:110,
                 from mod_spandsp.h:50,
                 from mod_spandsp_fax.c:35:
/home/sk/tmp/openwrt/staging_dir/target-mips_24kc_musl/usr/include/spandsp/t30_api.h:517:83: note: expected 'int (*)(t30_state_t *, void *, int)' {aka 'int (*)(struct t30_state_s *, void *, int)'} but argument is of type 'int (*)(void *, int)'
  517 | SPAN_DECLARE(void) t30_set_phase_d_handler(t30_state_t *s, t30_phase_d_handler_t *handler, void *user_data);
      |                                                            ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
mod_spandsp_fax.c:908:31: error: passing argument 2 of 't30_set_phase_b_handler' from incompatible pointer type [-Werror=incompatible-pointer-types]
  908 |  t30_set_phase_b_handler(t30, phase_b_handler, pvt);
      |                               ^~~~~~~~~~~~~~~
      |                               |
      |                               int (*)(void *, int)
In file included from /home/sk/tmp/openwrt/staging_dir/target-mips_24kc_musl/usr/include/spandsp.h:110,
                 from mod_spandsp.h:50,
                 from mod_spandsp_fax.c:35:
/home/sk/tmp/openwrt/staging_dir/target-mips_24kc_musl/usr/include/spandsp/t30_api.h:510:83: note: expected 'int (*)(t30_state_t *, void *, int)' {aka 'int (*)(struct t30_state_s *, void *, int)'} but argument is of type 'int (*)(void *, int)'
  510 | SPAN_DECLARE(void) t30_set_phase_b_handler(t30_state_t *s, t30_phase_b_handler_t *handler, void *user_data);
      |                                                            ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
mod_spandsp_fax.c:911:11: error: 'T4_SUPPORT_LENGTH_US_LETTER' undeclared (first use in this function)
  911 |           T4_SUPPORT_LENGTH_US_LETTER
      |           ^~~~~~~~~~~~~~~~~~~~~~~~~~~
mod_spandsp_fax.c:911:11: note: each undeclared identifier is reported only once for each function it appears in
mod_spandsp_fax.c:912:11: error: 'T4_SUPPORT_LENGTH_US_LEGAL' undeclared (first use in this function)
  912 |         | T4_SUPPORT_LENGTH_US_LEGAL
      |           ^~~~~~~~~~~~~~~~~~~~~~~~~~
mod_spandsp_fax.c:913:11: error: 'T4_SUPPORT_LENGTH_UNLIMITED' undeclared (first use in this function)
  913 |         | T4_SUPPORT_LENGTH_UNLIMITED
      |           ^~~~~~~~~~~~~~~~~~~~~~~~~~~
mod_spandsp_fax.c:914:11: error: 'T4_SUPPORT_WIDTH_215MM' undeclared (first use in this function)
  914 |         | T4_SUPPORT_WIDTH_215MM
      |           ^~~~~~~~~~~~~~~~~~~~~~
mod_spandsp_fax.c:915:11: error: 'T4_SUPPORT_WIDTH_255MM' undeclared (first use in this function)
  915 |         | T4_SUPPORT_WIDTH_255MM
      |           ^~~~~~~~~~~~~~~~~~~~~~
mod_spandsp_fax.c:916:11: error: 'T4_SUPPORT_WIDTH_303MM' undeclared (first use in this function)
  916 |         | T4_SUPPORT_WIDTH_303MM);
      |           ^~~~~~~~~~~~~~~~~~~~~~
mod_spandsp_fax.c:917:2: error: implicit declaration of function 't30_set_supported_bilevel_resolutions'; did you mean 't30_set_supported_resolutions'? [-Werror=implicit-function-declaration]
  917 |  t30_set_supported_bilevel_resolutions(t30,
      |  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |  t30_set_supported_resolutions
mod_spandsp_fax.c:918:13: error: 'T4_RESOLUTION_R8_STANDARD' undeclared (first use in this function); did you mean 'T4_Y_RESOLUTION_STANDARD'?
  918 |             T4_RESOLUTION_R8_STANDARD
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~
      |             T4_Y_RESOLUTION_STANDARD
mod_spandsp_fax.c:919:13: error: 'T4_RESOLUTION_R8_FINE' undeclared (first use in this function); did you mean 'T4_Y_RESOLUTION_FINE'?
  919 |           | T4_RESOLUTION_R8_FINE
      |             ^~~~~~~~~~~~~~~~~~~~~
      |             T4_Y_RESOLUTION_FINE
mod_spandsp_fax.c:920:13: error: 'T4_RESOLUTION_R8_SUPERFINE' undeclared (first use in this function); did you mean 'T4_Y_RESOLUTION_SUPERFINE'?
  920 |           | T4_RESOLUTION_R8_SUPERFINE
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~
      |             T4_Y_RESOLUTION_SUPERFINE
mod_spandsp_fax.c:921:13: error: 'T4_RESOLUTION_R16_SUPERFINE' undeclared (first use in this function); did you mean 'T4_Y_RESOLUTION_SUPERFINE'?
  921 |           | T4_RESOLUTION_R16_SUPERFINE
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~
      |             T4_Y_RESOLUTION_SUPERFINE
mod_spandsp_fax.c:922:43: error: 'T4_RESOLUTION_200_100' undeclared (first use in this function); did you mean 'T4_Y_RESOLUTION_1200'?
  922 |                                         | T4_RESOLUTION_200_100
      |                                           ^~~~~~~~~~~~~~~~~~~~~
      |                                           T4_Y_RESOLUTION_1200
mod_spandsp_fax.c:923:43: error: 'T4_RESOLUTION_200_200' undeclared (first use in this function); did you mean 'T4_Y_RESOLUTION_1200'?
  923 |                                         | T4_RESOLUTION_200_200
      |                                           ^~~~~~~~~~~~~~~~~~~~~
      |                                           T4_Y_RESOLUTION_1200
mod_spandsp_fax.c:924:43: error: 'T4_RESOLUTION_200_400' undeclared (first use in this function); did you mean 'T4_Y_RESOLUTION_1200'?
  924 |                                         | T4_RESOLUTION_200_400
      |                                           ^~~~~~~~~~~~~~~~~~~~~
      |                                           T4_Y_RESOLUTION_1200
mod_spandsp_fax.c:925:43: error: 'T4_RESOLUTION_400_400' undeclared (first use in this function); did you mean 'T4_Y_RESOLUTION_1200'?
  925 |                                         | T4_RESOLUTION_400_400);
      |                                           ^~~~~~~~~~~~~~~~~~~~~
      |                                           T4_Y_RESOLUTION_1200
mod_spandsp_fax.c:926:17: error: 'T4_COMPRESSION_T4_1D' undeclared (first use in this function); did you mean 'T4_COMPRESSION_ITU_T6'?
  926 |  compressions = T4_COMPRESSION_T4_1D
      |                 ^~~~~~~~~~~~~~~~~~~~
      |                 T4_COMPRESSION_ITU_T6
mod_spandsp_fax.c:927:8: error: 'T4_COMPRESSION_T4_2D' undeclared (first use in this function); did you mean 'T4_COMPRESSION_ITU_T6'?
  927 |      | T4_COMPRESSION_T4_2D
      |        ^~~~~~~~~~~~~~~~~~~~
      |        T4_COMPRESSION_ITU_T6
mod_spandsp_fax.c:928:8: error: 'T4_COMPRESSION_T6' undeclared (first use in this function); did you mean 'T4_COMPRESSION_ITU_T6'?
  928 |      | T4_COMPRESSION_T6
      |        ^~~~~~~~~~~~~~~~~
      |        T4_COMPRESSION_ITU_T6
mod_spandsp_fax.c:929:8: error: 'T4_COMPRESSION_T85' undeclared (first use in this function); did you mean 'COMPRESSION_T85'?
  929 |      | T4_COMPRESSION_T85
      |        ^~~~~~~~~~~~~~~~~~
      |        COMPRESSION_T85
mod_spandsp_fax.c:930:8: error: 'T4_COMPRESSION_T85_L0' undeclared (first use in this function); did you mean 'T4_COMPRESSION_ITU_T85_L0'?
  930 |      | T4_COMPRESSION_T85_L0;
      |        ^~~~~~~~~~~~~~~~~~~~~
      |        T4_COMPRESSION_ITU_T85_L0
mod_spandsp_fax.c:932:3: error: implicit declaration of function 't30_set_supported_colour_resolutions'; did you mean 't30_set_supported_resolutions'? [-Werror=implicit-function-declaration]
  932 |   t30_set_supported_colour_resolutions(t30, T4_RESOLUTION_100_100
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |   t30_set_supported_resolutions
mod_spandsp_fax.c:932:45: error: 'T4_RESOLUTION_100_100' undeclared (first use in this function); did you mean 'T4_Y_RESOLUTION_1200'?
  932 |   t30_set_supported_colour_resolutions(t30, T4_RESOLUTION_100_100
      |                                             ^~~~~~~~~~~~~~~~~~~~~
      |                                             T4_Y_RESOLUTION_1200
mod_spandsp_fax.c:934:15: error: 'T4_RESOLUTION_300_300' undeclared (first use in this function); did you mean 'T4_Y_RESOLUTION_300'?
  934 |             | T4_RESOLUTION_300_300
      |               ^~~~~~~~~~~~~~~~~~~~~
      |               T4_Y_RESOLUTION_300
mod_spandsp_fax.c:936:20: error: 'T4_COMPRESSION_COLOUR' undeclared (first use in this function); did you mean 'T4_COMPRESSION_NONE'?
  936 |   compressions |= (T4_COMPRESSION_COLOUR | T4_COMPRESSION_T42_T81);
      |                    ^~~~~~~~~~~~~~~~~~~~~
      |                    T4_COMPRESSION_NONE
mod_spandsp_fax.c:936:44: error: 'T4_COMPRESSION_T42_T81' undeclared (first use in this function); did you mean 'T4_COMPRESSION_ITU_T85'?
  936 |   compressions |= (T4_COMPRESSION_COLOUR | T4_COMPRESSION_T42_T81);
      |                                            ^~~~~~~~~~~~~~~~~~~~~~
      |                                            T4_COMPRESSION_ITU_T85
mod_spandsp_fax.c:941:19: error: 'T4_COMPRESSION_RESCALING' undeclared (first use in this function); did you mean 'T4_COMPRESSION_NONE'?
  941 |   compressions |= T4_COMPRESSION_RESCALING;
      |                   ^~~~~~~~~~~~~~~~~~~~~~~~
      |                   T4_COMPRESSION_NONE
mod_spandsp_fax.c:943:19: error: 'T4_COMPRESSION_COLOUR_TO_BILEVEL' undeclared (first use in this function)
  943 |   compressions |= T4_COMPRESSION_COLOUR_TO_BILEVEL;
      |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mod_spandsp_fax.c:945:19: error: 'T4_COMPRESSION_GRAY_TO_BILEVEL' undeclared (first use in this function)
  945 |   compressions |= T4_COMPRESSION_GRAY_TO_BILEVEL;
      |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
make[7]: *** [Makefile:736: mod_spandsp_la-mod_spandsp_fax.lo] Error 1
make[7]: Leaving directory '/home/sk/tmp/openwrt/build_dir/target-mips_24kc_musl/freeswitch-1.10.4.-release/src/mod/applications/mod_spandsp'
make[6]: *** [Makefile:707: mod_spandsp-all] Error 1

it definitely will not build against the older version. We should have some packaging fixes in for raspian probably tomorrow to set up the old and new versions of spandsp installing side by side so you can use the new version. Wheels are in motion on an official spandsp 2.0 release as well, which will roughly be based on this code.

it definitely will not build against the older version. We should have some packaging fixes in for raspian probably tomorrow to set up the old and new versions of spandsp installing side by side so you can use the new version. Wheels are in motion on an official spandsp 2.0 release as well, which will roughly be based on this code.

Can I take away from this that this spandsp is not ABI/API compatible with the original 0.0.6 and applications that are not FreeSWITCH would need changes to be able to use it (it being 1.99)?

Correct, this is a major version upgrade that is about to be released of spendsp with major api/abi changes. We are working on doing proper packages that can be along side. Note that this is not a fork, and is maintained by the author of spandsp.

see the commits that just went in on versioning/deb packaging. I think this gets us closer to what you need

Thanks Mike!