Follow-up for #773.
Apparently appimaged depends on libgio, which itself depends on libselinux. This leads to issues on some distros, mainly Arch.
The excludelist has some words about libselinux, and suggests that an empty library shall be bundled. I'm not sure why that is supposed to work or whether it'd work at all.
CC @probonopd please check our options and suggest a fix
I'd assume that libgio does not depend on libselinux _per se_, but the libgio builds that come with distributions that use SELinux may depend on it. So another option (besides bundling an empty libselinux dummy) would possibly be to bundle a self-compiled version of libgio that does not need libselinux?
We already do bundle a custom built set of GLib libraries. See https://github.com/AppImage/AppImageKit/pull/749 and https://github.com/AppImage/AppImageBuild/blob/master/Dockerfile#L40-L46.
And you're saying we can't build libgio without it being dependent on SELinux?
No, that was just informational. I'm trying to find such a configure-time option at the moment. Then, I could patch AppImageBuild's GLib.
--disable-selinux
Source: https://developer.gnome.org/glib/stable/glib-building.html
The option seems to work:
[root@20453b5253b3 /]# ldd /deps/lib/libgio-2.0.so
linux-gate.so.1 => (0xf772b000)
libgobject-2.0.so.0 => /deps/lib/libgobject-2.0.so.0 (0xf7515000)
libffi.so.5 => /usr/lib/libffi.so.5 (0xf7505000)
libgmodule-2.0.so.0 => /deps/lib/libgmodule-2.0.so.0 (0xf74fd000)
libdl.so.2 => /lib/libdl.so.2 (0xf74f5000)
libglib-2.0.so.0 => /deps/lib/libglib-2.0.so.0 (0xf73ad000)
libpthread.so.0 => /lib/libpthread.so.0 (0xf738d000)
librt.so.1 => /lib/librt.so.1 (0xf737d000)
libz.so.1 => /lib/libz.so.1 (0xf7365000)
libresolv.so.2 => /lib/libresolv.so.2 (0xf7345000)
libc.so.6 => /lib/libc.so.6 (0xf71ad000)
/lib/ld-linux.so.2 (0xf7705000)
Closing this issue once the Docker images are rebuilt and pushed.
Triggered rebuilds. The new AppImages should no longer depend on SELinux libraries.
We can use dummy libselinux.
https://gitlab.com/sulinos/devel/libselinux-dummy
It provide empty libselinux that fix selinux not found errors
Excellent @paledega
Most helpful comment
We can use dummy libselinux.
https://gitlab.com/sulinos/devel/libselinux-dummy
It provide empty libselinux that fix selinux not found errors