From 4758e1ee1985e4e48230b4bf1b38459756b95add Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Wed, 10 Feb 2021 12:01:44 +0000 Subject: [PATCH] girepository: Search the same paths as the Python code The Python code historically always searched DATADIR/gir-1.0 (always) and /usr/share/gir-1.0 (only on Unix); since the previous commit, they are searched after the GIR_DIR. Do the same here, to make the C and Python search paths match up. With the default gir_dir_prefix, searching both GIR_DIR and DATADIR/gir-1.0 is redundant. However, if gir_dir_prefix is changed to something else, for example -Dgir_dir_prefix=lib64, always searching DATADIR/gir-1.0 provides backwards compatibility with pre-existing GIR that might already be stored in DATADIR/gir-1.0. Resolves: #455 (in conjunction with previous commit) Helps: #323 Signed-off-by: Simon McVittie --- girparser.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/girparser.c b/girparser.c index f13e08715..dcfaacd17 100644 --- a/girparser.c +++ b/girparser.c @@ -342,6 +342,20 @@ locate_gir (GIrParser *parser, return g_steal_pointer (&path); g_clear_pointer (&path, g_free); + path = g_build_filename (GOBJECT_INTROSPECTION_DATADIR, GIR_SUFFIX, girname, NULL); + g_debug ("Trying %s from DATADIR", path); + if (g_file_test (path, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR)) + return g_steal_pointer (&path); + g_clear_pointer (&path, g_free); + +#ifdef G_OS_UNIX + path = g_build_filename ("/usr/share", GIR_SUFFIX, girname, NULL); + g_debug ("Trying %s", path); + if (g_file_test (path, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR)) + return g_steal_pointer (&path); + g_clear_pointer (&path, g_free); +#endif + g_debug ("Did not find %s", girname); return NULL; }