
gi modules are always loaded (there is no API for "set version without loading"), so we need to break dependencies.js into three sections: - Required - Compile-time optional - Runtime optional Required dependencies are always imported, compile-time optional dependencies are loaded if gnome-shell is compiled with support for them, and for runtime optional dependencies we catch any errors when attempting to load them. If runtime optional dependencies fail to load we log a debug-level message. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2822>