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

Jim DeLaHunt <[email protected]>
Newsgroups gmane.comp.gnome.apps.gnucash.devel
Message-ID <[email protected]>
On 2022-11-04 13:44, john wrote:

> On Nov 4, 2022, at 12:27 AM, Jim DeLaHunt <[email protected]> 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>
_______________________________________________
gnucash-devel mailing list
[email protected]
https://lists.gnucash.org/mailman/listinfo/gnucash-devel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.