From: Johan Bilien Date: Thu, 23 Oct 2008 09:10:04 +0000 (+0000) Subject: Bug 557468 – Support for GI_TYPELIB_PATH X-Git-Tag: GOBJECT_INTROSPECTION_0_6_0~64 X-Git-Url: http://git.roojs.org/?a=commitdiff_plain;h=7553fc1f909054a1606fb852e26d4631079ddec4;p=gnome.gobject-introspection Bug 557468 – Support for GI_TYPELIB_PATH 2008-10-23 Johan Bilien Bug 557468 – Support for GI_TYPELIB_PATH * girepository/girepository.c: if the GI_TYPELIB_PATH is set, add the provided paths to the global search path. svn path=/trunk/; revision=786 --- diff --git a/ChangeLog b/ChangeLog index 57c95f1..1cfa551 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-10-23 Johan Bilien + + Bug 557468 – Support for GI_TYPELIB_PATH + + * girepository/girepository.c: if the GI_TYPELIB_PATH is set, add the + provided paths to the global search path. + 2008-10-22 Tommi Komulainen Bug 557379 – g-ir-generate not writing the 'abstract' attribute diff --git a/gir/Makefile.am b/gir/Makefile.am index 4847302..f2f1d11 100644 --- a/gir/Makefile.am +++ b/gir/Makefile.am @@ -121,7 +121,7 @@ dist_gir_DATA = $(BUILT_SOURCES) %.typelib: %.gir $(top_builddir)/tools/g-ir-compiler$(EXEEXT) Makefile $(DEBUG) $(top_builddir)/tools/g-ir-compiler$(EXEEXT) --includedir=. $(G_IR_COMPILER_OPTS) $< -o $@ -typelibsdir = $(datadir)/girepository +typelibsdir = $(libdir)/girepository typelibs_DATA = GLib-2.0.typelib GModule-2.0.typelib GObject-2.0.typelib Gio-2.0.typelib CLEANFILES += $(typelibs_DATA) diff --git a/girepository/girepository.c b/girepository/girepository.c index b43a451..3e90953 100644 --- a/girepository/girepository.c +++ b/girepository/girepository.c @@ -84,8 +84,8 @@ init_globals () { g_static_mutex_lock (&globals_lock); - if (default_repository == NULL) - { + if (default_repository == NULL) + { default_repository = g_object_new (G_TYPE_IREPOSITORY, NULL); } @@ -93,14 +93,37 @@ init_globals () { const gchar *const *datadirs; const gchar *const *dir; - - datadirs = g_get_system_data_dirs (); - + const gchar *type_lib_path_env; + + type_lib_path_env = g_getenv ("GI_TYPELIB_PATH"); + search_path = NULL; - for (dir = datadirs; *dir; dir++) { - char *path = g_build_filename (*dir, "girepository", NULL); - search_path = g_slist_prepend (search_path, path); - } + if (type_lib_path_env) + { + gchar **custom_dirs; + gchar **d; + + custom_dirs = g_strsplit (type_lib_path_env, G_SEARCHPATH_SEPARATOR_S, 0); + + d = custom_dirs; + while (*d) + { + search_path = g_slist_prepend (search_path, *d); + d++; + } + + /* ownership of the array content was passed to the list */ + g_free (custom_dirs); + } + + datadirs = g_get_system_data_dirs (); + + for (dir = datadirs; *dir; dir++) + { + char *path = g_build_filename (*dir, "girepository", NULL); + search_path = g_slist_prepend (search_path, path); + } + search_path = g_slist_reverse (search_path); }