Missing glib/gobject when compiling
Edward Bridges
ebridges at eqbridges.com
Fri Nov 10 22:06:20 EST 2017
On Thu, Nov 9, 2017, at 11:16 PM, John Ralls wrote:
>
>
>> On Nov 9, 2017, at 6:07 PM, Edward Bridges
>> <ebridges at eqbridges.com> wrote:>>
>> On Wed, Nov 8, 2017, at 11:00 PM, John Ralls wrote:
>>>
>>>
>>>> On Nov 8, 2017, at 6:57 PM, Edward Bridges
>>>> <ebridges at eqbridges.com> wrote:>>
>>>> On Wed, Nov 8, 2017, at 09:59 AM, John Ralls wrote:
>>>>>
>>>>>
>>>>>> 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> 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> 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/l-
>>>>>>>>>>> ib/libdbi.1.d->>>>>>>>>>> ylib \>>>>>>>>> /Applications/Gnucash.app/Contents/Reso-
>>>>>>>>>>> urces/lib/dbd/libdbd->>>>>>>>>>> pgsql.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/libdbdp-
>>>>>>>>>> gs->>>>>>>>>> ql.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
>>>>>>>>> message>>>>>>> it still is not>>>>>>>>> working>>>>>>> (see below). I could not find a gnucash.trace
>>>>>>>>> working>>>>>>> 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/libdbdpg-
>>>>>>>>> sq->>>>>>>>> l.so>>>>>>> ^C
>>>>>>>>>
>>>>>>>>> ~ $ otool -L
>>>>>>>>> /Applications/Gnucash.app/Contents/Resources/lib/dbd/libdbdpg-
>>>>>>>>> sq->>>>>>>>> l.so>>>>>>> /Applications/Gnucash.app/Contents/Resources/lib/-
>>>>>>>>> dbd/libdbdpgsq->>>>>>>>> l.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`
>>>>>>>> under>>>>>> 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-
>>>>>> .s->>>>>> o[1]: 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/libdbdpgsq->>>>> l.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
>>>>
>>>> It appears that I don't have i386 MacOS development libraries
>>>> installed on my x86_64 system:>>
>>>> ld: warning: ignoring file /Applications/Xcode.app/Contents/Develope->>>> r/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/lib-
>>>> /l->>>> ibpq.tbd[2], missing required architecture i386 in file /Application->>>> s/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer-
>>>> /S->>>> DKs/MacOSX10.13.sdk/usr/lib/libpq.tbd[3]>> Undefined symbols for
>>>> architecture i386:>>>> .
>>>> .
>>>> .
>>>> ld: symbol(s) not found for architecture i386
>>>> clang: error: linker command failed with exit code 1 (use -v to see>>>> invocation)>>
>>>> Is that something that's readily available for download somewhere?>>> No, but there’s a module for it in gnucash-on-osx/modules, so just
>>> build it.>
>>> Or try out 2.7.1 which is 64-bit and already has libdbd-pgsql in the>>> bundle… but try it on a copy as it’s not even beta yet.>
>>> Regards,
>>> John Ralls
>>>
>>
>> Hi John,
>>
>> Using this .modules file:
>> https://github.com/Gnucash/gnucash-on-osx/blob/master/modulesets/gnucash.modules>> It was not clear which module would satisfy the missing i386
>> libraries,>> so I tried meta-gtk-osx-core, as that "sounded" right (LoL).
>> That did not work (`jhbuild build meta-gtk-osx-core`), ultimately
>> failing with the error: "Neither GTK+-2.0 nor GTK+-3.0 was found"
>> Before I go down the path of trying 2.7.1 -- would you clarify more
>> specifically what's meant by "there's a module for it in gnucash-on->> osx/modules, so just build it"?
>> Thanks!
>> Ed
>>
>> Links:
>>
>> 1. http://gnucash.app/Contents/Resources/lib/dbd/libdbdpgsql.so
>> 2. http://xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/lib/libpq.tbd>> 3. http://xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/lib/libpq.tbd> `jhbuild build pgsql`
>
> It has one dependency, openssl, that’s a real pain it the neck (and a
> few other places). Let it configure and hit control-C when it starts
> to build, then run `make && make install_sw`. Control-D to quit the
> shell, tell it 2 continue to install. Control-C again immediately
> when it starts to install and select 2 continue to next module.
> Postgresql will build on its own. When it’s done you can rebuild
> libdbi and libdbd.>
> Regards,
> John Ralls
>
Hi John,
So I gave `jhbuild build pgsql` a go, and I may not have been successful
at choreographing the Control-C's to kill the build at the appropriate
times...hard to tell.
I'm not having any trouble building openssl -- it builds successfully.
Even if I run `jhbuild build openssl`
Then I run `make && make install_sw` and it builds for a while and
errors out with the same "Undefined symbols for i386" error:
```
ld: warning: ignoring file /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/lib/libpq.tbd, missing required architecture i386 in file /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/lib/libpq.tbdUndefined symbols for architecture i386:
```
FWIW -- here's my gnucash.modules:
https://gist.github.com/ebridges/7df9f3b4b634be28bab5f35a8052b4e0
And, here's my .jhbuildrc-custom:
https://gist.github.com/ebridges/521017dcf7795ccd22a9dc5e4e8977cf
The steps I followed two times, each time from a clean home directory of
a "gnucash" user:
* `./gtk-osx-build-setup.sh`
* `jhbuild bootstrap`
* [`jhbuild build openssl`]
* `jhbuild build pgsql`
* ctrl-c when configuration has finished
* Run `make && make install_sw`
* Fails due to missing i386 arch. symbolsFirst time through, I ran it without the openssl step. Second time, I
ran it explicitly.
Please advise, thanks!
Ed
More information about the gnucash-devel
mailing list