diff --git a/meta/recipes-core/glib-2.0/glib-2.0/relocate-modules.patch b/meta/recipes-core/glib-2.0/glib-2.0/relocate-modules.patch new file mode 100644 index 0000000000..f9e3f3dbaa --- /dev/null +++ b/meta/recipes-core/glib-2.0/glib-2.0/relocate-modules.patch @@ -0,0 +1,49 @@ +Instead of hard-coding GIO_MODULE_PATH when glib is built, use dladdr() to +determine where libglib.so is and use that path to calculate GIO_MODULES_DIR. + +This solves relocation problems with GIOModule for native builds of glib. + +Upstream-Status: Inappropriate +Signed-off-by: Ross Burton + +diff --git a/gio/giomodule.c b/gio/giomodule.c +index 56c498c..a2e32b7 100644 +--- a/gio/giomodule.c ++++ b/gio/giomodule.c +@@ -47,6 +47,27 @@ + #include "gdesktopappinfo.h" + #endif + ++#include ++ ++/* ++ * Generate a GIO module directory based on where glib is installed ++ */ ++static const char * ++_get_gio_module_dir (void) ++{ ++ Dl_info info; ++ ++ if (dladdr (g_io_module_new, &info)) { ++ char *libdir = g_path_get_dirname (info.dli_fname); ++ char *dir = g_build_filename (libdir, "gio", "modules", NULL); ++ g_free (libdir); ++ return dir; ++ } else { ++ return GIO_MODULE_DIR; ++ } ++} ++ ++ + /** + * SECTION:giomodule + * @short_description: Loadable GIO Modules +@@ -1057,7 +1078,7 @@ _g_io_modules_ensure_loaded (void) + /* Then load the compiled in path */ + module_dir = g_getenv ("GIO_MODULE_DIR"); + if (module_dir == NULL) +- module_dir = GIO_MODULE_DIR; ++ module_dir = _get_gio_module_dir (); + + g_io_modules_scan_all_in_directory_with_scope (module_dir, scope); + diff --git a/meta/recipes-core/glib-2.0/glib-2.0_2.46.2.bb b/meta/recipes-core/glib-2.0/glib-2.0_2.46.2.bb index bf3cadeb76..2a2efae977 100644 --- a/meta/recipes-core/glib-2.0/glib-2.0_2.46.2.bb +++ b/meta/recipes-core/glib-2.0/glib-2.0_2.46.2.bb @@ -18,7 +18,8 @@ SRC_URI = "${GNOME_MIRROR}/glib/${SHRT_VER}/glib-${PV}.tar.xz \ file://gi-exclude.patch \ " -SRC_URI_append_class-native = " file://glib-gettextize-dir.patch" +SRC_URI_append_class-native = " file://glib-gettextize-dir.patch \ + file://relocate-modules.patch" SRC_URI[md5sum] = "7f815d6e46df68e070cb421ed7f1139e" SRC_URI[sha256sum] = "5031722e37036719c1a09163cc6cf7c326e4c4f1f1e074b433c156862bd733db"