diff options
-rw-r--r-- | recipes/glib.recipe | 2 | ||||
-rw-r--r-- | recipes/glib/0001-giomodule-Automatically-detect-modules-on-macOS.patch | 54 |
2 files changed, 28 insertions, 28 deletions
diff --git a/recipes/glib.recipe b/recipes/glib.recipe index 0d5423f9..4041ba4e 100644 --- a/recipes/glib.recipe +++ b/recipes/glib.recipe @@ -38,7 +38,7 @@ class Recipe(recipe.Recipe): 'glib/0006-giomodule-do-not-try-to-load-modules-from-gio-module.patch', 'glib/0008-Unhide-_g_io_modules_ensure_extension_points_registe.patch', 'glib/0009-Implementation-of-Cocoa-event-loop-integration-in-GM.patch', - # https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1415, + # https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1415 'glib/0001-meson-Don-t-use-assert-in-test-code.patch', # https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1433 'glib/0001-meson-fix-buildtype-args-and-vscrt-usage.patch', diff --git a/recipes/glib/0001-giomodule-Automatically-detect-modules-on-macOS.patch b/recipes/glib/0001-giomodule-Automatically-detect-modules-on-macOS.patch index 87e104ca..e1a37f13 100644 --- a/recipes/glib/0001-giomodule-Automatically-detect-modules-on-macOS.patch +++ b/recipes/glib/0001-giomodule-Automatically-detect-modules-on-macOS.patch @@ -1,6 +1,6 @@ -From 1ea5c0f0c62368aa5e363cdacb9b723b4bfa3235 Mon Sep 17 00:00:00 2001 +From af83c6571e47d06468b8162dd29ad57bcf4967a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Brzezi=C5=84ski?= <piotr@centricular.com> -Date: Tue, 2 Aug 2022 22:47:44 +0200 +Date: Tue, 9 Aug 2022 10:42:39 +0200 Subject: [PATCH] giomodule: Automatically detect modules on macOS Makes use of relocatable prefixes, allowing gio to find modules @@ -10,39 +10,39 @@ automatically without needing to set the GIO_EXTRA_MODULES env var. 1 file changed, 23 insertions(+) diff --git a/gio/giomodule.c b/gio/giomodule.c -index f5dbb4555..e3ff3fdb1 100644 +index f5dbb4555f..fce60e9fc5 100644 --- a/gio/giomodule.c +++ b/gio/giomodule.c -@@ -1260,6 +1260,29 @@ get_gio_module_dir (void) - "lib", "gio", "modules", - NULL); +@@ -1262,6 +1262,29 @@ get_gio_module_dir (void) g_free (install_dir); -+#elif defined (__APPLE__) + #else + module_dir = g_strdup (GIO_MODULE_DIR); ++#ifdef __APPLE__ +#include "TargetConditionals.h" +#if TARGET_OS_OSX +#include <dlfcn.h> -+ char *path, *p; -+ Dl_info info; -+ -+ if (!dladdr (get_gio_module_dir, &info)) -+ return NULL; -+ -+ path = strdup (info.dli_fname); ++ { ++ g_autofree gchar *path = NULL; ++ g_autofree gchar *possible_dir = NULL; ++ Dl_info info; + -+ /* PREFIX/lib directory */ -+ if ((p = strrchr (path, '/')) == NULL) -+ { -+ free (path); -+ return NULL; -+ } -+ *p = '\0'; -+ -+ module_dir = g_build_filename (path, "gio", "modules", NULL); -+ free(path); ++ if (dladdr (get_gio_module_dir, &info)) ++ { ++ /* Gets path to the PREFIX/lib directory */ ++ path = g_path_get_dirname (info.dli_fname); ++ possible_dir = g_build_filename (path, "gio", "modules", NULL); ++ if (g_file_test (possible_dir, G_FILE_TEST_IS_DIR)) ++ { ++ g_free (module_dir); ++ module_dir = g_steal_pointer (&possible_dir); ++ } ++ } ++ } ++#endif +#endif - #else - module_dir = g_strdup (GIO_MODULE_DIR); #endif + } + -- -2.32.1 (Apple Git-133) +GitLab |