Comforse
Comforse

Reputation: 2066

Stack fails to build

I am trying to learn haskell here (don't ask why), and I am starting with a very simple code, that i even copied from github.

So the code is this:

module Example () where

import Network.HTTP

-- Non HTTPS

-- 1. Perform a basic HTTP get request and return the body
get :: String -> IO String
get url = simpleHTTP (getRequest url) >>= getResponseBody

-- 2. Get the response code
getCode :: String -> IO ResponseCode
getCode url = simpleHTTP req >>= getResponseCode
    where req = getRequest url

However, when I run stack build I get this:

slack-client-0.1.0.0: build
Preprocessing library slack-client-0.1.0.0...
[2 of 2] Compiling Example          ( src\Example.hs, .stack-work\dist\b7fec021\
build\Example.o )

D:\haskell\slack-client\src\Example.hs:3:1: error:
    Failed to load interface for `Network.HTTP'
    It is a member of the hidden package `HTTP-4000.3.3'.
    Perhaps you need to add `HTTP' to the build-depends in your .cabal file.
    Use -v to see a list of the files searched for.

--  While building package slack-client-0.1.0.0 using:
      C:\Users\Mihai\AppData\Roaming\stack\setup-exe-cache\x86_64-windows\setup-
Simple-Cabal-1.24.0.0-ghc-8.0.1.exe --builddir=.stack-work\dist\b7fec021 build l
ib:slack-client exe:slack-client-exe --ghc-options " -ddump-hi -ddump-to-file"
    Process exited with code: ExitFailure 1

This is my .cabal file:

name:                slack-client
version:             0.1.0.0
synopsis:            Initial project template from stack
description:         Please see README.md
homepage:            https://github.com/githubuser/slack-client#readme
license:             BSD3
license-file:        LICENSE
author:              Author name here
maintainer:          [email protected]
copyright:           2016 Author name here
category:            Web
build-type:          Simple
-- extra-source-files:
cabal-version:       >=1.10

library
  hs-source-dirs:      src
  exposed-modules:     Lib
  other-modules:       Example
  build-depends:       base >= 4.7 && < 5
  default-language:    Haskell2010

executable slack-client-exe
  hs-source-dirs:      app
  main-is:             Main.hs
  other-modules:       Example
  ghc-options:         -threaded -rtsopts -with-rtsopts=-N
  build-depends:       base
                     , HTTP
                     , HTTP-Simple
                     , slack-client
  default-language:    Haskell2010

test-suite slack-client-test
  type:                exitcode-stdio-1.0
  hs-source-dirs:      test
  main-is:             Spec.hs
  build-depends:       base
                     , HTTP-Simple
                     , slack-client
  ghc-options:         -threaded -rtsopts -with-rtsopts=-N
  default-language:    Haskell2010

source-repository head
  type:     git
  location: https://github.com/githubuser/slack-client

What am i doing wrong?

Upvotes: 1

Views: 567

Answers (1)

arrowd
arrowd

Reputation: 34401

If you want your `Example module to be a part of executable, add to this section

executable slack-client-exe
  hs-source-dirs:      app
  main-is:             Main.hs

this line: other-modules: Example.

If you want it to be a part of the library, change

library
  hs-source-dirs:      src
  exposed-modules:     Lib

to

library
  hs-source-dirs:      src
  exposed-modules:     Lib, Example

And take a look at cabal documentation.

Upvotes: 1

Related Questions