summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog11
-rw-r--r--acinclude.m449
-rw-r--r--configure.ac16
-rw-r--r--gir/Makefile.am2
-rw-r--r--girepository/girepository.c16
5 files changed, 85 insertions, 9 deletions
diff --git a/ChangeLog b/ChangeLog
index c47bac79..01435727 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2008-10-25 Colin Walters <walters@verbum.org>
+
+ Bug 557076 - move typelibs to $libdir
+
+ * configure.ac: Steal some configury bits from dbus to expand
+ libdir.
+ * gir/Makefile.am: Move to libdir.
+ * girepository/girepository.c: Stop searching XDG_DATA_DIRS;
+ instead just look at one hardcoded path in libdir.
+ * acinclude.m4: Bits from dbus.
+
2008-10-24 Johan Dahlin <johan@gnome.org>
* girepository/girnode.c (g_ir_node_check_unhandled_members):
diff --git a/acinclude.m4 b/acinclude.m4
new file mode 100644
index 00000000..deebd2bf
--- /dev/null
+++ b/acinclude.m4
@@ -0,0 +1,49 @@
+dnl as-ac-expand.m4 0.2.0 -*- autoconf -*-
+dnl autostars m4 macro for expanding directories using configure's prefix
+
+dnl (C) 2003, 2004, 2005 Thomas Vander Stichele <thomas at apestaart dot org>
+
+dnl Copying and distribution of this file, with or without modification,
+dnl are permitted in any medium without royalty provided the copyright
+dnl notice and this notice are preserved.
+
+dnl AS_AC_EXPAND(VAR, CONFIGURE_VAR)
+
+dnl example:
+dnl AS_AC_EXPAND(SYSCONFDIR, $sysconfdir)
+dnl will set SYSCONFDIR to /usr/local/etc if prefix=/usr/local
+
+AC_DEFUN([AS_AC_EXPAND],
+[
+ EXP_VAR=[$1]
+ FROM_VAR=[$2]
+
+ dnl first expand prefix and exec_prefix if necessary
+ prefix_save=$prefix
+ exec_prefix_save=$exec_prefix
+
+ dnl if no prefix given, then use /usr/local, the default prefix
+ if test "x$prefix" = "xNONE"; then
+ prefix="$ac_default_prefix"
+ fi
+ dnl if no exec_prefix given, then use prefix
+ if test "x$exec_prefix" = "xNONE"; then
+ exec_prefix=$prefix
+ fi
+
+ full_var="$FROM_VAR"
+ dnl loop until it doesn't change anymore
+ while true; do
+ new_full_var="`eval echo $full_var`"
+ if test "x$new_full_var" = "x$full_var"; then break; fi
+ full_var=$new_full_var
+ done
+
+ dnl clean up
+ full_var=$new_full_var
+ AC_SUBST([$1], "$full_var")
+
+ dnl restore prefix and exec_prefix
+ prefix=$prefix_save
+ exec_prefix=$exec_prefix_save
+])
diff --git a/configure.ac b/configure.ac
index 5202bdcf..b7de3976 100644
--- a/configure.ac
+++ b/configure.ac
@@ -88,6 +88,22 @@ if test "X$SHLIB_SUFFIX" = x; then
fi
AC_DEFINE_UNQUOTED([SHLIB_SUFFIX], "$SHLIB_SUFFIX", [Define to the platform's shared library suffix])
+# Copied from dbus configure.in
+#### find the actual value for $prefix that we'll end up with
+## (I know this is broken and should be done in the Makefile, but
+## that's a major pain and almost nobody actually seems to care)
+AS_AC_EXPAND(EXPANDED_LOCALSTATEDIR, "$localstatedir")
+AS_AC_EXPAND(EXPANDED_SYSCONFDIR, "$sysconfdir")
+AS_AC_EXPAND(EXPANDED_BINDIR, "$bindir")
+AS_AC_EXPAND(EXPANDED_LIBDIR, "$libdir")
+AS_AC_EXPAND(EXPANDED_LIBEXECDIR, "$libexecdir")
+AS_AC_EXPAND(EXPANDED_DATADIR, "$datadir")
+
+#### Directory to install the libexec binaries
+GOBJECT_INTROSPECTION_LIBDIR="$EXPANDED_LIBDIR"
+AC_SUBST(GOBJECT_INTROSPECTION_LIBDIR)
+AC_DEFINE_UNQUOTED(GOBJECT_INTROSPECTION_LIBDIR,"$GOBJECT_INTROSPECTION_LIBDIR", [Directory prefix for typelib installation])
+
PKG_CHECK_MODULES(GOBJECT, [gobject-2.0])
PKG_CHECK_MODULES(SCANNER, [gobject-2.0 gthread-2.0])
diff --git a/gir/Makefile.am b/gir/Makefile.am
index 48473029..f2f1d111 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 3e909532..2babec5d 100644
--- a/girepository/girepository.c
+++ b/girepository/girepository.c
@@ -31,6 +31,8 @@
#include "girepository.h"
#include "gtypelib.h"
+#include "config.h"
+
static GStaticMutex globals_lock = G_STATIC_MUTEX_INIT;
static GIRepository *default_repository = NULL;
static GSList *search_path = NULL;
@@ -91,8 +93,8 @@ init_globals ()
if (search_path == NULL)
{
- const gchar *const *datadirs;
- const gchar *const *dir;
+ const char *libdir;
+ char *typelib_dir;
const gchar *type_lib_path_env;
type_lib_path_env = g_getenv ("GI_TYPELIB_PATH");
@@ -116,13 +118,11 @@ init_globals ()
g_free (custom_dirs);
}
- datadirs = g_get_system_data_dirs ();
+ libdir = GOBJECT_INTROSPECTION_LIBDIR;
- for (dir = datadirs; *dir; dir++)
- {
- char *path = g_build_filename (*dir, "girepository", NULL);
- search_path = g_slist_prepend (search_path, path);
- }
+ typelib_dir = g_build_filename (libdir, "girepository", NULL);
+
+ search_path = g_slist_prepend (search_path, typelib_dir);
search_path = g_slist_reverse (search_path);
}