Missing glib/gobject when compiling

John Ralls jralls at ceridwen.us
Wed Nov 8 09:59:51 EST 2017



> On Nov 7, 2017, at 8:42 PM, Edward Bridges <ebridges at eqbridges.com> wrote:
> 
> On Tue, Nov 7, 2017, at 10:26 AM, John Ralls wrote:
>> 
>> 
>>> On Nov 6, 2017, at 6:27 PM, Edward Bridges <ebridges at eqbridges.com <mailto:ebridges at eqbridges.com>> wrote:
>>> 
>>> On Mon, Nov 6, 2017, at 08:40 PM, Edward Bridges wrote:
>>>> 
>>>> On Sun, Nov 5, 2017, at 10:39 PM, John Ralls wrote:
>>>>> 
>>>>> 
>>>>>> On Nov 5, 2017, at 6:07 PM, Edward Bridges <ebridges at eqbridges.com <mailto:ebridges at eqbridges.com>> wrote:
>>>>>> 
>>>>>> I've built libdbdpgsql.so using jhbuild build libdbi-drivers, then run:
>>>>>> 
>>>>>> cp gnucash-stable/lib/dbd/libdbdpgsql.so \
>>>>>>   /Applications/Gnucash.app/Contents/Resources/lib/dbd
>>>>>> 
>>>>>> 
>>>>>> install_name_tool -change gnucash-stable/lib/libdbi.1.dylib \
>>>>>>   /Applications/Gnucash.app/Contents/Resources/lib/libdbi.1.dylib \
>>>>>>   /Applications/Gnucash.app/Contents/Resources/lib/dbd/libdbdpgsql.so
>>>>>> 
>>>>>> I'm assuming that, then, when I start up Gnucash (v2.6.15) I would have
>>>>>> the
>>>>>> option to "Save As..." to a Postgresql database option under "Data
>>>>>> Format"
>>>>>> but it's not appearing, and am not seeing any logs under Console.
>>>>>> 
>>>>>> Thanks for your quick response earlier.  Am I missing a step somewhere
>>>>>> here?
>>>>> 
>>>>> I think you also need the pgsql client dylib in the bundle and it would
>>>>> be better to use @executable_path/../Resources/lib/libdbi.1.dylib rather
>>>>> than /Applications/Gnucash.app/Contents as that will allow you to move
>>>>> the bundle.
>>>>> 
>>>>> Use `otool -L
>>>>> /Applications/Gnucash.app/Contents/Resources/lib/dbd/libdbdpgsql.so` to
>>>>> make sure that your install_name_tool invocation did what you want. I’m
>>>>> suspicious of the relative path in your install_name_tool invocation.
>>>>> 
>>>>> Console doesn’t catch stderr anymore and hasn’t since Lion (10.7). You
>>>>> can check the trace file (`sudo find /var/private/Temp -name
>>>>> gnucash.trace` to get the path) but link errors might not get into there
>>>>> either, so best to run GnuCash from a Terminal session:
>>>>> /Applications/Gnucash.app/Contents/MacOS/Gnucash
>>>>> so the stderr output goes where you can see it.
>>>>> 
>>>>> Regards,
>>>>> John Ralls
>>>> 
>>>> Hi John --
>>>> 
>>>> Thanks for your help on this.  
>>>> 
>>>> When I run according to your instructions I get a brief error message
>>>> that libdbi is unable to load the driver -- and it still is not working
>>>> (see below).  I could not find a gnucash.trace file under /var as well.
>>>> 
>>>> ```
>>>> ~ $ /Applications/Gnucash.app/Contents/MacOS/Gnucash
>>>> Application Path /Applications/Gnucash.app/Contents/MacOS/Gnucash-bin
>>>> 
>>>> (process:4934): gnc.gui-WARNING **: [mac_set_languages()] Language list:
>>>> en:en_US:C
>>>> (null)
>>>> libdbi: Failed to load driver:
>>>> /Applications/Gnucash.app/Contents/Resources/lib/dbd/libdbdpgsql.so
>>>> ^C
>>>> 
>>>> ~ $ otool -L
>>>> /Applications/Gnucash.app/Contents/Resources/lib/dbd/libdbdpgsql.so
>>>> /Applications/Gnucash.app/Contents/Resources/lib/dbd/libdbdpgsql.so:
>>>>  /Users/gnucash/gnucash-stable/lib/libpq.5.dylib (compatibility
>>>>  version 5.0.0, current version 5.9.0)
>>>>  /Users/gnucash/gnucash-stable/lib/libdbi.1.dylib (compatibility
>>>>  version 3.0.0, current version 3.0.0)
>>>>  /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current
>>>>  version 1252.0.0)
>>>> ```
>>>> 
>>>> Cheers, 
>>>> Ed
>>> 
>>> Just noticed that `otool` is reporting that `libdbdpgsql.so` under 
>>> /Applications/Guncash.app is depending on `libdbi` and `libpq` 
>>> that live under the `gnucash` user home directory (i.e. that were built
>>> along with libdbdpgsql.
>>> 
>>> That may explain the failure to load the shared library (as the user I
>>> ran
>>> Gnucash as does not have access to the gnucash user home directory).
>>> 
>>> However, I tried running it as root as well, and still get the same
>>> error
>>> message.
>> 
>> 
>> What does `file /Applications/Gnucash.app/Contents/Resources/lib/dbd/libdbdpgsql.so` return?
>> 
>> Regards,
>> John Ralls
>> 
> 
> It returns:
> 
> /Applications/Gnucash.app/Contents/Resources/lib/dbd/libdbdpgsql.so <http://gnucash.app/Contents/Resources/lib/dbd/libdbdpgsql.so>: Mach-O 64-bit bundle x86_64

That’s the problem: Everything else is 32-bit. Change the setup_sdk() call in ~/.jhbuildrc-custom to 
  setup_sdk(architectures=[‘i386’])
and rebuild everything.

Another issue: Be sure to run
  install_name_tool -change /Users/gnucash/gnucash-stable/lib/libdbi.1.dylib \
  @executable_path/../Resources/lib/libdbi.1.dylib \
  /Applications/Gnucash.app/Contents/Resources/lib/dbd/libdbdpgsql.so

(That’s all one command, note the ‘\’ at the end of the first two lines) so that GnuCash and libdbdpgsql are using the same instance of the library; weird memory errors are likely if they don’t.

Regards,
John Ralls


More information about the gnucash-devel mailing list