brendanhay / gogol

A comprehensive Google Services SDK for Haskell.
Other
282 stars 105 forks source link

Trouble installing gogol #117

Closed ghost closed 6 years ago

ghost commented 6 years ago

Hi, i'm relatively new to haskell and programming and I've been having some trouble installing gogol-core. I'm using a windows 10, 64 bit computer and I am trying to use cabal to install this but whenever I try to install it, it spits out an error about an Ambiguous occurrence 'Stream'. if anyone could help me with this it would be much appreciated.

here is what cabal says when i try to install.


Resolving dependencies...
Downloading gogol-core-0.1.0...
Configuring gogol-core-0.1.0...
Building gogol-core-0.1.0...
Failed to install gogol-core-0.1.0
Build log ( C:\Users\Me\AppData\Roaming\cabal\logs\ghc-8.4.3\gogol-core-0.1.0-LibGpY92Ita9WYcRbE1IQw.log ):
Preprocessing library for gogol-core-0.1.0..
Building library for gogol-core-0.1.0..
[1 of 6] Compiling Network.Google.Data.JSON ( src\Network\Google\Data\JSON.hs, dist\build\Network\Google\Data\JSON.o )
[2 of 6] Compiling Network.Google.Data.Base64 ( src\Network\Google\Data\Base64.hs, dist\build\Network\Google\Data\Base64.o )
[3 of 6] Compiling Network.Google.Data.Numeric ( src\Network\Google\Data\Numeric.hs, dist\build\Network\Google\Data\Numeric.o )
[4 of 6] Compiling Network.Google.Data.Time ( src\Network\Google\Data\Time.hs, dist\build\Network\Google\Data\Time.o )
[5 of 6] Compiling Network.Google.Types ( src\Network\Google\Types.hs, dist\build\Network\Google\Types.o )

src\Network\Google\Types.hs:179:15: error:
    Not in scope: type constructor or class `ResumableSource'
    |
179 | type Stream = ResumableSource (ResourceT IO) ByteString
    |               ^^^^^^^^^^^^^^^

src\Network\Google\Types.hs:341:25: error:
    Ambiguous occurrence `Stream'
    It could refer to either `Servant.API.Stream',
                             imported from `Servant.API' at src\Network\Google\Types.hs:56:1-28
                             (and originally defined in `Servant.API.Stream')
                          or `Network.Google.Types.Stream',
                             defined at src\Network\Google\Types.hs:179:1
    |
341 |     , _cliResponse :: !(Stream -> ResourceT IO (Either (String, LBS.ByteString) a))
    |                         ^^^^^^

src\Network\Google\Types.hs:363:12: error:
    Ambiguous occurrence `Stream'
    It could refer to either `Servant.API.Stream',
                             imported from `Servant.API' at src\Network\Google\Types.hs:56:1-28
                             (and originally defined in `Servant.API.Stream')
                          or `Network.Google.Types.Stream',
                             defined at src\Network\Google\Types.hs:179:1
    |
363 | client :: (Stream -> ResourceT IO (Either (String, LBS.ByteString) a))
    |            ^^^^^^

src\Network\Google\Types.hs:399:19: error:
    Ambiguous occurrence `Stream'
    It could refer to either `Servant.API.Stream',
                             imported from `Servant.API' at src\Network\Google\Types.hs:56:1-28
                             (and originally defined in `Servant.API.Stream')
                          or `Network.Google.Types.Stream',
                             defined at src\Network\Google\Types.hs:179:1
    |
399 |                -> Stream
    |                   ^^^^^^

src\Network\Google\Types.hs:402:33: error:
    Ambiguous occurrence `Stream'
    It could refer to either `Servant.API.Stream',
                             imported from `Servant.API' at src\Network\Google\Types.hs:56:1-28
                             (and originally defined in `Servant.API.Stream')
                          or `Network.Google.Types.Stream',
                             defined at src\Network\Google\Types.hs:179:1
    |
402 | instance FromStream OctetStream Stream where
    |                                 ^^^^^^

src\Network\Google\Types.hs:602:12: error:
    Ambiguous occurrence `Stream'
    It could refer to either `Servant.API.Stream',
                             imported from `Servant.API' at src\Network\Google\Types.hs:56:1-28
                             (and originally defined in `Servant.API.Stream')
                          or `Network.Google.Types.Stream',
                             defined at src\Network\Google\Types.hs:179:1
    |
602 | sinkLBS :: Stream -> ResourceT IO LBS.ByteString
    |            ^^^^^^
cabal: Leaving directory 'C:\Users\Me\AppData\Local\Temp\cabal-tmp-6504\gogol-core-0.1.0'
cabal: Error: some packages failed to install:
gogol-core-0.1.0-LibGpY92Ita9WYcRbE1IQw failed during the building phase. The
exception was:
ExitFailure 1
cdsmith commented 6 years ago

You're building an old version of gogol, which isn't compatible with servant versions newer than 0.12. The question, then, is why you're trying to install such an old version of gogol-core.

cdsmith commented 6 years ago

For the record, the error you're running into was fixed in https://github.com/brendanhay/gogol/commit/e31ece9b325f14cfae54523ad6c15c84b06d3715

ghost commented 6 years ago

Hi, I tried reinstalling all of Haskell and cabal when i couldn't get it to work to see if it would fix it but still get the same errors. for the record i made sure to update cabal's list and made sure i had the lastest versions of gogol-core and servant.

* servant Synopsis: A family of combinators for defining webservices APIs Default available version: 0.14.1 Installed versions: 0.14.1 Homepage: http://haskell-servant.readthedocs.org/ License: BSD3

the code below is the error it spat out but from what i can tell it's the same issue as above


Build log ( C:\Users\Me\AppData\Roaming\cabal\logs\ghc-8.4.3\gogol-core-0.3.0-7AcN21yLdDBIpEf1MHXftW.log ):
Preprocessing library for gogol-core-0.3.0..
Building library for gogol-core-0.3.0..
[1 of 6] Compiling Network.Google.Data.JSON ( src\Network\Google\Data\JSON.hs, dist\build\Network\Google\Data\JSON.o )
[2 of 6] Compiling Network.Google.Data.Bytes ( src\Network\Google\Data\Bytes.hs, dist\build\Network\Google\Data\Bytes.o )
[3 of 6] Compiling Network.Google.Data.Numeric ( src\Network\Google\Data\Numeric.hs, dist\build\Network\Google\Data\Numeric.o )
[4 of 6] Compiling Network.Google.Data.Time ( src\Network\Google\Data\Time.hs, dist\build\Network\Google\Data\Time.o )
[5 of 6] Compiling Network.Google.Types ( src\Network\Google\Types.hs, dist\build\Network\Google\Types.o )

src\Network\Google\Types.hs:179:15: error:
    Not in scope: type constructor or class `ResumableSource'
    |
179 | type Stream = ResumableSource (ResourceT IO) ByteString
    |               ^^^^^^^^^^^^^^^

src\Network\Google\Types.hs:341:25: error:
    Ambiguous occurrence `Stream'
    It could refer to either `Servant.API.Stream',
                             imported from `Servant.API' at src\Network\Google\Types.hs:56:1-28
                             (and originally defined in `Servant.API.Stream')
                          or `Network.Google.Types.Stream',
                             defined at src\Network\Google\Types.hs:179:1
    |
341 |     , _cliResponse :: !(Stream -> ResourceT IO (Either (String, LBS.ByteString) a))
    |                         ^^^^^^

src\Network\Google\Types.hs:363:12: error:
    Ambiguous occurrence `Stream'
    It could refer to either `Servant.API.Stream',
                             imported from `Servant.API' at src\Network\Google\Types.hs:56:1-28
                             (and originally defined in `Servant.API.Stream')
                          or `Network.Google.Types.Stream',
                             defined at src\Network\Google\Types.hs:179:1
    |
363 | client :: (Stream -> ResourceT IO (Either (String, LBS.ByteString) a))
    |            ^^^^^^

src\Network\Google\Types.hs:399:19: error:
    Ambiguous occurrence `Stream'
    It could refer to either `Servant.API.Stream',
                             imported from `Servant.API' at src\Network\Google\Types.hs:56:1-28
                             (and originally defined in `Servant.API.Stream')
                          or `Network.Google.Types.Stream',
                             defined at src\Network\Google\Types.hs:179:1
    |
399 |                -> Stream
    |                   ^^^^^^

src\Network\Google\Types.hs:402:33: error:
    Ambiguous occurrence `Stream'
    It could refer to either `Servant.API.Stream',
                             imported from `Servant.API' at src\Network\Google\Types.hs:56:1-28
                             (and originally defined in `Servant.API.Stream')
                          or `Network.Google.Types.Stream',
                             defined at src\Network\Google\Types.hs:179:1
    |
402 | instance FromStream OctetStream Stream where
    |                                 ^^^^^^

src\Network\Google\Types.hs:602:12: error:
    Ambiguous occurrence `Stream'
    It could refer to either `Servant.API.Stream',
                             imported from `Servant.API' at src\Network\Google\Types.hs:56:1-28
                             (and originally defined in `Servant.API.Stream')
                          or `Network.Google.Types.Stream',
                             defined at src\Network\Google\Types.hs:179:1
    |
602 | sinkLBS :: Stream -> ResourceT IO LBS.ByteString
    |            ^^^^^^
cabal: Leaving directory 'C:\Users\Me\AppData\Local\Temp\cabal-tmp-14728\gogol-core-0.3.0'
cabal: Error: some packages failed to install:
gogol-core-0.3.0-7AcN21yLdDBIpEf1MHXftW failed during the building phase. The
exception was: ExitFailure 1
cdsmith commented 6 years ago

Oh yes, I see. Sadly, it doesn't look like there's been a Hackage release since https://github.com/brendanhay/gogol/commit/e31ece9b325f14cfae54523ad6c15c84b06d3715 You also need the uncommitted changes from https://github.com/brendanhay/gogol/pull/105.

For now, if you need to use gogol, your options are to either limit conduit and servant to older versions, or to fork gogol on github, apply the patches in that pull request, and build your own.

ghost commented 6 years ago

Hi, after following your advice and patching the latest version of gogol I've downloaded with #105 and #112 I've managed to successfully install gogol-core and gogol-gmail. Thank you!