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:
parent
3e3aa1f7a3
commit
0a4cb82d9a
@ -113,6 +113,24 @@ async function extractExtensionArchive(bytes, dir) {
|
||||
['unzip', '-uod', dir.get_path(), '--', file.get_path()],
|
||||
Gio.SubprocessFlags.NONE);
|
||||
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})`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user