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> 2001-11-07 gettextize <bug-gnu-utils@gnu.org>
* Makefile.in.in: Upgrade to gettext-0.10.40. * 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 = \ libgncmod_app_file_la_LIBADD = \
../gnc-module/libgncmodule.la \ ../gnc-module/libgncmodule.la \
../engine/libgncmod-engine.la \ ../engine/libgncmod-engine.la \
../app-utils/libgncmod-app-utils.la \
../calculation/libgncmod-calculation.la \
../gnome-utils/libgncmod-gnome-utils.la \ ../gnome-utils/libgncmod-gnome-utils.la \
./gnome/libgnc-app-file-gnome.la \ ./gnome/libgnc-app-file-gnome.la \
${GUILE_LIBS} \ ${GUILE_LIBS} \

View File

@ -1,9 +1,9 @@
TESTS=test-link test-load-module TESTS=test-link test-load-module
TESTS_ENVIRONMENT=\ TESTS_ENVIRONMENT=\
GNC_MODULE_PATH=${top_srcdir}/src/app-file:${top_srcdir}/src/app-utils:${top_srcdir}/src/engine \ 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 \ 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 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 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/libgw-kvp.la \
${top_srcdir}/src/engine/test-core/libgncmod-test-engine.la \ ${top_srcdir}/src/engine/test-core/libgncmod-test-engine.la \
../libgncmod-backend-file.la \ ../libgncmod-backend-file.la \
./libgnc-test-file-stuff.la \ ./libgnc-test-file-stuff.la
-lltdl
AM_CFLAGS = \ AM_CFLAGS = \
-I${top_srcdir}/src/gnc-module \ -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); gnc_session_destroy (session_2);
g_free (filename); g_free (filename);
return TRUE;
} }
static gboolean static gboolean

View File

@ -11,7 +11,7 @@ libgncmodule_la_LIBADD = \
${G_WRAP_LINK_ARGS} \ ${G_WRAP_LINK_ARGS} \
${GLIB_LIBS} \ ${GLIB_LIBS} \
${GUILE_LIBS} \ ${GUILE_LIBS} \
-lltdl -lltdl
libgw_gnc_module_la_SOURCES = gw-gnc-module.c libgw_gnc_module_la_SOURCES = gw-gnc-module.c
libgw_gnc_module_la_DEPENDENCIES = libgncmodule.la libgw_gnc_module_la_DEPENDENCIES = libgncmodule.la

View File

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

View File

@ -19,10 +19,9 @@ TESTS = \
test-scm-init test-scm-init
TESTS_ENVIRONMENT = \ 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} \ GUILE_LOAD_PATH=..:${G_WRAP_MODULE_DIR} \
LTDL_LIBRARY_PATH=../ \ LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:mod-foo:mod-bar:mod-baz:misc-mods:..:
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
noinst_PROGRAMS = \ noinst_PROGRAMS = \
test-load-c \ test-load-c \

View File

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

View File

@ -1,11 +1,22 @@
TESTS = \ 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 = \ noinst_PROGRAMS = \
test-link-module test-link-module
INCLUDES=-I../../gnc-module ${GLIB_CFLAGS} ${GUILE_CFLAGS}
test_link_module_SOURCES=test-link-module.c 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 <stdlib.h>
#include <guile/gh.h>
#include <gnc-module.h>
int void
main(int argc, char ** argv) { guile_main(int argc, char ** argv) {
gnc_module_system_init();
/* gnc_module_load("gnucash/gnome-utils", 0); */
exit(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 libgw_gnc_la_LDFLAGS = -module
libgncgnome_la_LDFLAGS = -module libgncgnome_la_LDFLAGS = -module
libgncgnome_la_LIBADD = ${GNOMEUI_LIBS} ${GLIB_LIBS} ${GUILE_LIBS}
libgncgnome_la_SOURCES = \ libgncgnome_la_SOURCES = \
argv-list-converters.c \ argv-list-converters.c \

View File

@ -1,12 +1,11 @@
TESTS = \ TESTS = \
test-link-module test-link-module \
# test-load-module test-load-module
TESTS_ENVIRONMENT= \ TESTS_ENVIRONMENT= \
GNC_MODULE_PATH=../../gnc-module:.. \ GNC_MODULE_PATH=.. \
GUILE_LOAD_PATH=${G_WRAP_MODULE_DIR}:..:../../gnc-module:${top_srcdir}/lib \ GUILE_LOAD_PATH=${G_WRAP_MODULE_DIR}:..:../../gnc-module:${top_srcdir}/lib \
LTDL_LIBRARY_PATH=.. \ LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${top_srcdir}/src/gnc-module:${top_srcdir}/src/network-utils
LD_LIBRARY_PATH=${top_srcdir}/src/gnc-module:${top_srcdir}/src/gnc-module/.libs
noinst_PROGRAMS = \ 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_LDFLAGS = -module
libgncmod_ledger_core_la_LIBADD = \ libgncmod_ledger_core_la_LIBADD = \
${top_srcdir}/src/register/register-core/libgncmod-register-core.la \
${top_srcdir}/src/gnome/libgncgnome.la ${top_srcdir}/src/gnome/libgncgnome.la
AM_CFLAGS = \ AM_CFLAGS = \

View File

@ -9,7 +9,7 @@ libgncmod_locale_reports_us_la_LDFLAGS = -module
libgncmod_locale_reports_us_la_LIBADD = \ libgncmod_locale_reports_us_la_LIBADD = \
${top_srcdir}/src/gnc-module/libgncmodule.la \ ${top_srcdir}/src/gnc-module/libgncmodule.la \
${GUILE_LIBS} \ ${GUILE_LIBS} \
${GLIB_LIBS} ${GLIB_LIBS}
AM_CFLAGS = -I${top_srcdir}/src/gnc-module ${GUILE_INCS} ${GLIB_CFLAGS} AM_CFLAGS = -I${top_srcdir}/src/gnc-module ${GUILE_INCS} ${GLIB_CFLAGS}

View File

@ -1,9 +1,9 @@
TESTS= test-load-module test-link-module TESTS=test-load-module test-link-module
TESTS_ENVIRONMENT= \ 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 \ 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=${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 \ 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/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:.. 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 EXTRA_DIST = test-load-module

View File

@ -2,7 +2,7 @@ TESTS=test-load-module
TESTS_ENVIRONMENT= \ TESTS_ENVIRONMENT= \
GNC_MODULE_PATH=${top_srcdir}/src/engine:${top_srcdir}/src/report/report-system:${top_srcdir}/src/app-utils:${top_srcdir}/src/calculation:.. \ 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 \ 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 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 EXTRA_DIST = test-load-module