Subject: bug#58374: GVFS depends on WebKitGTK via gnome-online-accounts

From: Ludovic Courtès <[email-masked]>
Date: Sat, 08 Oct 2022 11:53:43 +0200

For a “system-level” package, GVFS has an unreasonable footprint:

--8<---------------cut here---------------start------------->8---
$ guix describe
Generation 230	Oct 03 2022 00:13:06	(current)
  guix bb3b810
    repository URL: https://git.savannah.gnu.org/git/guix.git
    branch: master
    commit: bb3b810167d9ff784770a848a6f86b0cfa9cdfd8
$ guix size gvfs
store item                                                       total    self
/gnu/store/wdm2s2si8fqsrcd5xpc29ivmpkf20s8d-mesa-21.3.8            411.6   169.6   6.8%
/gnu/store/6pdzpmxg5afzss6dlivq8z84sfa31x22-llvm-11.0.0            221.5   149.5   6.0%
/gnu/store/069aq2v993kpc41yabp5b6vm4wb9jkhg-gcc-10.3.0             217.7   145.8   5.9%
/gnu/store/9cbi3x1f0xqagpmdmjhc79acshyjkl6k-webkitgtk-2.36.7      1379.1   127.0   5.1%
/gnu/store/a67q76vpbahf66y434pqs9c1gsj6x7ml-samba-4.16.4           491.8    93.7   3.8%
/gnu/store/492rrcrkgaq0csw1x09x6aj5kjz8xxrr-samba-4.15.3           489.4    90.1   3.6%
/gnu/store/drjnxy0jrxd084grrkyagrdkjsyv1afz-qtbase-5.15.2         1154.1    73.4   2.9%
/gnu/store/65i3nhcwmz0p8rqbg48gaavyky4g4hwk-python-3.9.9           155.3    63.7   2.6%
/gnu/store/p3hz5g4z1yzjq6bsbp7kqr9g0fmrmad8-mozjs-78.15.0          258.1    62.3   2.5%
/gnu/store/hy6abswwv4d89zp464fw52z65fkzr7h5-perl-5.34.0            147.7    58.6   2.4%
/gnu/store/x3rwakc3z81hmgayxj5qh4a8flsj9hzw-mediasdk-22.4.4        468.8    56.4   2.3%

[...]

total: 2492.4 MiB
--8<---------------cut here---------------end--------------->8---

The main issue is the dependency on webkitgtk:

--8<---------------cut here---------------start------------->8---
$ guix graph --path gvfs [email-masked]
[email-masked]
[email-masked]
[email-masked]
$ guix gc --references $(guix build gnome-online-accounts)|grep webkit
/gnu/store/6zpcpnywcimmia84jkixnwfcl4chhz6k-webkitgtk-2.36.7
$ grep -r 6zpcpnywcimmia84jkixnwfcl4chhz6k $(guix build gnome-online-accounts)
grep: /gnu/store/dkqcdhcg8536h4ahwpkc3hv0xrrc8haj-gnome-online-accounts-3.45.2/lib/libgoa-backend-1.0.so.1.0.0: binary file matches
grep: /gnu/store/dkqcdhcg8536h4ahwpkc3hv0xrrc8haj-gnome-online-accounts-3.45.2/lib/goa-1.0/web-extensions/libgoawebextension.so: binary file matches
grep: /gnu/store/dkqcdhcg8536h4ahwpkc3hv0xrrc8haj-gnome-online-accounts-3.45.2/etc/ld.so.cache: binary file matches
$ ldd /gnu/store/dkqcdhcg8536h4ahwpkc3hv0xrrc8haj-gnome-online-accounts-3.45.2/lib/libgoa-backend-1.0.so.1.0.0 |grep webkit
	libjavascriptcoregtk-4.1.so.0 => /gnu/store/6zpcpnywcimmia84jkixnwfcl4chhz6k-webkitgtk-2.36.7/lib/libjavascriptcoregtk-4.1.so.0 (0x00007f228ec00000)
	libwebkit2gtk-4.1.so.0 => /gnu/store/6zpcpnywcimmia84jkixnwfcl4chhz6k-webkitgtk-2.36.7/lib/libwebkit2gtk-4.1.so.0 (0x00007f228a800000)
$ ldd /gnu/store/dkqcdhcg8536h4ahwpkc3hv0xrrc8haj-gnome-online-accounts-3.45.2/lib/goa-1.0/web-extensions/libgoawebextension.so |grep webkit
	libwebkit2gtk-4.1.so.0 => /gnu/store/6zpcpnywcimmia84jkixnwfcl4chhz6k-webkitgtk-2.36.7/lib/libwebkit2gtk-4.1.so.0 (0x00007f3a0a200000)
	libjavascriptcoregtk-4.1.so.0 => /gnu/store/6zpcpnywcimmia84jkixnwfcl4chhz6k-webkitgtk-2.36.7/lib/libjavascriptcoregtk-4.1.so.0 (0x00007f3a07c00000)
--8<---------------cut here---------------end--------------->8---

One way to address it might be to build libgoa-backend and
libgoawebextension separately from the main libgoa.so, or to have them
in a separate output.

However, I’m not sure how libgoa-backend is supposed to be used.  It has
a .pc file, which suggests applications that need it explicitly link
against it (as opposed to having it dlopen’d), but I couldn’t find an
example.

Thoughts?

Ludo’.