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()],
|
['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})`);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user