haskell / text-icu

This package provides the Haskell Data.Text.ICU library, for performing complex manipulation of Unicode text.
BSD 2-Clause "Simplified" License
47 stars 42 forks source link

`ld: warning: search path '/usr/local/opt/icu4c/lib' not found` on ghcup GHC+cabal & homebrew icu4c setup #107

Open benjaminweb opened 1 week ago

benjaminweb commented 1 week ago

cabal build raises ld: warning: search path '/usr/local/opt/icu4c/lib' not found

environment: GHC 9.10.1 cabal 3.12.1.0 managed through ghcup

icu4c managed through homebrew:

> brew info icu4c
==> icu4c@76: stable 76.1 (bottled) [keg-only]
C/C++ and Java libraries for Unicode and globalization
https://icu.unicode.org/home
Installed
/opt/homebrew/Cellar/icu4c@76/76.1_1 (277 files, 81MB) *
  Poured from bottle using the formulae.brew.sh API on 2024-11-11 at 14:41:47
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/i/icu4c@76.rb
License: ICU
==> Caveats
icu4c@76 is keg-only, which means it was not symlinked into /opt/homebrew,
because macOS provides libicucore.dylib (but nothing else).

If you need to have icu4c@76 first in your PATH, run:
  fish_add_path /opt/homebrew/opt/icu4c@76/bin
  fish_add_path /opt/homebrew/opt/icu4c@76/sbin

For compilers to find icu4c@76 you may need to set:
  set -gx LDFLAGS "-L/opt/homebrew/opt/icu4c@76/lib"
  set -gx CPPFLAGS "-I/opt/homebrew/opt/icu4c@76/include"

For pkg-config to find icu4c@76 you may need to set:
  set -gx PKG_CONFIG_PATH "/opt/homebrew/opt/icu4c@76/lib/pkgconfig"
> echo $PKG_CONFIG_PATH
/opt/homebrew/opt/icu4c@76/lib/pkgconfig
benjaminweb commented 1 week ago

/usr/local/opt/icu4c/libis searched because it is specified at https://github.com/haskell/text-icu/blob/32a90ab4c66980621d56b1a1dc70bd6016e28141/text-icu.cabal#L132

It doesn't exist on Apple silicon machines.

This could be solved by switching

To my knowledge there is no way to determine whether we are on Apple silicon within a cabal file. Is that true?