commercialhaskell / stack-ide

Stack-based JSON interface to ide-backend
98 stars 23 forks source link

Windows - text-icu requires external libraries; need manual flags and DLL #41

Closed conklech closed 9 years ago

conklech commented 9 years ago

This is just a note that resolving fpco/ide-backend#279 won't actually make stack-ide buildable on Windows out of the box. I don't request a resolution at the moment; I'm just posting this because I figured it out and didn't want the knowledge to disappear.

Because stack-ide depends on text-icu (for the regexes in Stack.Ide.AnnotateMessage), which depends on the ICU C library, the current installation instructions in the README presuppose the availability of that library. On Windows, this is a compound problem without an easy fix (that I know of). Binaries for that library are available from the ICU website (linked from text-icu's README) or via MSYS2 (and probably Cygwin).

In either case, the user must pass --extra-include-dirs= and --extra-lib-dirs= on the stack command line, because there aren't standard library locations on Windows and the text-icu package doesn't use pkg-config to get its cflags. (I would have expected it to just work in MSYS2's MingW shell, but the appropriate directories aren't on the default library search path for some reason.)

Furthermore, the ICU DLLs (I'm not sure which ones) need to be made available, either by manually copying them into the same directory as the installed executables or by always running from within a MingW shell. (For security reasons, Windows is very conservative about the DLL search path.)

This could be resolved by documenting a build process (although I don't think there's One Right Way) or by dropping the text-icu dependency.

rvion commented 9 years ago

It's not only about windows: on osx, icu is not present on the system by default neither. No "explicit" explication is given about why some dependencies fails to install, and in order to setup stack-ide, one has to:

mgsloan commented 9 years ago

Sorry, I didn't realize text-icu was a troublesome dependency. I'll just drop the message annotation stuff entirely - something I'd been thinking about doing anyway because it's just too darn inconsistent, and getting it right would take a lot of work. Ought to just wait for GHC to yield meaningful message annotations.

mgsloan commented 9 years ago

Removed! Thanks for bringing up this issue.

rvion commented 9 years ago

big thanks ! :)

conklech commented 9 years ago

Thanks for the quick resolution; I really appreciate how responsive you guys are. I'm glad I posted early; I had been tempted to try to port it to a different library myself.

It's a shame that text-icu is troublesome; it should be a commonly-used library. I'll try to make a helpful post upstream, but there's not much to be done about it until/unless stack itself gains some awareness of C dependencies.

CRogers commented 9 years ago

Awesome, this caused me a ton of problems when trying to install it on OS X.

On Wed, 5 Aug 2015 at 17:15 Christian Conkle notifications@github.com wrote:

Thanks for the quick resolution; I really appreciate how responsive you guys are. I'm glad I posted early; I had been tempted to try to port it to a different library myself.

It's a shame that text-icu is troublesome; it should be a commonly-used library. I'll try to make a helpful post upstream, but there's not much to be done about it until/unless stack itself gains some awareness of C dependencies.

— Reply to this email directly or view it on GitHub https://github.com/commercialhaskell/stack-ide/issues/41#issuecomment-128055251 .