extensionDownloader: Compile gsettings schemas after install

After an extension is installed, run `glib-compile-schemas` on its
`schemas` directory, if it exists.

This should avoid any endianess-related issues for extensions when
running GNOME Shell on varying architectures.

Co-authored-by: Marco Trevisan (Treviño) <mail@3v1n0.net>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2638>
This commit is contained in:
Andy Holmes 2023-02-12 13:54:07 -08:00 committed by Marge Bot
parent 3e3aa1f7a3
commit 0a4cb82d9a

View File

@ -113,6 +113,24 @@ async function extractExtensionArchive(bytes, dir) {
['unzip', '-uod', dir.get_path(), '--', file.get_path()], ['unzip', '-uod', dir.get_path(), '--', file.get_path()],
Gio.SubprocessFlags.NONE); Gio.SubprocessFlags.NONE);
await unzip.wait_check_async(null); await unzip.wait_check_async(null);
const schemasPath = dir.get_child('schemas');
const info = await schemasPath.query_info_async(
Gio.FILE_ATTRIBUTE_STANDARD_TYPE,
Gio.FileQueryInfoFlags.NONE,
GLib.PRIORITY_DEFAULT,
null);
if (info.get_file_type() === Gio.FileType.DIRECTORY) {
const compileSchema = Gio.Subprocess.new(
['glib-compile-schemas', '--strict', schemasPath.get_path()],
Gio.SubprocessFlags.NONE);
try {
await compileSchema.wait_check_async(null);
} catch (e) {
log(`Error while compiling schema for extension ${dir.get_basename()}: (${e.message})`);
}
}
} }
/** /**