code in cvs is broken

Bill Gribble grib@linuxdevel.com
02 Apr 2002 07:56:14 -0600


On Wed, 2001-11-14 at 09:25, Derek Atkins wrote:
> They link against it at runtime, not link time.

This is completely different from the policy we have adopted for other 
modules.  You can argue with that policy if you want, and if it's broken
it should be changed, but that's the way other modules work and that's
how we have been trying to make them all work. The guiding principle is
that gnc:module-load of a module file should be able to automatically
load all the dependent modules, which means that they must be linked in
at library-build time. 

> As I've said the Dave in private mail, I still don't really understand
> how modules work in GC, but considering what I've got is working I'm
> just going to stick with it and wait until later to "do it right".
> I'd rather work on getting the features written and tested than making
> sure I follow the proper module usage.

Please take some time to try to understand what's going on now, and what
does or doesn't work about it.  We need to improve and complete the
implementation and policy surrounding the module system, and we can't do
that if folks are circumventing it and putting off changes until later. 

> I've pretty much tried to copy what the engine and "gnc" modules
> (Aside: I think 'gnc' is a really bad name for the Gnome interface
> module!) do.  Note that the gnc module does NOT link against
> libgncmod-engine.la either...  It does what I do: (use-module (... engine))

I'm not sure what you're talking about here.  There is no "gnc" module
that I know of.  The gnome code isn't in a gnc-module at all, but rather
just a big glom of a shared library, libgncgnome.la.  The 'gnc' g-wrap
bindings are the last vestiges of the One Big G-wrap File that used to
be in src/guile; it's called gw-gnc right now, but that's just because
it will be gotten rid of completely soon and there's no point in
changing the name just for a couple of weeks.  It's not a gnc-module
either. 

I hope the (use-modules ...) thing was just a typo ... gnc-modules
aren't Guile modules, they are a separate animal, and you load them
using (gnc:module-load module-name interface-number).  You certainly
shouldn't load the engine by a use-modules call.  It's a gnc-module, and
it runs code in its gnc-module initialization function that won't get
run if you bypass the gnc-module system and load that guile module
directly. 

> Don't I wish -- but no, I need to call into the engine and some of
> the gnome-utils functions.  In fact, I can't see how this would ever
> work.

You need to link against those modules, then.  Please add the test-link
and test-load-module tests that I described in my previous message into
your test suite; they will help you debug broken dependencies. 

Thanks,
Bill Gribble