Windows build failed, r18541 incompatible with guile-1.6

Geert Janssens janssens-geert at telenet.be
Mon Jan 11 17:21:21 EST 2010


On Monday 4 January 2010, Christian Stimming wrote:
> Am Montag, 4. Januar 2010 schrieb Derek Atkins:
> > > The first compile problem with r18541 is one of many guile-1.6
> > > functions which Geert replaced with their non-deprecated guile-1.8
> > > counterparts, such as SCM_NFALSEP -> scm_is_true. But even if we
> > > reverted all of that "cosmetics", the main part of fixing bug#582325 is
> > > still a problem because guile-1.6 doesn't have scm_to_locale_string.
> > > Or, in other words, bug#582325 doesn't occur in guile-1.6 but only in
> > > the recent guile-1.8 but there it can be fixed only by using a new
> > > guile function which is not yet available in the old guile version.
> > >
> > > Maybe we should provide a #define workaround for scm_to_locale_string
> > > if guile-1.6 is detected, and (unfortunately) revert the rest of the
> > > renamings?
> >
> > Maybe we should do what David Hampton did and just recreate a
> > guile-compat.h that we can use to provide a guile-1.8 compatibility for
> > guile-1.6?
> 
> Yes, I've committed something like this just right now.
> 
> > What does scm_to_locale_string() do?
> 
> Dunno. The explanation at bug#582325 contains some text about this.
> 
> Regards,
> 
> Christian
> _______________________________________________
> gnucash-devel mailing list
> gnucash-devel at gnucash.org
> https://lists.gnucash.org/mailman/listinfo/gnucash-devel
> 

My apologies for leaving you guys with this mess... I didn't realize that the 
1.8 replacement functions were not available in 1.6.

scm_locale_to_string is a function that converts an SCM variable into a C-
compatible string. This is exactly what the older SCM_STRING_CHARS did as 
well. On recent distributions (Fedora 12, Mandriva 2009.1,...), GnuCash 
started crashing on SCM_STRING_CHARS, although this is not purely due to 
SCM_STRING_CHARS itself.

As of guile 1.8.6 there is a change in guile's symbol->string function that 
makes it incompatible with SCM_STRING_CHARS. A lot of guile code in GnuCash 
uses symbol->string in combination with SCM_STRING_CHARS, which doesn't work 
anymore as of Guile 1.8.6.

As SCM_STRING_CHARS was marked as deprecated, I figured the easiest solution 
would be to replace it with its proposed new equivalent (which also is more 
i10n compliant). As said, I didn't fully realize this change was incompatible 
with guile 1.6. I should have checked that.

Is the problem sufficiently solved with Christian's guile-compat.h fix ? If 
not, I can look into an alternative solution.

Regards,

Geert (who is learning every day...)


More information about the gnucash-devel mailing list