qemu: Load GTK modules/resources from chroot (!1749)
We are running qemu that is installed in the chroot. The GTK framework needs to be configured to load resources from the chroot as well. https://developer.gnome.org/gtk3/stable/gtk-running.html
This commit is contained in:
parent
43326b551a
commit
ab4f3f4004
|
@ -99,6 +99,29 @@ def command_spice(args):
|
||||||
return ["remote-viewer", "spice://127.0.0.1?port=" + args.spice_port]
|
return ["remote-viewer", "spice://127.0.0.1?port=" + args.spice_port]
|
||||||
|
|
||||||
|
|
||||||
|
def create_gdk_loader_cache(args):
|
||||||
|
"""
|
||||||
|
Create a gdk loader cache that can be used for running GTK UIs outside of
|
||||||
|
the chroot.
|
||||||
|
"""
|
||||||
|
gdk_cache_dir = "/usr/lib/gdk-pixbuf-2.0/2.10.0/"
|
||||||
|
custom_cache_path = gdk_cache_dir + "loaders-pmos-chroot.cache"
|
||||||
|
rootfs_native = args.work + "/chroot_native"
|
||||||
|
if os.path.isfile(rootfs_native + custom_cache_path):
|
||||||
|
return rootfs_native + custom_cache_path
|
||||||
|
|
||||||
|
cache_path = gdk_cache_dir + "loaders.cache"
|
||||||
|
if not os.path.isfile(rootfs_native + cache_path):
|
||||||
|
raise RuntimeError("gdk pixbuf cache file not found: " + cache_path)
|
||||||
|
|
||||||
|
pmb.chroot.root(args, ["cp", cache_path, custom_cache_path])
|
||||||
|
cmd = ["sed", "-i", "-e",
|
||||||
|
"s@\"" + gdk_cache_dir + "@\"" + rootfs_native + gdk_cache_dir + "@",
|
||||||
|
custom_cache_path]
|
||||||
|
pmb.chroot.root(args, cmd)
|
||||||
|
return rootfs_native + custom_cache_path
|
||||||
|
|
||||||
|
|
||||||
def command_qemu(args, arch, device, img_path, spice_enabled):
|
def command_qemu(args, arch, device, img_path, spice_enabled):
|
||||||
"""
|
"""
|
||||||
Generate the full qemu command with arguments to run postmarketOS
|
Generate the full qemu command with arguments to run postmarketOS
|
||||||
|
@ -129,6 +152,13 @@ def command_qemu(args, arch, device, img_path, spice_enabled):
|
||||||
"GBM_DRIVERS_PATH": rootfs_native + "/usr/lib/xorg/modules/dri",
|
"GBM_DRIVERS_PATH": rootfs_native + "/usr/lib/xorg/modules/dri",
|
||||||
"LIBGL_DRIVERS_PATH": rootfs_native + "/usr/lib/xorg/modules/dri"}
|
"LIBGL_DRIVERS_PATH": rootfs_native + "/usr/lib/xorg/modules/dri"}
|
||||||
|
|
||||||
|
if "gtk" in args.qemu_display:
|
||||||
|
gdk_cache = create_gdk_loader_cache(args)
|
||||||
|
env.update({"GTK_THEME": "Default",
|
||||||
|
"GDK_PIXBUF_MODULE_FILE": gdk_cache,
|
||||||
|
"XDG_DATA_DIRS": rootfs_native + "/usr/local/share:" +
|
||||||
|
rootfs_native + "/usr/share"})
|
||||||
|
|
||||||
command = [rootfs_native + "/lib/ld-musl-" +
|
command = [rootfs_native + "/lib/ld-musl-" +
|
||||||
args.arch_native + ".so.1"]
|
args.arch_native + ".so.1"]
|
||||||
command += ["--library-path=" + rootfs_native + "/lib:" +
|
command += ["--library-path=" + rootfs_native + "/lib:" +
|
||||||
|
|
Loading…
Reference in New Issue