[GNC-dev] Missing FreeType2 for Mac OS Development

Vincent Lucarelli vincent.lucarelli at gmail.com
Mon Jan 16 20:56:43 EST 2023


Sorry - I didn’t explain that I used ACLs (chmod -a)  to completely block access for my build user “gnucash” from accessing /opt/homebrew and then started from the beginning of setting up a build environment as the gnucash user. During this rebuild, I ran into an error while building libxmlsec1, which depends on gnutls.  I traced that failure to -lgcrypt missing from the link line.

I was planning to document the full procedure on the wiki in case it helps someone else trying to start from scratch on Mac OS.

When creating a new file, is the last step to pick a file location with GtkFileChooser?  That would explain why I’m crashing on trying to create a new GnuCash file because I am running from the build directory.

Do I need to create a bundle for GtkFileChooser to not crash?

Thanks for your help,

Vince


> On Jan 16, 2023, at 7:13 PM, John Ralls <jralls at ceridwen.us> wrote:
> 
> I thought that you said the freetype2 problem was from Cmake finding libbrotlidec in /opt/homebrew. I don't think that freetype2 has a dependency on gnutls. Webkit (via libsoup<-glib-networking) and AQBanking depend on it; IIRC the missing -lgcrypt is in the glib-networking build.
> 
> The problem with libdbdmysql.so is that $PREFIX/lib/mariadb/libmariaconnector.3.dylib gets built with a bare install name, so at runtime the loader doesn't know how to find it. The post-build fix is to use install_name_tool to change its id to one with a full path and then to change libdbdmysql.so's listing to use the path. To get it to build correctly it needs CMAKE_MACOSX_RPATH=ON and CMAKE_INSTALL_NAME_DIR=$PREFIX/lib. The first could be set in the module's cmakeargs attribute but the second would have to be conjured in jhbuildrc-custom using module_cmakeargs.
> 
> That shouldn't have caused the crash; it's probably to do with gsettings schemas. GnuCash will crash when run from the build directory if you try to do anything involving the GtkFileChooser because that won't be able to find its Gsettings schemas.
> 
> Regards,
> John Ralls
> 
> 
> 
> 
>> On Jan 16, 2023, at 8:39 AM, Vincent Lucarelli <vincent.lucarelli at gmail.com> wrote:
>> 
>> Got much farther with the build, but now stuck with a build/run time error.
>> 
>> The freetype2 error was rooted in gnutls.pc missing -lgcrypt.  I’m not sure if this is an issue for gnutls or a patch for arm64/MacOSx build.  Manually added the dependency and finished the build.
>> 
>> Tried to run gnucash build from git/master, but it crashed when I tried to create a new file, after I walked through the setup, and right when I clicked “Apply”.
>> 
>> Decided to rebuild with debugging and during the build of gnucash, I noticed 
>> 
>>> libdbi: Failed to load driver: /Users/gnucash/opt/gnucash/inst/lib/dbd/libdbdmysql.so
>> 
>> Trying to determine if libdbi or a dependency had an issue during build or if there is something else going on.
>> 
>> If any of this looks familiar, suggestions are appreciated.  Otherwise, I’ll keep digging.
>> 
>> Thanks,
>> 
>> Vince
>> 
>> PS - When I try to open Gnucash Preferences, it crashes too.  Will try to get more info on that later.
>> 
>> 
>> 
>>> On Jan 14, 2023, at 10:43 PM, john <jralls at ceridwen.us> wrote:
>>> 
>>> While you're getting familiar enough with GnuCash ask questions here. Once you've got a PR written we can move the discussion to that PR.
>>> 
>>> Regards,
>>> John Ralls
>>> 
>>> 
>>>> On Jan 14, 2023, at 4:21 PM, Vincent Lucarelli <vincent.lucarelli at gmail.com> wrote:
>>>> 
>>>> It looks like freetype2 picked up a dependency on /opt/homebrew/lib/libbrotlidec.dylib even though I started with a new user account and insulated the build with 
>>>>> cmakeargs = '-DCMAKE_SYSTEM_IGNORE_PATH="/opt/homebrew:/opt/macports:/sw:/usr/local"'
>>>> as suggested at https://wiki.gnome.org/action/show/Projects/GTK/OSX/Building#Prerequisites
>>>> 
>>>> 
>>>> So when harfbuzz-no-cairo tried to configure against freetype2, it was looking for libbrotlidec.pc, but that wasn’t built by jhbuild.
>>>> 
>>>> I’ll try again tomorrow to see if I can track down exactly how homebrew is poisoning the build environment.
>>>> 
>>>> Provided I can actual build gnucash, should development questions about integrating FQ get_features() take place on this mailing list in a new thread or on GitHub under and issue?
>>>> 
>>>> Best,
>>>> 
>>>> Vince
>>>> 
>>>> 
>>>>> On Jan 14, 2023, at 4:44 PM, John Ralls <jralls at ceridwen.us> wrote:
>>>>> 
>>>>> 
>>>>> 
>>>>>> On Jan 14, 2023, at 10:22 AM, Vincent Lucarelli <vincent.lucarelli at gmail.com> wrote:
>>>>>> 
>>>>>> Hi,
>>>>>> 
>>>>>> I am attempting to setup a new Mac OS X user account on Ventura 13.0.1 to build gnucash so I can attempt to help integrate a new Finance::Quote feature into GnuCash. Ran into 2 problems following the instructions at https://wiki.gnucash.org/wiki/MacOS/Quartz 
>>>>>> 
>>>>>> First issue - was able to solve - copying /bin/bash to $HOME/.new_local/bin doesn’t seem to work on Ventura.  The process is immediately killed when the alternate copy of bash is run.  Some googling suggests it might have something to do with quarantine or code signing, but a few of the suggested solutions didn’t work. I have homebrew installed (but not in the path for the account I’m using to try and build gnucash), so I just installed bash with brew and then copied that executable into .new_local/bin.
>>>>>> 
>>>>>> Second issue - not sure how to proceed.  The bootstrap run successfully, but the jhbuild step failed to find freetype2
>>>>>> 
>>>>>>> PREFIX=$HOME/opt/gnucash jhbuild build
>>>>>> 
>>>>>>> ../../src/harfbuzz-4.1.0/meson.build:87:0: ERROR: Dependency 'freetype2' is required but not found.
>>>>>>> 
>>>>>>> A full log can be found at /Users/gnucash/opt/gnucash/build/harfbuzz-4.1.0/meson-logs/meson-log.txt
>>>>>>> WARNING: Running the setup command as `meson [options]` instead of `meson setup [options]` is ambiguous and deprecated.
>>>>>>> *** Error during phase configure of harfbuzz-no-cairo: ########## Error running meson --prefix /Users/gnucash/opt/gnucash/inst --libdir lib -Dcoretext=enabled -Dfreetype=enabled -Ddocs=disabled -Dbenchmark=disabled -Dintrospection=disabled --wrap-mode=nofallback /Users/gnucash/opt/gnucash/src/harfbuzz-4.1.0 *** [20/76]
>>>>>>> 
>>>>>>> [1] Rerun phase configure
>>>>>>> [2] Ignore error and continue to build
>>>>>>> [3] Give up on module
>>>>>>> [4] Start shell
>>>>>>> [5] Reload configuration
>>>>>>> [6] Go to phase "wipe directory and start over"
>>>>>>> choice:
>>>>>> 
>>>>>> Any advice how how to proceed is appreciated.
>>>>> 
>>>>> harfbuzz-no-cairo depends on freetype-no-harfbuzz. If $PREFIX/lib/pkgconfig/freetype2.pc isn't installed then something went wrong with the latter. Scroll back in your terminal session to see what.
>>>>> 
>>>>> Regards,
>>>>> John Ralls
>>>> 
>>> 
>> 
> 



More information about the gnucash-devel mailing list