From 28af5ee5eccb7797b73ad1caf88183e95eef0a28 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Tue, 13 Oct 2009 11:31:02 +0200 Subject: [PATCH] add $libir to the ltdl path, not $pkglibdir; add extensionsdir * libguile/Makefile.am (libpath.h): Fix SCM_LIB_DIR to point to the libdir, not pkglibdir. Add SCM_EXTENSIONS_DIR, for a dir to put in the dynamic-link search path that's not managed by ldconfig or the like; and put this dir in the "extensionsdir" key of %guile-build-info. * libguile/dynl.c (sysdep_dynl_init): Rename the installed-libdir environment var to GUILE_SYSTEM_EXTENSIONS_PATH (from GUILE_SYSTEM_LTDL_PATH). Also add SCM_EXTENSIONS_DIR to the ltdl search path in the default case. * meta/uninstalled-env.in: Adapt override to match. * meta/guile-2.0.pc.in: Add extensionsdir, so you can pkg-config --variable=extensionsdir guile-2.0. --- libguile/Makefile.am | 4 +++- libguile/dynl.c | 11 +++++++---- meta/guile-2.0.pc.in | 1 + meta/uninstalled-env.in | 4 ++-- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/libguile/Makefile.am b/libguile/Makefile.am index acb26d9ec..2e8457b2f 100644 --- a/libguile/Makefile.am +++ b/libguile/Makefile.am @@ -601,7 +601,8 @@ libpath.h: $(srcdir)/Makefile.in $(top_builddir)/config.status @echo '#define SCM_PKGDATA_DIR "$(pkgdatadir)"' >> libpath.tmp @echo '#define SCM_LIBRARY_DIR "$(pkgdatadir)/$(GUILE_EFFECTIVE_VERSION)"'>>libpath.tmp @echo '#define SCM_SITE_DIR "$(pkgdatadir)/site"' >> libpath.tmp - @echo '#define SCM_LIB_DIR "$(pkglibdir)"' >> libpath.tmp + @echo '#define SCM_LIB_DIR "$(libdir)"' >> libpath.tmp + @echo '#define SCM_EXTENSIONS_DIR "$(pkglibdir)/$(GUILE_EFFECTIVE_VERSION)/extensions"' >> libpath.tmp @echo '#define SCM_CCACHE_DIR "$(pkglibdir)/$(GUILE_EFFECTIVE_VERSION)/ccache"' >> libpath.tmp @echo '#define SCM_EFFECTIVE_VERSION "$(GUILE_EFFECTIVE_VERSION)"' >> libpath.tmp @echo '#define SCM_BUILD_INFO { \' >> libpath.tmp @@ -625,6 +626,7 @@ libpath.h: $(srcdir)/Makefile.in $(top_builddir)/config.status @echo ' { "pkglibdir", "$(pkglibdir)" }, \' >> libpath.tmp @echo ' { "pkgincludedir", "$(pkgincludedir)" }, \' \ >> libpath.tmp + @echo ' { "extensionsdir", "$(pkglibdir)/$(GUILE_EFFECTIVE_VERSION)/extensions" }, \' >> libpath.tmp @echo ' { "guileversion", "@GUILE_VERSION@" }, \' >> libpath.tmp @echo ' { "libguileinterface", "@LIBGUILE_INTERFACE@" }, \' \ >> libpath.tmp diff --git a/libguile/dynl.c b/libguile/dynl.c index 6b13e65a9..52c43e542 100644 --- a/libguile/dynl.c +++ b/libguile/dynl.c @@ -118,17 +118,20 @@ sysdep_dynl_init () lt_dlinit (); - env = getenv ("GUILE_SYSTEM_LTDL_PATH"); + env = getenv ("GUILE_SYSTEM_EXTENSIONS_PATH"); if (env && strcmp (env, "") == 0) /* special-case interpret system-ltdl-path=="" as meaning no system path, which is the case during the build */ ; else if (env) + /* FIXME: should this be a colon-separated path? Or is the only point to + allow the build system to turn off the installed extensions path? */ lt_dladdsearchdir (env); -#ifdef SCM_LIB_DIR else - lt_dladdsearchdir (SCM_LIB_DIR); -#endif + { + lt_dladdsearchdir (SCM_LIB_DIR); + lt_dladdsearchdir (SCM_EXTENSIONS_DIR); + } } scm_t_bits scm_tc16_dynamic_obj; diff --git a/meta/guile-2.0.pc.in b/meta/guile-2.0.pc.in index 5cacaaa3e..c73a171f4 100644 --- a/meta/guile-2.0.pc.in +++ b/meta/guile-2.0.pc.in @@ -7,6 +7,7 @@ datadir=@datadir@ pkgdatadir=@datadir@/guile sitedir=@sitedir@ +extensionsdir=@libdir@/guile/@GUILE_EFFECTIVE_VERSION@/extensions libguileinterface=@LIBGUILE_INTERFACE@ Name: GNU Guile diff --git a/meta/uninstalled-env.in b/meta/uninstalled-env.in index 649d1fc47..58d50ca1b 100644 --- a/meta/uninstalled-env.in +++ b/meta/uninstalled-env.in @@ -89,8 +89,8 @@ if ( env | grep -v -q -E '^GUILE_SYSTEM_COMPILED_PATH=' ); then export GUILE_SYSTEM_COMPILED_PATH= fi # Don't look in installed dirs for dlopen-able modules -if ( env | grep -v -q -E '^GUILE_SYSTEM_LTDL_PATH=' ); then - export GUILE_SYSTEM_LTDL_PATH= +if ( env | grep -v -q -E '^GUILE_SYSTEM_EXTENSIONS_PATH=' ); then + export GUILE_SYSTEM_EXTENSIONS_PATH= fi # handle LTDL_LIBRARY_PATH (no clobber)