More makefile changes to get modules loading right. Hacked the crashes

away by commenting out calls to lt_dlclose ... will figure out what's
going on later.


git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@5801 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
Bill Gribble 2001-11-08 18:15:30 +00:00
parent 724b06e581
commit ef1786df1c
20 changed files with 102 additions and 35 deletions

View File

@ -1,3 +1,15 @@
2001-11-08 gettextize <bug-gnu-utils@gnu.org>
* Makefile.in.in: Upgrade to gettext-0.10.40.
2001-11-08 gettextize <bug-gnu-utils@gnu.org>
* Makefile.in.in: Upgrade to gettext-0.10.40.
2001-11-08 gettextize <bug-gnu-utils@gnu.org>
* Makefile.in.in: Upgrade to gettext-0.10.40.
2001-11-07 gettextize <bug-gnu-utils@gnu.org>
* Makefile.in.in: Upgrade to gettext-0.10.40.

View File

@ -29,8 +29,6 @@ libgncmod_app_file_la_LDFLAGS = -module
libgncmod_app_file_la_LIBADD = \
../gnc-module/libgncmodule.la \
../engine/libgncmod-engine.la \
../app-utils/libgncmod-app-utils.la \
../calculation/libgncmod-calculation.la \
../gnome-utils/libgncmod-gnome-utils.la \
./gnome/libgnc-app-file-gnome.la \
${GUILE_LIBS} \

View File

@ -1,9 +1,9 @@
TESTS=test-link test-load-module
TESTS_ENVIRONMENT=\
GNC_MODULE_PATH=${top_srcdir}/src/app-file:${top_srcdir}/src/app-utils:${top_srcdir}/src/engine \
GUILE_LOAD_PATH=${G_WRAP_MODULE_DIR}:${top_srcdir}/src/gnc-module:${top_srcdir}/src/app-file:${top_srcdir}/src/app-utils:${top_srcdir}/src/engine \
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${top_srcdir}/src/gnc-module:${top_srcdir}/src/app-file:${top_srcdir}/src/app-utils:${top_srcdir}/src/engine:${top_srcdir}/src/app-file/gnome
GNC_MODULE_PATH=${top_srcdir}/src/app-file:${top_srcdir}/src/app-utils:${top_srcdir}/src/engine:${top_srcdir}/src/calculation \
GUILE_LOAD_PATH=${G_WRAP_MODULE_DIR}:${top_srcdir}/src/gnc-module:${top_srcdir}/src/app-file:${top_srcdir}/src/app-utils:${top_srcdir}/src/engine:${top_srcdir}/src/calculation:${top_srcdir}/lib:${top_srcdir}/src/gnome:${top_srcdir}/src/scm \
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${top_srcdir}/src/gnc-module:${top_srcdir}/src/app-file:${top_srcdir}/src/app-utils:${top_srcdir}/src/engine:${top_srcdir}/src/app-file/gnome:${top_srcdir}/src/calculation:${top_srcdir}/src/gnome
noinst_PROGRAMS=test-link

View File

@ -49,8 +49,7 @@ LDADD = ${top_srcdir}/src/test-core/libgncmod-test.la \
${top_srcdir}/src/engine/libgw-kvp.la \
${top_srcdir}/src/engine/test-core/libgncmod-test-engine.la \
../libgncmod-backend-file.la \
./libgnc-test-file-stuff.la \
-lltdl
./libgnc-test-file-stuff.la
AM_CFLAGS = \
-I${top_srcdir}/src/gnc-module \

View File

@ -407,6 +407,7 @@ test_updates (GNCSession *session, const char *db_name, const char *mode,
gnc_session_destroy (session_2);
g_free (filename);
return TRUE;
}
static gboolean

View File

@ -243,6 +243,7 @@ gnc_module_get_info(const char * fullpath)
{
lt_dlhandle handle;
//printf("(init) dlopening %s\n", fullpath);
handle = lt_dlopen(fullpath);
if(handle)
{
@ -252,7 +253,8 @@ gnc_module_get_info(const char * fullpath)
* types are */
if (!modsysver)
{
lt_dlclose(handle);
//printf("(init) closing %s\n", fullpath);
//lt_dlclose(handle);
return NULL;
}
@ -278,13 +280,14 @@ gnc_module_get_info(const char * fullpath)
info->module_interface = *(int *)interface;
info->module_age = *(int *)age;
info->module_revision = *(int *)revision;
lt_dlclose(handle);
//printf("(init) closing %s\n", fullpath);
//lt_dlclose(handle);
return info;
}
else
{
g_warning ("module '%s' does not match module signature\n", fullpath);
lt_dlclose(handle);
//lt_dlclose(handle);
return NULL;
}
}
@ -293,7 +296,7 @@ gnc_module_get_info(const char * fullpath)
/* unsupported module system interface version */
/* printf("\n** WARNING ** : module '%s' requires newer module system\n",
fullpath); */
lt_dlclose(handle);
//lt_dlclose(handle);
return NULL;
}
}
@ -421,6 +424,9 @@ gnc_module_load(char * module_name, gint interface)
/* module already loaded ... call the init thunk */
if(info->init_func)
{
printf("calling init func for '%s' .. refcount = %d\n",
module_name, info->load_count);
if(info->init_func(info->load_count))
{
info->load_count++;
@ -442,6 +448,9 @@ gnc_module_load(char * module_name, gint interface)
GNCModuleInfo * modinfo = gnc_module_locate(module_name, interface);
lt_dlhandle handle = NULL;
//if(modinfo)
//printf("(load) dlopening %s\n", modinfo->module_filepath);
if(modinfo && ((handle = lt_dlopen(modinfo->module_filepath)) != NULL))
{
lt_ptr initfunc = lt_dlsym(handle, "gnc_module_init");
@ -458,6 +467,9 @@ gnc_module_load(char * module_name, gint interface)
/* now call its init function. this should load any dependent
* modules, too. If it doesn't return TRUE unload the module. */
printf("calling init func for '%s' .. refcount = 0\n",
module_name);
if(!info->init_func(0))
{
/* init failed. unload the module. */
@ -465,7 +477,7 @@ gnc_module_load(char * module_name, gint interface)
g_hash_table_remove(loaded_modules, info);
g_free(info->filename);
g_free(info);
lt_dlclose(handle);
//lt_dlclose(handle);
return NULL;
}
@ -475,7 +487,7 @@ gnc_module_load(char * module_name, gint interface)
{
g_warning ("Module %s (%s) is not a gnc-module.\n", module_name,
modinfo->module_filepath);
lt_dlclose(handle);
//lt_dlclose(handle);
}
return info;
}
@ -522,7 +534,8 @@ gnc_module_unload(GNCModule module)
if(info->load_count == 0)
{
/* now close the module and free the struct */
lt_dlclose(info->handle);
//printf("(unload) closing %s\n", info->filename);
//lt_dlclose(info->handle);
g_hash_table_remove(loaded_modules, module);
g_free(info);
}

View File

@ -19,10 +19,9 @@ TESTS = \
test-scm-init
TESTS_ENVIRONMENT = \
GNC_MODULE_PATH=${PWD}/mod-foo:${PWD}/mod-bar:${PWD}/mod-baz:${PWD}/misc-mods:${top_srcdir}/src/import-export/qif-import \
GNC_MODULE_PATH=mod-foo:mod-bar:mod-baz:misc-mods \
GUILE_LOAD_PATH=..:${G_WRAP_MODULE_DIR} \
LTDL_LIBRARY_PATH=../ \
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${top_srcdir}/src/app-file:mod-foo:mod-foo/.libs:mod-bar:mod-bar/.libs:mod-baz:mod-baz/.libs:..:../.libs
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:mod-foo:mod-bar:mod-baz:misc-mods:..:
noinst_PROGRAMS = \
test-load-c \

View File

@ -78,6 +78,7 @@ libgncmod_gnome_utils_la_LIBADD = \
${GNOME_LIBDIR} \
${GNOME_PRINT_LIBS} \
${GTKHTML_LIBS} \
${GDK_PIXBUF_LIBS} \
${GLADE_LIBS} \
${GUILE_LIBS} \
${GUPPI_LIBS} \

View File

@ -1,11 +1,22 @@
TESTS = \
test-link-module
test-link-module test-load-module
TESTS_ENVIRONMENT=\
GNC_MODULE_PATH=${top_srcdir}/src/app-file:${top_srcdir}/src/app-utils:${top_srcdir}/src/gnome-utils:${top_srcdir}/src/network-utils:${top_srcdir}/src/engine:${top_srcdir}/src/calculation:${top_srcdir}/src/tax/us:${top_srcdir}/src/report/locale-specific/us \
GUILE_LOAD_PATH=${G_WRAP_MODULE_DIR}:${top_srcdir}/src/gnc-module:${top_srcdir}/src/app-file:${top_srcdir}/src/app-utils:${top_srcdir}/src/gnome-utils:${top_srcdir}/src/network-utils:${top_srcdir}/src/engine:${top_srcdir}/src/calculation:${top_srcdir}/lib:${top_srcdir}/src/gnome:${top_srcdir}/src/scm:${top_srcdir}/src/report/report-system:${top_srcdir}/src/tax/us:${G_WRAP_MODULE_DIR}:${top_srcdir}/src/report/locale-specific/us \
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${top_srcdir}/src/gnc-module:${top_srcdir}/src/app-file:${top_srcdir}/src/app-utils:${top_srcdir}/src/gnome-utils:${top_srcdir}/src/network-utils:${top_srcdir}/src/engine:${top_srcdir}/src/app-file/gnome:${top_srcdir}/src/calculation:${top_srcdir}/src/gnome:${top_srcdir}/src/report/report-system:${top_srcdir}/src/report/locale-specific/us:${top_srcdir}/src/tax/us
noinst_PROGRAMS = \
test-link-module
INCLUDES=-I../../gnc-module ${GLIB_CFLAGS} ${GUILE_CFLAGS}
test_link_module_SOURCES=test-link-module.c
test_link_module_LDADD=../libgncmod-gnome-utils.la
test_link_module_LDADD= \
../../gnc-module/libgncmodule.la
testit:
libtool --mode execute gdb test-link-module

View File

@ -1,6 +1,16 @@
#include <stdlib.h>
#include <guile/gh.h>
#include <gnc-module.h>
int
main(int argc, char ** argv) {
void
guile_main(int argc, char ** argv) {
gnc_module_system_init();
/* gnc_module_load("gnucash/gnome-utils", 0); */
exit(0);
}
int
main(int argc, char ** argv) {
gh_enter(argc, argv, guile_main);
return 0;
}

View File

@ -0,0 +1,11 @@
#! /bin/sh
exec guile -s $0
!#
(use-modules (gnucash gnc-module))
(gnc:module-system-init)
(display " testing gnome-utils module load ... ")
(gnc:module-load "gnucash/gnome-utils" 0)
(display " ok\n")

View File

@ -10,6 +10,7 @@ libgw_gnc_la_LIBADD = ${G_WRAP_LINK_ARGS} ${GLIB_LIBS}
libgw_gnc_la_LDFLAGS = -module
libgncgnome_la_LDFLAGS = -module
libgncgnome_la_LIBADD = ${GNOMEUI_LIBS} ${GLIB_LIBS} ${GUILE_LIBS}
libgncgnome_la_SOURCES = \
argv-list-converters.c \

View File

@ -1,12 +1,11 @@
TESTS = \
test-link-module
# test-load-module
test-link-module \
test-load-module
TESTS_ENVIRONMENT= \
GNC_MODULE_PATH=../../gnc-module:.. \
GNC_MODULE_PATH=.. \
GUILE_LOAD_PATH=${G_WRAP_MODULE_DIR}:..:../../gnc-module:${top_srcdir}/lib \
LTDL_LIBRARY_PATH=.. \
LD_LIBRARY_PATH=${top_srcdir}/src/gnc-module:${top_srcdir}/src/gnc-module/.libs
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${top_srcdir}/src/gnc-module:${top_srcdir}/src/network-utils
noinst_PROGRAMS = \

View File

@ -0,0 +1,11 @@
#! /bin/sh
exec guile -s $0
!#
(use-modules (gnucash gnc-module))
(gnc:module-system-init)
(display " testing network-utils module load ... ")
(gnc:module-load "gnucash/network-utils" 0)
(display " ok\n")

View File

@ -1 +1 @@
SUBDIRS=ledger-core register-core register-gnome
SUBDIRS=register-core register-gnome ledger-core

View File

@ -24,6 +24,7 @@ noinst_HEADERS = \
libgncmod_ledger_core_la_LDFLAGS = -module
libgncmod_ledger_core_la_LIBADD = \
${top_srcdir}/src/register/register-core/libgncmod-register-core.la \
${top_srcdir}/src/gnome/libgncgnome.la
AM_CFLAGS = \

View File

@ -1,9 +1,9 @@
TESTS=test-load-module test-link-module
TESTS_ENVIRONMENT= \
GNC_MODULE_PATH=${top_srcdir}/src/engine:${top_srcdir}/src/report/report-system:${top_srcdir}/src/app-utils:${top_srcdir}/src/app-file:${top_srcdir}/src/calculation:${top_srcdir}/src/tax/us:${top_srcdir}/src/report/locale-specific/us \
GUILE_LOAD_PATH=${top_srcdir}/src/gnc-module:${top_srcdir}/src/scm:${top_srcdir}/src/app-file:${top_srcdir}/src/gnome:${top_srcdir}/src/report/report-system:${top_srcdir}/src/tax/us:${G_WRAP_MODULE_DIR}:${top_srcdir}/src/report/locale-specific/us:${top_srcdir}/lib \
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${top_srcdir}/src/gnc-module:${top_srcdir}/src/engine:${top_srcdir}/src/app-utils:${top_srcdir}/src/calculation:${top_srcdir}/src/app-file:${top_srcdir}/src/app-file/gnome:${top_srcdir}/src/gnome:${top_srcdir}/src/report/report-system:${top_srcdir}/src/tax/us:${top_srcdir}/src/scm:..
GNC_MODULE_PATH=${top_srcdir}/src/app-file:${top_srcdir}/src/app-utils:${top_srcdir}/src/gnome-utils:{top_srcdir}/src/network-utils:${top_srcdir}/src/engine:${top_srcdir}/src/calculation:${top_srcdir}/src/tax/us:${top_srcdir}/src/report/report-system:${top_srcdir}/src/report/locale-specific/us \
GUILE_LOAD_PATH=${G_WRAP_MODULE_DIR}:${top_srcdir}/src/gnc-module:${top_srcdir}/src/app-file:${top_srcdir}/src/app-utils:${top_srcdir}/src/gnome-utils:{top_srcdir}/src/network-utils:${top_srcdir}/src/engine:${top_srcdir}/src/calculation:${top_srcdir}/lib:${top_srcdir}/src/gnome:${top_srcdir}/src/scm:${top_srcdir}/src/report/report-system:${top_srcdir}/src/tax/us:${G_WRAP_MODULE_DIR}:${top_srcdir}/src/report/locale-specific/us \
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${top_srcdir}/src/gnc-module:${top_srcdir}/src/app-file:${top_srcdir}/src/app-utils:${top_srcdir}/src/gnome-utils:{top_srcdir}/src/network-utils:${top_srcdir}/src/engine:${top_srcdir}/src/app-file/gnome:${top_srcdir}/src/calculation:${top_srcdir}/src/gnome:${top_srcdir}/src/report/report-system:${top_srcdir}/src/report/locale-specific/us:${top_srcdir}/src/tax/us
EXTRA_DIST = test-load-module

View File

@ -2,7 +2,7 @@ TESTS=test-load-module
TESTS_ENVIRONMENT= \
GNC_MODULE_PATH=${top_srcdir}/src/engine:${top_srcdir}/src/report/report-system:${top_srcdir}/src/app-utils:${top_srcdir}/src/calculation:.. \
GUILE_LOAD_PATH=${top_srcdir}/src/gnc-module:${top_srcdir}/lib:..:${G_WRAP_MODULE_DIR}:${top_srcdir}/src/guile:${top_srcdir}/src/scm \
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${top_srcdir}/src/gnc-module:${top_srcdir}/src/engine:${top_srcdir}/src/app-utils:${top_srcdir}/src/calculation:${top_srcdir}/src/guile
GUILE_LOAD_PATH=${top_srcdir}/src/gnc-module:${top_srcdir}/lib:..:${G_WRAP_MODULE_DIR}:${top_srcdir}/src/guile:${top_srcdir}/src/scm:${top_srcdir}/src/gnome \
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${top_srcdir}/src/gnc-module:${top_srcdir}/src/engine:${top_srcdir}/src/app-utils:${top_srcdir}/src/calculation:${top_srcdir}/src/guile:${top_srcdir}/src/gnome
EXTRA_DIST = test-load-module