HsOpenSSL icon indicating copy to clipboard operation
HsOpenSSL copied to clipboard

Install failure on macOS

Open MaxGabriel opened this issue 7 years ago • 5 comments

Hi, I'm having trouble installing HsOpenSSL. I'm getting the following error:

maximiliantagher@Maximilians-MBP ~/D/M/h/mercury-web-backend> stack install HsOpenSSL
HsOpenSSL-0.11.4.11: configure

--  While building custom Setup.hs for package HsOpenSSL-0.11.4.11 using:
      /private/var/folders/v7/5k06hq7d3wbb4cvk8smv6kl00000gn/T/stack19302/HsOpenSSL-0.11.4.11/.stack-work/dist/x86_64-osx/Cabal-1.24.2.0/setup/setup --builddir=.stack-work/dist/x86_64-osx/Cabal-1.24.2.0 configure --with-ghc=/Users/maximiliantagher/.stack/programs/x86_64-osx/ghc-8.0.2/bin/ghc --with-ghc-pkg=/Users/maximiliantagher/.stack/programs/x86_64-osx/ghc-8.0.2/bin/ghc-pkg --user --package-db=clear --package-db=global --package-db=/Users/maximiliantagher/.stack/snapshots/x86_64-osx/lts-9.14/8.0.2/pkgdb --libdir=/Users/maximiliantagher/.stack/snapshots/x86_64-osx/lts-9.14/8.0.2/lib --bindir=/Users/maximiliantagher/.stack/snapshots/x86_64-osx/lts-9.14/8.0.2/bin --datadir=/Users/maximiliantagher/.stack/snapshots/x86_64-osx/lts-9.14/8.0.2/share --libexecdir=/Users/maximiliantagher/.stack/snapshots/x86_64-osx/lts-9.14/8.0.2/libexec --sysconfdir=/Users/maximiliantagher/.stack/snapshots/x86_64-osx/lts-9.14/8.0.2/etc --docdir=/Users/maximiliantagher/.stack/snapshots/x86_64-osx/lts-9.14/8.0.2/doc/HsOpenSSL-0.11.4.11 --htmldir=/Users/maximiliantagher/.stack/snapshots/x86_64-osx/lts-9.14/8.0.2/doc/HsOpenSSL-0.11.4.11 --haddockdir=/Users/maximiliantagher/.stack/snapshots/x86_64-osx/lts-9.14/8.0.2/doc/HsOpenSSL-0.11.4.11 --dependency=Cabal=Cabal-1.24.2.0 --dependency=base=base-4.9.1.0 --dependency=bytestring=bytestring-0.10.8.1 --dependency=network=network-2.6.3.2-IsLM4TXcLoRI0fmmBYVyQz --dependency=time=time-1.6.0.1 -f-fast-bignum
    Process exited with code: ExitFailure 1
    Logs have been written to: /Users/maximiliantagher/Documents/Mercury/hs/mercury-web-backend/.stack-work/logs/HsOpenSSL-0.11.4.11.log

    [1 of 2] Compiling Main             ( /private/var/folders/v7/5k06hq7d3wbb4cvk8smv6kl00000gn/T/stack19302/HsOpenSSL-0.11.4.11/Setup.hs, /private/var/folders/v7/5k06hq7d3wbb4cvk8smv6kl00000gn/T/stack19302/HsOpenSSL-0.11.4.11/.stack-work/dist/x86_64-osx/Cabal-1.24.2.0/setup/Main.o )
    [2 of 2] Compiling StackSetupShim   ( /Users/maximiliantagher/.stack/setup-exe-src/setup-shim-mPHDZzAJ.hs, /private/var/folders/v7/5k06hq7d3wbb4cvk8smv6kl00000gn/T/stack19302/HsOpenSSL-0.11.4.11/.stack-work/dist/x86_64-osx/Cabal-1.24.2.0/setup/StackSetupShim.o )
    Linking /private/var/folders/v7/5k06hq7d3wbb4cvk8smv6kl00000gn/T/stack19302/HsOpenSSL-0.11.4.11/.stack-work/dist/x86_64-osx/Cabal-1.24.2.0/setup/setup ...
    Configuring HsOpenSSL-0.11.4.11...
    setup: Can't find OpenSSL library,
    install it via 'brew install openssl' or 'port install openssl'
    or use --extra-include-dirs= and --extra-lib-dirs=
    to specify location of installed OpenSSL library.

However, I have run brew install openssl, and I can confirm that the /usr/local/opt/openssl/ and /usr/local/opt/openssl/lib directories are present.

Adding these lines to my stack.yaml file fixes it:

extra-include-dirs:
- /usr/local/opt/openssl/include
extra-lib-dirs:
- /usr/local/opt/openssl/lib

However, I was under the impression that this shouldn't be necessary, because of this commit: https://github.com/vshabanov/HsOpenSSL/commit/b95cea20ef7ee162fd7e5370e09b9120efa3686d

OS Version: macOS High Sierra 10.13.2 (17C205) (Latest as of today) Stack: Version 1.6.0.20171202, Git revision 50090e67c16980bba31349f386d5b018cbcaec31 (5421 commits) x86_64 hpack-0.20.0 LTS Haskell: 9.14 Compiler: 8.0.2 (Unchanged from LTS) OpenSSL: 1.0.2n (Latest as today)

I had a coworker try it as well, and he had the same issue (Same project as mine, and also on macOS High Sierra)

Tell me if there's anything I can do to help debug this issue!

MaxGabriel avatar Jan 13 '18 01:01 MaxGabriel

Hard to say. I have no experience with Stack.

Does it work if you set homebrew-openssl flag instead of settings extra-*-dirs?

And could you run installation with verbose flag and attach logs so I could see what happens during configuration stage.

vshabanov avatar Jan 24 '18 15:01 vshabanov

Does it work if you set homebrew-openssl flag instead of settings extra-*-dirs?

Yes, I added these flags:

flags:
  HsOpenSSL:
    homebrew-openssl: true

and it installs correctly.

And could you run installation with verbose flag and attach logs so I could see what happens during configuration stage.

This is the output with --verbose --cabal-verbose. Before the package is actually configured you'll see "Exception ignored when attempting to load" the HsOpenSSL package—I'm pretty certain this is just because I had to uninstall HsOpenSSL (stack exec -- ghc-pkg unregister --force "HsOpenSSL) to reproduce what breaks installing it. After those lines it proceeds to configure it as normal, where it fails on finding the OpenSSL library.

I also ran the command with just --cabal-verbose which may be more relevant; here's that output.

(Note: these gists are when I'm installing with neither the manually added flag or the extra-*-dirs changes).

MaxGabriel avatar Jan 24 '18 16:01 MaxGabriel

maximiliantagher@Maximilians-MacBook-Pro ~> cabal install HsOpenSSL
Resolving dependencies...
Configuring network-2.6.3.2...
Building network-2.6.3.2...
Installed network-2.6.3.2
Downloading HsOpenSSL-0.11.4.11...
Configuring HsOpenSSL-0.11.4.11...
Building HsOpenSSL-0.11.4.11...
Installed HsOpenSSL-0.11.4.11

A cabal install of the same version of HsOpenSSL seems to work.

After that worked I unregistered the package and ran it again with --verbose flags in case that's helpful;

https://gist.github.com/MaxGabriel/7889879980cd6525038ceeea80c76f87

That log prints: Redirecting build log to {handle: /Users/maximiliantagher/.cabal/logs/ghc-8.2.1/HsOpenSSL-0.11.4.11-E0eYID5H9bI2rtP2Zsi72t.log}, so I included that too:

https://gist.github.com/MaxGabriel/2a7116641ef32653618136473a699636

MaxGabriel avatar Jan 24 '18 16:01 MaxGabriel

When doing $stack build with dependency on openssl, I've got the same issue on OSX Sierra, Darwin Kernel 16.7.0 RELEASE_X86_64;

@MaxGabriel 's solution worked for me as well.

I was using MacPorts installed openssl / openssl @1.0.2o_1 (active), hence did change in the configuration file by updating flags: ######## stack.yaml ###########


flags: 
  HsOpenSSL: 
          macports-openssl : true

##########################

make sure to care about indentation.

streamerd avatar Jun 03 '18 12:06 streamerd

Hard to say. I have no experience with Stack.

Does it work if you set homebrew-openssl flag instead of settings extra-*-dirs?

And could you run installation with verbose flag and attach logs so I could see what happens during configuration stage.

Btw, IMO it makes sense to add some kind of switching between 2 architectures: x86_64 and arm64 for M1, M2 if it can be done with some if platform(...). Or to change flags like homebrew-x86_64-openssl and homebrew-arm64-openssl or something similar.

bapcyk avatar Feb 03 '23 13:02 bapcyk