win32 trunk daily build runs again (was: still broken)

Geert Janssens janssens-geert at telenet.be
Sun Apr 24 15:03:21 EDT 2011


On zaterdag 23 april 2011, Christian Stimming wrote:
> Am Samstag, 23. April 2011 schrieb Phil Longstaff:
> > > 762: undefined reference to `gnc_progress_dialog_set_primary'
> > > c:\soft\gnucash\build\src\import-export\qif-
> > > import/../../../../repos/src/import-export/qif-import/druid-qif-import.
> > > c: 763: undefined reference to `gnc_progress_dialog_set_secondary'
> > > [...]
> > > 
> > > and some more undefined references, all of symbols that should be in
> > > src/gnome/libgnc-gnome.so but somehow cannot be found. There haven't
> > > been any changes in the qif-import/Makefile.am linker flags, so I have
> > > no idea why this shows up now.
> > 
> > Yes, I ran into this.  I think my hack (since I didn't need bleeding
> > edge source) was to just back off to an earlier version.  There was some
> > point at which this libgnc-gnome problem started.  Maybe I can narrow
> > down what checkin it was.
> 
> I got it; fix is committed with r20593.
> 
Thanks for figuring this out.

> Recently some functions were introduces with the attribute G_MODULE_EXPORT
> (Geert in r20591 and r20533). In short: No good, please don't use that
> attribute inside gnucash. Why did you do this?
> 
Because that's what the GtkBuilder documentation suggested [1]. I'll admit I 
just blindly followed the advice given. I had no idea this had such an impact 
on the rest of the GnuCash library inter-dependencies.

> Here's the issue: In gnucash, our internally "downstream" libraries rely on
> *all* symbols being exported from the internally "upstream" libraries. This
> is done by mingw's linker if and *only* if no symbol at all was marked as
> being exported.  As soon as at least one symbol is manually marked as
> export, nothing except those marked symbols are exported, which will
> immediately lead to "unresolved symbols" in the win32 build. As Geert has
> introduced at least one function with G_MODULE_EXPORT attribute in
> libgnc-gnome, all other symbols from libgnc-gnome were no longer being
> exported for e.g. the qif-import code, which ran into the above build
> error.

Is that a design issue in the GnuCash code ? I mean should we normally 
explicitely decide which symbols to export an which not ? Or is this just bad 
advice on the gtkbuilder documentation page ?

Geert

[1] http://developer.gnome.org/gtk/stable/GtkBuilder.html#gtk-builder-connect-
signals


More information about the gnucash-devel mailing list