I must confess that I do not even begin to understand prebinding. Nor do I know what the OS X analog of the linux ldconfig command and configuration is. But I suspect that the answer to my problem will lie in those directions. I've installed gnome/gnucash using macports (that was a bit of a trick because of confusion about which guile installation was needed. Gnucash configure couldn't find guile16, but I had other problems with guile 1.8. I also needed to install "+without_docs" because otherwise port tried and failed to install firefox) But I did finally get something compiled and installed. However, it won't run, and this is what I get to standard error. dyld: Library not loaded: /usr/lib/libffi.dylib Referenced from: /System/Library/Frameworks/QuartzCore.framework/Versions/A/ QuartzCore Reason: Incompatible library version: QuartzCore requires version 1.0.0 or later, but libffi.dylib provides version 0.0.0 I note that there is a an /opt/local/lib/libffi.dylib installed, but apparently that's not the dynamic library that gnucash finds. As I've said, I am clueless about dynamic libraries, particularly on OS X. I'm running OS X 10.5.1 with Xcode 3.0 on a G5 PPC. I have also installed the update to X11 from Macosforge. Cheers, -j -- Jeffrey Goldberg http://www.goldmark.org/jeff/
On Feb 3, 2008, at 5:21 PM, Jeffrey Goldberg wrote:
I must confess that I do not even begin to understand prebinding. Nor do I know what the OS X analog of the linux ldconfig command and configuration is. But I suspect that the answer to my problem will lie in those directions.
I've installed gnome/gnucash using macports (that was a bit of a trick because of confusion about which guile installation was needed. Gnucash configure couldn't find guile16, but I had other problems with guile 1.8. I also needed to install "+without_docs" because otherwise port tried and failed to install firefox) But I did finally get something compiled and installed.
However, it won't run, and this is what I get to standard error.
dyld: Library not loaded: /usr/lib/libffi.dylib Referenced from: /System/Library/Frameworks/QuartzCore.framework/Versions/A/ QuartzCore Reason: Incompatible library version: QuartzCore requires version 1.0.0 or later, but libffi.dylib provides version 0.0.0
I note that there is a an /opt/local/lib/libffi.dylib installed, but apparently that's not the dynamic library that gnucash finds.
As I've said, I am clueless about dynamic libraries, particularly on OS X.
I'm running OS X 10.5.1 with Xcode 3.0 on a G5 PPC.
I have also installed the update to X11 from Macosforge.
Cheers,
-j
-- Jeffrey Goldberg http://www.goldmark.org/jeff/
Seems to me that's x11 that's complaining about the version of libffi. Before 2.2, gnucash used g-wrap to to handle some functions, and g- wrap brought in a rather ancient version of libffi. gnucash has since switched to swig for the functions formerly handled by g-wrap, and you don't even need swig if you are building gnucash from a tarball. 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 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. Dave
On 3-Feb-08, at 11:27 PM, David Reiser wrote:
On Feb 3, 2008, at 5:21 PM, Jeffrey Goldberg wrote:
I must confess that I do not even begin to understand prebinding. Nor do I know what the OS X analog of the linux ldconfig command and configuration is. But I suspect that the answer to my problem will lie in those directions.
I've installed gnome/gnucash using macports (that was a bit of a trick because of confusion about which guile installation was needed. Gnucash configure couldn't find guile16, but I had other problems with guile 1.8. I also needed to install "+without_docs" because otherwise port tried and failed to install firefox) But I did finally get something compiled and installed.
However, it won't run, and this is what I get to standard error.
dyld: Library not loaded: /usr/lib/libffi.dylib Referenced from: /System/Library/Frameworks/QuartzCore.framework/Versions/A/ QuartzCore Reason: Incompatible library version: QuartzCore requires version 1.0.0 or later, but libffi.dylib provides version 0.0.0
I note that there is a an /opt/local/lib/libffi.dylib installed, but apparently that's not the dynamic library that gnucash finds.
Seems to me that's x11 that's complaining about the version of libffi. Before 2.2, gnucash used g-wrap to to handle some functions, and g-wrap brought in a rather ancient version of libffi. gnucash has since switched to swig for the functions formerly handled by g- wrap, and you don't even need swig if you are building gnucash from a tarball.
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 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.
Hi David, Something is setting DYLD_LIBRARY_PATH. I know that gnucash used to do it, not sure if it still does. The symptoms are that DYLD_LIBRARY_PATH is set to /opt/local/lib so the dynamic linker is finding the version of libffi.dylib there. I am sure that otool -L will confirm that the libffi in /opt/local has compatibility_version 0.0.0. Does gnucash still have a wrapper script that sets DYLD_LIBRARY_PATH? Peter -- Peter O'Gorman http://pogma.com
On Feb 4, 2008, at 1:52 AM, Peter O'Gorman wrote:
On 3-Feb-08, at 11:27 PM, David Reiser wrote:
On Feb 3, 2008, at 5:21 PM, Jeffrey Goldberg wrote:
I must confess that I do not even begin to understand prebinding. Nor do I know what the OS X analog of the linux ldconfig command and configuration is. But I suspect that the answer to my problem will lie in those directions.
I've installed gnome/gnucash using macports (that was a bit of a trick because of confusion about which guile installation was needed. Gnucash configure couldn't find guile16, but I had other problems with guile 1.8. I also needed to install "+without_docs" because otherwise port tried and failed to install firefox) But I did finally get something compiled and installed.
However, it won't run, and this is what I get to standard error.
dyld: Library not loaded: /usr/lib/libffi.dylib Referenced from: /System/Library/Frameworks/QuartzCore.framework/Versions/A/ QuartzCore Reason: Incompatible library version: QuartzCore requires version 1.0.0 or later, but libffi.dylib provides version 0.0.0
I note that there is a an /opt/local/lib/libffi.dylib installed, but apparently that's not the dynamic library that gnucash finds.
Seems to me that's x11 that's complaining about the version of libffi. Before 2.2, gnucash used g-wrap to to handle some functions, and g-wrap brought in a rather ancient version of libffi. gnucash has since switched to swig for the functions formerly handled by g-wrap, and you don't even need swig if you are building gnucash from a tarball.
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 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.
Hi David,
Something is setting DYLD_LIBRARY_PATH. I know that gnucash used to do it, not sure if it still does. The symptoms are that DYLD_LIBRARY_PATH is set to /opt/local/lib so the dynamic linker is finding the version of libffi.dylib there. I am sure that otool -L will confirm that the libffi in /opt/local has compatibility_version 0.0.0.
Does gnucash still have a wrapper script that sets DYLD_LIBRARY_PATH?
Peter -- Peter O'Gorman http://pogma.com
Yes, gnucash does set DYLD_LIBRARY_PATH. The justification for their adding it was to allow gnucash to pass make check on a mac. (one symptom being that configure can find MSGFMT, but make can't). Jeff, The patch I use for this is: perl -pi.bak -e 's,DYLD_LIBRARY_PATH,DYLD_FALLBACK_LIBRARY_PATH,g' aclocal.m4 perl -pi.bak -e 's,DYLD_LIBRARY_PATH,DYLD_FALLBACK_LIBRARY_PATH,g' configure perl -pi.bak -e 's,DYLD_LIBRARY_PATH,DYLD_FALLBACK_LIBRARY_PATH,g' src/bin/gnucash.in perl -pi.bak -e 's,DYLD_LIBRARY_PATH,DYLD_FALLBACK_LIBRARY_PATH,g' src/bin/overrides/gnucash-env.in perl -pi.bak -e 's,DYLD_LIBRARY_PATH,DYLD_FALLBACK_LIBRARY_PATH,g' src/gnc-test-env Dave
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/
On Feb 4, 2008, at 9:30 AM, Jeffrey Goldberg wrote:
[...]
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.
Usually scheme errors on launch indicate that your version of slib and guile are not working together. I think the usual fix for that is remove slib and rebuild/reinstall it, making sure that it's pointed at the version of guile you need. Dave
participants (3)
-
David Reiser
-
Jeffrey Goldberg
-
Peter O'Gorman