Brad Bishop | 1a4b7ee | 2018-12-16 17:11:34 -0800 | [diff] [blame] | 1 | From 8326961841f4d16c7239e747de11e3817c35cfd2 Mon Sep 17 00:00:00 2001 |
| 2 | From: Ross Burton <ross.burton@intel.com> |
| 3 | Date: Fri, 11 Mar 2016 15:35:55 +0000 |
| 4 | Subject: [PATCH] glib-2.0: relocate the GIO module directory for native builds |
| 5 | |
Patrick Williams | d8c66bc | 2016-06-20 12:57:21 -0500 | [diff] [blame] | 6 | Instead of hard-coding GIO_MODULE_PATH when glib is built, use dladdr() to |
| 7 | determine where libglib.so is and use that path to calculate GIO_MODULES_DIR. |
| 8 | |
| 9 | This solves relocation problems with GIOModule for native builds of glib. |
| 10 | |
| 11 | Upstream-Status: Inappropriate |
| 12 | Signed-off-by: Ross Burton <ross.burton@intel.com> |
| 13 | |
Patrick Williams | c0f7c04 | 2017-02-23 20:41:17 -0600 | [diff] [blame] | 14 | Port patch to 2.48 |
| 15 | Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com> |
Brad Bishop | 1a4b7ee | 2018-12-16 17:11:34 -0800 | [diff] [blame] | 16 | |
Patrick Williams | c0f7c04 | 2017-02-23 20:41:17 -0600 | [diff] [blame] | 17 | --- |
| 18 | gio/giomodule.c | 12 +++++++++++- |
| 19 | 1 file changed, 11 insertions(+), 1 deletion(-) |
| 20 | |
Patrick Williams | d8c66bc | 2016-06-20 12:57:21 -0500 | [diff] [blame] | 21 | diff --git a/gio/giomodule.c b/gio/giomodule.c |
Brad Bishop | 1a4b7ee | 2018-12-16 17:11:34 -0800 | [diff] [blame] | 22 | index 36c0cef..912e490 100644 |
Patrick Williams | d8c66bc | 2016-06-20 12:57:21 -0500 | [diff] [blame] | 23 | --- a/gio/giomodule.c |
| 24 | +++ b/gio/giomodule.c |
Patrick Williams | c0f7c04 | 2017-02-23 20:41:17 -0600 | [diff] [blame] | 25 | @@ -40,6 +40,8 @@ |
| 26 | #include "gnetworkmonitor.h" |
| 27 | #ifdef G_OS_WIN32 |
| 28 | #include "gregistrysettingsbackend.h" |
| 29 | +#else |
Patrick Williams | d8c66bc | 2016-06-20 12:57:21 -0500 | [diff] [blame] | 30 | +#include <dlfcn.h> |
Patrick Williams | c0f7c04 | 2017-02-23 20:41:17 -0600 | [diff] [blame] | 31 | #endif |
| 32 | #include <glib/gstdio.h> |
Patrick Williams | d8c66bc | 2016-06-20 12:57:21 -0500 | [diff] [blame] | 33 | |
Brad Bishop | 1a4b7ee | 2018-12-16 17:11:34 -0800 | [diff] [blame] | 34 | @@ -1099,7 +1101,15 @@ get_gio_module_dir (void) |
Patrick Williams | c0f7c04 | 2017-02-23 20:41:17 -0600 | [diff] [blame] | 35 | #endif |
| 36 | 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 Williams | d8c66bc | 2016-06-20 12:57:21 -0500 | [diff] [blame] | 50 | |