tracker 3.2.0 fails to build with libsoup3 installed
[90/178] Compiling C object src/libtra...on-generated_remote_tracker-remote.c.o
FAILED: src/libtracker-sparql/libtracker-remote-soup3.so.p/meson-generated_remote_tracker-remote.c.o
cc -Isrc/libtracker-sparql/libtracker-remote-soup3.so.p -Isrc/libtracker-sparql -I../src/libtracker-sparql -I. -I.. -Isrc -I../src -Isrc/libtracker-common -I../src/libtracker-common -Isrc/libtracker-data -I../src/libtracker-data -I/usr/include/json-glib-1.0 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/libxml2 -I/usr/include/gio-unix-2.0 -I/usr/include/libsoup-3.0 -flto=auto -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -w -std=c99 -O3 -Wformat -Wformat-security -Wswitch -Werror=switch -Wno-missing-field-initializers -Wno-unused-parameter -DTRACKER_COMPILATION '-DG_LOG_DOMAIN="Tracker"' -DG_LOG_STRUCTURED=1 -DG_DISABLE_CAST_CHECKS -O3 -march=native -mtune=icelake-client -pipe -fgraphite-identity -floop-nest-optimize -falign-functions=32 -fipa-pta -fdevirtualize-at-ltrans -flto=auto -fPIC -pthread -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -include config.h -include libtracker-sparql/tracker-private.h -MD -MQ src/libtracker-sparql/libtracker-remote-soup3.so.p/meson-generated_remote_tracker-remote.c.o -MF src/libtracker-sparql/libtracker-remote-soup3.so.p/meson-generated_remote_tracker-remote.c.o.d -o src/libtracker-sparql/libtracker-remote-soup3.so.p/meson-generated_remote_tracker-remote.c.o -c src/libtracker-sparql/libtracker-remote-soup3.so.p/remote/tracker-remote.c
src/libtracker-sparql/libtracker-remote-soup3.so.p/remote/tracker-remote.c:50:34: error: conflicting types for 'SoupMessageClass'; have 'struct _SoupMessageClass'
50 | typedef struct _SoupMessageClass SoupMessageClass;
| ^~~~~~~~~~~~~~~~
In file included from /usr/include/glib-2.0/gobject/gobject.h:24,
from /usr/include/glib-2.0/gobject/gbinding.h:29,
from /usr/include/glib-2.0/glib-object.h:22,
from /usr/include/glib-2.0/gio/gioenums.h:28,
from /usr/include/glib-2.0/gio/giotypes.h:28,
from /usr/include/glib-2.0/gio/gio.h:26,
from ../src/libtracker-sparql/tracker-cursor.h:26,
from ../src/libtracker-sparql/tracker-private.h:24,
from <command-line>:
/usr/include/libsoup-3.0/libsoup/soup-message.h:18:23: note: previous declaration of 'SoupMessageClass' with type 'SoupMessageClass'
18 | G_DECLARE_FINAL_TYPE (SoupMessage, soup_message, SOUP, MESSAGE, GObject)
| ^~~~~~~~~~~
/usr/include/glib-2.0/gobject/gtype.h:1444:54: note: in definition of macro 'G_DECLARE_FINAL_TYPE'
1444 | typedef struct { ParentName##Class parent_class; } ModuleObjName##Class; \
| ^~~~~~~~~~~~~
src/libtracker-sparql/libtracker-remote-soup3.so.p/remote/tracker-remote.c:42:32: error: expected identifier or '(' before ')' token
42 | #define soup_message_get_type () (soup_message_get_type ())
| ^
src/libtracker-sparql/libtracker-remote-soup3.so.p/remote/tracker-remote.c:96:19: note: in expansion of macro 'soup_message_get_type'
96 | VALA_EXTERN GType soup_message_get_type (void) G_GNUC_CONST ;
| ^~~~~~~~~~~~~~~~~~~~~
To make it worse, there is no meson option to disable libsoup3. I had to modify meson.build to make it build fine with old libsoup2.