Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Can't load updated libicu #33

Open
ismailmustafa opened this issue Aug 31, 2017 · 4 comments
Open

Can't load updated libicu #33

ismailmustafa opened this issue Aug 31, 2017 · 4 comments

Comments

@ismailmustafa
Copy link

Not sure if this is the right place for this but when attempting to build haskell-ide-engine which relies on text-icu as a dependency, it complains about the following:

Library not loaded: /usr/local/opt/icu4c/lib/libicuuc.58.dylib

However when running brew install icu4c, it installs the latest version which is 59.1. Does support for ICU 59.1 need to be added to text-icu or is this issue just unrelated?

More info regarding the error message can be found here haskell/haskell-ide-engine#303.

@raichoo
Copy link

raichoo commented Oct 11, 2017

I'm having the same issue on FreeBSD.

@raichoo
Copy link

raichoo commented Oct 11, 2017

Looks like this was related to stack reusing already built packages. I've removed all snapshots in question and rebuilt the project, now it works.

@brandon-leapyear
Copy link

brandon-leapyear commented Sep 1, 2020

This is an old work account. Please reference @brandonchinn178 for all future communication


Note that this package does not interface well with Homebrew, because in my experience, Homebrew doesn't really support pinned versions, and this would happen every time Homebrew updates its version of ICU. This breaks text-icu because the package is not rebuilt and stays linked to an old version of ICU. Not sure what a better solution looks like

@vshabanov vshabanov changed the title Support for ICU 59.1 Can't load updated libicu Feb 10, 2022
@vshabanov
Copy link
Collaborator

Hard to say what to do here. ICU is actively developed and often updated to a new major version (there is a new Unicode revision almost every year, and ICU adds its own features as well). It's not like OpenSSL, where the interface is almost doesn't change, and only new algorithms or bug fixes are added.

So precise versioning (libicu58, libicu59, ...) is necessary.

Adding a symlink from libicu58 to libicu59 won't work in general case, since the new Unicode character blocks could be added, and the same function would return different results for the same input (like block code changing from NoBlock in ICU 68 to CyproMinoan in ICU 70). Some other algorithms may change as well, so versions are really different and not backwards compatible.

Neither stack nor cabal is checking for updates of system-wide libraries. No go there.

Perhaps the only two options are manual recompilation or statically linking the ICU library.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants