From dac2bdeea38388e069412aa27eff8f1eff0440e5 Mon Sep 17 00:00:00 2001
|
From: Ross Burton <ross.burton@intel.com>
|
Date: Fri, 11 Mar 2016 15:35:55 +0000
|
Subject: [PATCH] glib-2.0: relocate the GIO module directory for native builds
|
|
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 <ross.burton@intel.com>
|
|
Port patch to 2.48
|
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
|
|
---
|
gio/giomodule.c | 12 +++++++++++-
|
1 file changed, 11 insertions(+), 1 deletion(-)
|
|
diff --git a/gio/giomodule.c b/gio/giomodule.c
|
index a2909a8..1f4ab82 100644
|
--- a/gio/giomodule.c
|
+++ b/gio/giomodule.c
|
@@ -51,6 +51,8 @@
|
#ifdef G_OS_WIN32
|
#include "gregistrysettingsbackend.h"
|
#include "giowin32-priv.h"
|
+#else
|
+#include <dlfcn.h>
|
#endif
|
#include <glib/gstdio.h>
|
|
@@ -1213,7 +1215,15 @@ get_gio_module_dir (void)
|
NULL);
|
g_free (install_dir);
|
#else
|
- module_dir = g_strdup (GIO_MODULE_DIR);
|
+ Dl_info info;
|
+
|
+ if (dladdr (g_io_module_new, &info)) {
|
+ char *libdir = g_path_get_dirname (info.dli_fname);
|
+ module_dir = g_build_filename (libdir, "gio", "modules", NULL);
|
+ g_free (libdir);
|
+ } else {
|
+ module_dir = g_strdup (GIO_MODULE_DIR);
|
+ }
|
#endif
|
}
|
|