gnucash linking wrong libffi.dylib

Jeffrey Goldberg jeffrey at goldmark.org
Mon Feb 4 06:30:08 PST 2008


On Feb 4, 2008, at 12:52 AM, Peter O'Gorman wrote:

> On 3-Feb-08, at 11:27 PM, David Reiser wrote:

>
>> Seems to me that's x11 that's complaining about the version of  
>> libffi.

Indeed it does seem that way.

>> Before 2.2, gnucash used g-wrap to to handle some functions,

Following Peters comments (below), I saw that gnucash is a shell  
wrapper for gnucash-bin.  More on that below.

>> While I don't know anything else about your system, you might try  
>> removing g-wrap, or whatever else is supplying libffi in macports,  
>> and see if xquartz will then use the Leopard-provided /usr/lib/ 
>> libffi.dylib.

I have done a

  sudo port deactivate libffi

which did solve this particular problem (but more below).

>> I use that other packaging system, so I can't swear what needs to  
>> be in place, but I don't have any libffi except /usr/lib/ 
>> libffi.dylib, and gnucash works for me on an almost  identical  
>> system.

That does give me hope.  I'm actually trying to migrate from fink to  
macports, and if I can't get gnucash working, I will go back to fink  
if needed.  The main reason I'm moving is that I've moved my servers  
from Linux to FreeBSD last year, and I've fallen in love with the  
ports system there.  Also, I had been having increasing difficulties  
with fink.

> Something is setting DYLD_LIBRARY_PATH. I know that gnucash used to  
> do it, not sure if it still does.

Indeed that is it.  /opt/local/bin/gnucash is a shell script.  (I  
added some linebreaks to the DYLD_LIBRARY_PATH below)

#!/bin/sh

PATH="/opt/local/bin:${PATH}"
export PATH

GUILE_WARN_DEPRECATED="no"
export GUILE_WARN_DEPRECATED

GNC_MODULE_PATH="/opt/local/lib/gnucash:${GNC_MODULE_PATH}"

EXTRA_PATH="${EXTRA_PATH}:/opt/local/share/gnucash/guile-modules"
EXTRA_PATH="${EXTRA_PATH}:/opt/local/share/gnucash/scm"
GUILE_LOAD_PATH="${EXTRA_PATH}:${GUILE_LOAD_PATH}"

EXTRA_LIBS="${GNC_MODULE_PATH}"
EXTRA_LIBS="${EXTRA_LIBS}:/opt/local/lib"
EXTRA_LIBS="${EXTRA_LIBS}:/opt/local/lib/gnucash"

LD_LIBRARY_PATH="${EXTRA_LIBS}:${LD_LIBRARY_PATH}"
DYLD_LIBRARY_PATH="/System/Library/Frameworks/ 
ApplicationServices.framework/
  Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources:
  ${EXTRA_LIBS}:${DYLD_LIBRARY_PATH}"

export GNC_MODULE_PATH
export GUILE_LOAD_PATH
export LD_LIBRARY_PATH
export DYLD_LIBRARY_PATH

exec gnucash-bin "$@"

My normal environment doesn't set any LIBRARY_PATH variables.  And  
I've checked that libffi doesn't exist in that /System/Library ... thing

> I am sure that otool -L will confirm that the libffi in /opt/local  
> has compatibility_version 0.0.0.

Thank you.  In my pre-posting grasping at straws, I did look at the  
man page for otool, but was a bit overwhelmed.

I can confirm that otool reported that /opt/local/lib/libffi.dylib has  
compatibility 0.0.0 while the one in /usr/lib reports 1.0.0

So this is where I'm at.

I have deactivated libffi and now gnucash starts.  I get its splash  
screen, but then a scheme failure:

%  gnucash
gnc.bin-Message: main: binreloc relocation support was disabled at  
configure time.

Backtrace:
In current input:
    1: 0* [gnc:reldate-initialize]
In /opt/local/share/gnucash/scm/date-utilities.scm:
  844: 1* [gnc:make-reldate-hash #(() () () () ...) (# # # # ...)]
  382: 2  (map (lambda (reldate) (hash-set! hash # reldate)) reldate- 
list)

  /opt/local/share/gnucash/scm/date-utilities.scm:382:3: In expression  
(map (lambda # #) reldate-list):
  /opt/local/share/gnucash/scm/date-utilities.scm:382:3: Unbound  
variable: map
  mcount: gmon.out: Permission denied

My guess here is that I've got gnucash using the wrong version of  
guile.  Although I've studied lamba calculus in logic, I really know  
nothing of scheme.

Thank you both for your help on this.  Any suggestions on how to  
proceed further would be helpful.

Cheers,

-j


-- 
Jeffrey Goldberg                        http://www.goldmark.org/jeff/



More information about the macports-users mailing list