Missing glib/gobject when compiling
John Ralls
jralls at ceridwen.us
Fri Nov 10 22:42:28 EST 2017
> On Nov 10, 2017, at 7:06 PM, Edward Bridges <ebridges at eqbridges.com> wrote:
>
> 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:
Did you do this part first?
>>>>>>> Everything else is 32-bit. Change the>>>>> setup_sdk() call in ~/.jhbuildrc-custom to>>>
>>>>>> setup_sdk(architectures=[‘i386’])>>>>> and rebuild everything.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Regards,
John Ralls
>>>>>>
>>>>>> 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 <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 <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 <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 <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 <https://gist.github.com/ebridges/7df9f3b4b634be28bab5f35a8052b4e0>
>
> And, here's my .jhbuildrc-custom:
> https://gist.github.com/ebridges/521017dcf7795ccd22a9dc5e4e8977cf <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
>
> _______________________________________________
> gnucash-devel mailing list
> gnucash-devel at gnucash.org <mailto:gnucash-devel at gnucash.org>
> https://lists.gnucash.org/mailman/listinfo/gnucash-devel <https://lists.gnucash.org/mailman/listinfo/gnucash-devel>
More information about the gnucash-devel
mailing list