gvfs-1.50.1 fails to compile without avahi support
The following compilation failure arises where gvfs-1.50.1 is compiled without avahi support:
[186/316] Compiling C object daemon/gvfsd-dav.p/gvfsbackenddav.c.o
FAILED: daemon/gvfsd-dav.p/gvfsbackenddav.c.o
ccache cc -Idaemon/gvfsd-dav.p -Idaemon -I../daemon -I. -I.. -Icommon -I../common -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/libsoup-3.0 -I/usr/include/sysprof-4 -I/usr/include/libxml2 -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -O3 -DHAVE_CONFIG_H -pthread '-DLIBEXEC_DIR="/usr/libexec"' '-DMOUNTABLE_DIR="/usr/share/gvfs/mounts"' '-DGVFS_LOCALEDIR="/usr/share/locale"' -DBACKEND_HEADER=gvfsbackenddav.h -DDEFAULT_BACKEND_TYPE=dav -DMAX_JOB_THREADS=1 '-DBACKEND_TYPES="dav", G_VFS_TYPE_BACKEND_DAV,' -MD -MQ daemon/gvfsd-dav.p/gvfsbackenddav.c.o -MF daemon/gvfsd-dav.p/gvfsbackenddav.c.o.d -o daemon/gvfsd-dav.p/gvfsbackenddav.c.o -c ../daemon/gvfsbackenddav.c
../daemon/gvfsbackenddav.c: In function ‘g_vfs_backend_dav_setup_display_name’:
../daemon/gvfsbackenddav.c:385:19: warning: variable ‘dav_backend’ set but not used [-Wunused-but-set-variable]
385 | GVfsBackendDav *dav_backend;
| ^~~~~~~~~~~
../daemon/gvfsbackenddav.c: In function ‘try_mount_resolve_cb’:
../daemon/gvfsbackenddav.c:2389:8: warning: implicit declaration of function ‘g_vfs_dns_sd_resolver_resolve_finish’ [-Wimplicit-function-declaration]
2389 | if (!g_vfs_dns_sd_resolver_resolve_finish (dav_backend->resolver,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../daemon/gvfsbackenddav.c:2389:57: error: ‘GVfsBackendDav’ {aka ‘struct _GVfsBackendDav’} has no member named ‘resolver’
2389 | if (!g_vfs_dns_sd_resolver_resolve_finish (dav_backend->resolver,
| ^~
In file included from /usr/include/glib-2.0/gobject/gobject.h:28,
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 ../daemon/gvfsbackenddav.c:35:
../daemon/gvfsbackenddav.c:2398:32: error: ‘GVfsBackendDav’ {aka ‘struct _GVfsBackendDav’} has no member named ‘resolver’
2398 | g_signal_connect (dav_backend->resolver,
| ^~
/usr/include/glib-2.0/gobject/gsignal.h:508:29: note: in definition of macro ‘g_signal_connect’
508 | g_signal_connect_data ((instance), (detailed_signal), (c_handler), (data), NULL, (GConnectFlags) 0)
| ^~~~~~~~
../daemon/gvfsbackenddav.c:2400:33: error: ‘dns_sd_resolver_changed’ undeclared (first use in this function)
2400 | (GCallback) dns_sd_resolver_changed,
| ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/glib-2.0/gobject/gsignal.h:508:60: note: in definition of macro ‘g_signal_connect’
508 | g_signal_connect_data ((instance), (detailed_signal), (c_handler), (data), NULL, (GConnectFlags) 0)
| ^~~~~~~~~
../daemon/gvfsbackenddav.c:2400:33: note: each undeclared identifier is reported only once for each function it appears in
2400 | (GCallback) dns_sd_resolver_changed,
| ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/glib-2.0/gobject/gsignal.h:508:60: note: in definition of macro ‘g_signal_connect’
508 | g_signal_connect_data ((instance), (detailed_signal), (c_handler), (data), NULL, (GConnectFlags) 0)
| ^~~~~~~~~
../daemon/gvfsbackenddav.c:2403:30: warning: implicit declaration of function ‘dav_uri_from_dns_sd_resolver’ [-Wimplicit-function-declaration]
2403 | http_backend->mount_base = dav_uri_from_dns_sd_resolver (dav_backend);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../daemon/gvfsbackenddav.c:2403:28: warning: assignment to ‘GUri *’ {aka ‘struct _GUri *’} from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
2403 | http_backend->mount_base = dav_uri_from_dns_sd_resolver (dav_backend);
| ^
../daemon/gvfsbackenddav.c: In function ‘try_mount’:
../daemon/gvfsbackenddav.c:2418:20: warning: variable ‘type’ set but not used [-Wunused-but-set-variable]
2418 | const char *type;
| ^~~~
../daemon/gvfsbackenddav.c:2417:20: warning: variable ‘host’ set but not used [-Wunused-but-set-variable]
2417 | const char *host;
| ^~~~
../daemon/gvfsbackenddav.c:2415:20: warning: unused variable ‘dav_backend’ [-Wunused-variable]
2415 | GVfsBackendDav *dav_backend = G_VFS_BACKEND_DAV (backend);
| ^~~~~~~~~~~
At top level:
../daemon/gvfsbackenddav.c:2382:1: warning: ‘try_mount_resolve_cb’ defined but not used [-Wunused-function]
2382 | try_mount_resolve_cb (GObject *source, GAsyncResult *result, gpointer user_data)
| ^~~~~~~~~~~~~~~~~~~~
[191/316] Compiling C object daemon/gvfsd-afc.p/gvfsbackendafc.c.o
ninja: build stopped: subcommand failed.
gvfs-1.50.0 compiles OK. There are some unused variable warnings there but the actual error which now arises appears to be the result of changes that have been made in version 1.50.1 which fail to include some required compilation guards. This means that access is attempted to a function and a struct member which is undefined in the non-avahi case. It appears further that this was not picked up in unit testing (if there was any unit testing).