[GNC-dev] Various failures while building MacOS/Quartz from source

Jim DeLaHunt list+gnucash at jdlh.com
Sat Nov 5 05:21:41 EDT 2022


On 2022-11-04 13:44, john wrote:

> On Nov 4, 2022, at 12:27 AM, Jim DeLaHunt <list+gnucash at jdlh.com> wrote:
>> % pkg-config --print-errors --exists freetype2
>> Package libbrotlidec was not found in the pkg-config search path.
>> Perhaps you should add the directory containing `libbrotlidec.pc'
>> to the PKG_CONFIG_PATH environment variable
>> Package 'libbrotlidec', required by 'freetype2', not found
>>
> Aha! Another gtk-osx user experienced that failure a couple of weeks ago [1]. You have libbrotli installed somewhere outside of /Users/gtkdeveloper/gnucash that Cmake can find it and pkg-config can't. That makes meson decide that it can't use that freetype to build harfbuzz so it ignores it and builds harfbuzz without freetype.
>
> Add
>    module_cmakeargs['freetype']="-DFT_DISABLE_BROTLI=YES"
>    module_cmakeargs['freetype-no-harfbuzz']="-DFT_DISABLE_BROTLI=YES"
>
> to /Users/gtkdeveloper/.config/jhbuildrc-custom and run
>    jhbuild buildone -fc freetype-no-harfbuzz
>    jhbuild build
>
> I just pushed a commit to gtk-osx to make Harfbuzz fail immediately if it's unhappy with Freetype for some reason. That should make troubleshooting this kind of problem a little quicker.

Thank you. That got me a step further.

freetype-no-harfbuzz now compiles happily, but harfbuzz-no-cairo seems 
to be unhappy about freetype's lack of libbrotlidec in the same way:

=====

*** Configuring harfbuzz-no-cairo *** [2/2]
The Meson build system
Version: 0.63.3
Source dir: /Users/gtkdeveloper/gnucash/src/harfbuzz-4.1.0
Build dir: /Users/gtkdeveloper/gnucash/build/harfbuzz-4.1.0
Build type: native build
Project name: harfbuzz
Project version: 4.1.0
C compiler for the host machine: 
/Library/Developer/CommandLineTools/usr/bin/gcc (clang 14.0.0 "Apple 
clang version 14.0.0 (clang-1400.0.29.202)")
C linker for the host machine: 
/Library/Developer/CommandLineTools/usr/bin/gcc ld64 820.1
C++ compiler for the host machine: 
/Library/Developer/CommandLineTools/usr/bin/g++ (clang 14.0.0 "Apple 
clang version 14.0.0 (clang-1400.0.29.202)")
C++ linker for the host machine: 
/Library/Developer/CommandLineTools/usr/bin/g++ ld64 820.1
Host machine cpu family: aarch64
Host machine cpu: arm64
Compiler for C++ supports link arguments -Bsymbolic-functions: YES
Compiler for C++ supports arguments -fno-exceptions: YES
Compiler for C++ supports arguments -fno-rtti: YES
Compiler for C++ supports arguments -fno-threadsafe-statics: YES
Compiler for C++ supports arguments -fvisibility-inlines-hidden: YES
Library m found: YES
Found pkg-config: /Users/gtkdeveloper/gnucash/inst/bin/pkg-config (0.29.2)
Found CMake: /Users/gtkdeveloper/gnucash/inst/bin/cmake (3.20.0)
Run-time dependency freetype2 found: NO (tried pkgconfig, framework and 
cmake)
Not looking for a fallback subproject for the dependency freetype2 because:
Use of fallback dependencies is disabled.

../../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/gtkdeveloper/gnucash/build/harfbuzz-4.1.0/meson-logs/meson-log.txt
meson --prefix /Users/gtkdeveloper/gnucash/inst --libdir lib 
-Dcoretext=enabled -Dfreetype=enabled -Ddocs=disabled 
-Dbenchmark=disabled -Dintrospection=disabled --wrap-mode=nofallback 
/Users/gtkdeveloper/gnucash/src/harfbuzz-4.1.0
*** Error during phase configure of harfbuzz-no-cairo: ########## Error 
running meson --prefix /Users/gtkdeveloper/gnucash/inst --libdir lib 
-Dcoretext=enabled -Dfreetype=enabled -Ddocs=disabled 
-Dbenchmark=disabled -Dintrospection=disabled --wrap-mode=nofallback 
/Users/gtkdeveloper/gnucash/src/harfbuzz-4.1.0 *** [2/2]

=====

The relevant part of meson-log.txt seems to say:

=====

Pkg-config binary for 1 is not cached.
Pkg-config binary missing from cross or native file, or env var undefined.
Trying a default Pkg-config fallback at pkg-config
Found pkg-config: /Users/gtkdeveloper/gnucash/inst/bin/pkg-config (0.29.2)
Determining dependency 'freetype2' with pkg-config executable 
'/Users/gtkdeveloper/gnucash/inst/bin/pkg-config'
env[PKG_CONFIG_PATH]: 
/Users/gtkdeveloper/gnucash/inst/lib/pkgconfig:/Users/gtkdeveloper/gnucash/inst/share/pkgconfig:/usr/lib/pkgconfig
Called `/Users/gtkdeveloper/gnucash/inst/bin/pkg-config --modversion 
freetype2` -> 0
24.1.18
env[PKG_CONFIG_PATH]: 
/Users/gtkdeveloper/gnucash/inst/lib/pkgconfig:/Users/gtkdeveloper/gnucash/inst/share/pkgconfig:/usr/lib/pkgconfig
Called `/Users/gtkdeveloper/gnucash/inst/bin/pkg-config --cflags 
freetype2` -> 1

pkg-config error with 'freetype2': Could not generate cargs for freetype2:
Package libbrotlidec was not found in the pkg-config search path.
Perhaps you should add the directory containing `libbrotlidec.pc'
to the PKG_CONFIG_PATH environment variable
Package 'libbrotlidec', required by 'freetype2', not found

Finding framework path by running: 
/Library/Developer/CommandLineTools/usr/bin/g++ -v -E - -arch arm64 
-I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include 
-isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk 
-mmacosx-version-min=12 -I/Users/gtkdeveloper/gnucash/inst/include -arch 
arm64 -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include 
-isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk

Looking for framework freetype2 in 
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks
CMake binary for 1 is not cached
CMake binary missing from cross or native file, or env var undefined.
Trying a default CMake fallback at cmake
Found CMake: /Users/gtkdeveloper/gnucash/inst/bin/cmake (3.20.0)
Extracting basic cmake information
CMake Toolchain: Calling CMake once to generate the compiler state
Calling CMake (['/Users/gtkdeveloper/gnucash/inst/bin/cmake']) in 
/Users/gtkdeveloper/gnucash/build/harfbuzz-4.1.0/meson-private/__CMake_compiler_info__ 
with:
   - "--trace-expand"
   - "--trace-format=json-v1"
   - "--no-warn-unused-cli"
   - "--trace-redirect=cmake_trace.txt"
   - "-G"
   - "Ninja"
   - 
"-DCMAKE_TOOLCHAIN_FILE=/Users/gtkdeveloper/gnucash/build/harfbuzz-4.1.0/meson-private/__CMake_compiler_info__/CMakeMesonTempToolchainFile.cmake"
   - "."
   - 
"-DCMAKE_PREFIX_PATH=/Users/gtkdeveloper/gnucash/inst;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr"
Try CMake generator: auto
Calling CMake (['/Users/gtkdeveloper/gnucash/inst/bin/cmake']) in 
/Users/gtkdeveloper/gnucash/build/harfbuzz-4.1.0/meson-private/cmake_freetype2 
with:
   - "--trace-expand"
   - "--trace-format=json-v1"
   - "--no-warn-unused-cli"
   - "--trace-redirect=cmake_trace.txt"
   - 
"-DCMAKE_TOOLCHAIN_FILE=/Users/gtkdeveloper/gnucash/build/harfbuzz-4.1.0/meson-private/cmake_freetype2/CMakeMesonToolchainFile.cmake"
   - "."
   - 
"-DCMAKE_PREFIX_PATH=/Users/gtkdeveloper/gnucash/inst;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr"
   -- Module search paths:    ['/', '/Applications', 
'/Library/Developer/CommandLineTools/Library/Frameworks', 
'/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks', 
'/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr', 
'/Library/Frameworks', '/System/Library/Frameworks', 
'/Users/gtkdeveloper/gnucash/inst', '/opt', '/opt/local', '/usr', 
'/usr/local']
   -- CMake root: /Users/gtkdeveloper/gnucash/inst/share/cmake-3.20
   -- CMake architectures:    []
   -- CMake lib search paths: ['lib', 'lib32', 'lib64', 'libx32', 'share']
Preliminary CMake check failed. Aborting.
Run-time dependency freetype2 found: NO (tried pkgconfig, framework and 
cmake)
Not looking for a fallback subproject for the dependency freetype2 because:
Use of fallback dependencies is disabled.

../../src/harfbuzz-4.1.0/meson.build:87:0: ERROR: Dependency 'freetype2' 
is required but not found.

=====

Like a good script kiddie, I tried adding to jhbuildrc-custom a line:
   module_cmakeargs['harfbuzz-no-cairo']="-DFT_DISABLE_BROTLI=YES"

... and cleaning and remaking harfbuzz-no-cairo, but it had no effect.

By the way, in the CMake part of the meson-log above, I see a mention of 
the path /opt/local . It turns out that I do have an 
/opt/local/lib/libbrotlidec*.dylib and 
/opt/local/lib/pkgconfig/libbrotlidec.pc,  installed there by MacPorts 
port "brotli". If Cmake looks for libraries in /opt/local, maybe it 
found that.

Thank you for your help, John. If I may continue to impose, and ideas 
for a next step?
      —Jim DeLaHunt


> [1] https://gitlab.gnome.org/GNOME/gtk-osx/-/issues/62 <https://gitlab.gnome.org/GNOME/gtk-osx/-/issues/62>


More information about the gnucash-devel mailing list