blob: f34f30bb3c3159b3ecb9370b8cc69cf33a2323b0 [file] [log] [blame]
Andrew Geissler09036742021-06-25 14:25:14 -05001From e56cdb8c343dd6a6ed3b10bd54e353d633ad6158 Mon Sep 17 00:00:00 2001
Brad Bishop1a4b7ee2018-12-16 17:11:34 -08002From: Ross Burton <ross.burton@intel.com>
3Date: Fri, 11 Mar 2016 15:35:55 +0000
4Subject: [PATCH] glib-2.0: relocate the GIO module directory for native builds
5
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05006Instead of hard-coding GIO_MODULE_PATH when glib is built, use dladdr() to
7determine where libglib.so is and use that path to calculate GIO_MODULES_DIR.
8
9This solves relocation problems with GIOModule for native builds of glib.
10
11Upstream-Status: Inappropriate
12Signed-off-by: Ross Burton <ross.burton@intel.com>
13
Patrick Williamsc0f7c042017-02-23 20:41:17 -060014Port patch to 2.48
15Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
Brad Bishop1a4b7ee2018-12-16 17:11:34 -080016
Patrick Williamsc0f7c042017-02-23 20:41:17 -060017---
18 gio/giomodule.c | 12 +++++++++++-
19 1 file changed, 11 insertions(+), 1 deletion(-)
20
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050021diff --git a/gio/giomodule.c b/gio/giomodule.c
William A. Kennington IIIac69b482021-06-02 12:28:27 -070022index a2909a8..1f4ab82 100644
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050023--- a/gio/giomodule.c
24+++ b/gio/giomodule.c
Andrew Geisslerc926e172021-05-07 16:11:35 -050025@@ -51,6 +51,8 @@
Patrick Williamsc0f7c042017-02-23 20:41:17 -060026 #ifdef G_OS_WIN32
27 #include "gregistrysettingsbackend.h"
Andrew Geisslerc926e172021-05-07 16:11:35 -050028 #include "giowin32-priv.h"
Patrick Williamsc0f7c042017-02-23 20:41:17 -060029+#else
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050030+#include <dlfcn.h>
Patrick Williamsc0f7c042017-02-23 20:41:17 -060031 #endif
32 #include <glib/gstdio.h>
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050033
William A. Kennington IIIac69b482021-06-02 12:28:27 -070034@@ -1213,7 +1215,15 @@ get_gio_module_dir (void)
Andrew Geissler4b740dc2020-05-05 08:54:39 -050035 NULL);
Patrick Williamsc0f7c042017-02-23 20:41:17 -060036 g_free (install_dir);
37 #else
38- module_dir = g_strdup (GIO_MODULE_DIR);
39+ Dl_info info;
40+
41+ if (dladdr (g_io_module_new, &info)) {
42+ char *libdir = g_path_get_dirname (info.dli_fname);
43+ module_dir = g_build_filename (libdir, "gio", "modules", NULL);
44+ g_free (libdir);
45+ } else {
46+ module_dir = g_strdup (GIO_MODULE_DIR);
47+ }
48 #endif
49 }
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050050