Error installing stylish-haskell on Mac OS X on Haskell Platform 2013.2.0.0

时光毁灭记忆、已成空白 提交于 2019-11-29 22:06:00

问题


I get the same error relatively consistently when trying to install the stylish-haskell package off of hackage. The install went swimmingly until it got to installing conduit, which doesn't come anywhere near installing correctly.

The ending of the error message:

        17 warnings and 2 errors generated.
        Failed to install conduit-1.0.8
        cabal: Error: some packages failed to install:
        conduit-1.0.8 failed during the building phase. The exception was:
        ExitFailure 1
        stylish-haskell-0.5.8.0 depends on conduit-1.0.8 which failed to install. 
        yaml-0.8.5.1 depends on conduit-1.0.8 which failed to install.

The full terminal output I get is:

        Configuring conduit-1.0.8...

        /var/folders/cn/67wph78d62qc1v_lm7z2mb980000gn/T/32054.c:1:12:
             warning: control reaches end of non-void function [-Wreturn-type]
        int foo() {}
                   ^
        1 warning generated.
        Building conduit-1.0.8...
        Preprocessing library conduit-1.0.8...

        Data/Conduit/Binary.hs:165:14:
             warning: missing terminating ' character [-Winvalid-pp-token]
                    let c' = c - S.length bs
                         ^

        Data/Conduit/Binary.hs:166:18:
             warning: missing terminating ' character [-Winvalid-pp-token]
                    assert (c' >= 0) $
                             ^

        Data/Conduit/Binary.hs:171:34:
             warning: missing terminating ' character [-Winvalid-pp-token]
                                pullLimited c'
                                             ^

        Data/Conduit/Binary.hs:281:62:
             warning: missing terminating ' character [-Winvalid-pp-token]
                    await >>= maybe (return $ L.fromChunks $ front []) go'
                                                                         ^

        Data/Conduit/Binary.hs:283:11:
             warning: missing terminating ' character [-Winvalid-pp-token]
                    go' bs =
                      ^

        Data/Conduit/Binary.hs:299:39:
             warning: missing terminating ' character [-Winvalid-pp-token]
                    await >>= maybe (return ()) go'
                                                  ^

        Data/Conduit/Binary.hs:301:11:
             warning: missing terminating ' character [-Winvalid-pp-token]
                    go' bs =
                      ^
        7 warnings generated.

        Data/Conduit/Internal.hs:79:47:
             warning: missing terminating ' character [-Winvalid-pp-token]
        -- * /i/ is the type of values for this @Pipe@'s input stream.
                                                      ^

        Data/Conduit/Internal.hs:81:47:
             warning: missing terminating ' character [-Winvalid-pp-token]
        -- * /o/ is the type of values for this @Pipe@'s output stream.
                                                      ^

        Data/Conduit/Internal.hs:152:64:
             warning: \u used with no following hex digits; treating as '\' followed by identifier [-Wunicode]
                local f (NeedInput p c) = NeedInput (\i -> local f (p i)) (\u -> local f (c u))
                                                                           ^

        Data/Conduit/Internal.hs:170:62:
             warning: \u used with no following hex digits; treating as '\' followed by identifier [-Wunicode]
                listen (NeedInput p c) = NeedInput (\i -> listen (p i)) (\u -> listen (c u))
                                                                         ^

        Data/Conduit/Internal.hs:175:26:
             warning: missing terminating ' character [-Winvalid-pp-token]
                     return $ do (x,w') <- listen p
                                     ^

        Data/Conduit/Internal.hs:176:46:
             warning: missing terminating ' character [-Winvalid-pp-token]
                                 return (x, w `mappend` w')
                                                         ^

        Data/Conduit/Internal.hs:180:58:
             warning: \u used with no following hex digits; treating as '\' followed by identifier [-Wunicode]
                pass (NeedInput p c) = NeedInput (\i -> pass (p i)) (\u -> pass (c u))
                                                                     ^

        Data/Conduit/Internal.hs:197:74:
             warning: \u used with no following hex digits; treating as '\' followed by identifier [-Wunicode]
                catchError (NeedInput p c) f = NeedInput (\i -> catchError (p i) f) (\u -> catchError (c u) f)
                                                                                     ^

        Data/Conduit/Internal.hs:306:50:
             warning: missing terminating ' character [-Winvalid-pp-token]
        awaitForever :: Monad m => (i -> Pipe l i o r m r') -> Pipe l i o r m r
                                                         ^

        Data/Conduit/Internal.hs:338:4:
             error: invalid preprocessing directive
              #-}
               ^

        Data/Conduit/Internal.hs:543:13:
             warning: missing terminating ' character [-Winvalid-pp-token]
                    pipe' <- mpipe
                        ^

        Data/Conduit/Internal.hs:544:18:
             warning: missing terminating ' character [-Winvalid-pp-token]
                    case pipe' of
                             ^

        Data/Conduit/Internal.hs:546:29:
             warning: missing terminating ' character [-Winvalid-pp-token]
                        _ -> return pipe'
                                        ^

        Data/Conduit/Internal.hs:581:83:
             warning: missing terminating ' character [-Winvalid-pp-token]
        mapInput f f' (NeedInput p c)    = NeedInput (mapInput f f' . p . f) (mapInput f f' . c)
                                                                                          ^

        Data/Conduit/Internal.hs:584:82:
             warning: missing terminating ' character [-Winvalid-pp-token]
        mapInput f f' (Leftover p i)     = maybe id (flip Leftover) (f' i) $ mapInput f f' p
                                                                                         ^

        Data/Conduit/Internal.hs:605:4:
             error: invalid preprocessing directive
              #-}
               ^

        Data/Conduit/Internal.hs:650:35:
             warning: \u used with no following hex digits; treating as '\' followed by identifier [-Wunicode]
                    loop = awaitE >>= either (\u -> return (u, r)) (\_ -> loop)
                                              ^

        Data/Conduit/Internal.hs:671:14:
             warning: missing terminating ' character [-Winvalid-pp-token]
                let final' = do
                         ^

        Data/Conduit/Internal.hs:674:58:
             warning: missing terminating ' character [-Winvalid-pp-token]
                return (liftIO (I.writeIORef ref False) >> src, final')
                                                                     ^
        17 warnings and 2 errors generated.
        Failed to install conduit-1.0.8
        cabal: Error: some packages failed to install:
        conduit-1.0.8 failed during the building phase. The exception was:
        ExitFailure 1
        stylish-haskell-0.5.8.0 depends on conduit-1.0.8 which failed to install.
        yaml-0.8.5.1 depends on conduit-1.0.8 which failed to install.

回答1:


I'm not an expert here, but I think this is caused by Mavericks replacing the standard gcc with a version of clang wrapped with a gcc-semi-compatible wrapper. It make GHC choke from time to time. You can fix it by editing /usr/local/lib/ghc-7.6.3/settings so that the "C compiler command" entry points to a valid gcc.

For instance, I installed gcc 4.8 from Homebrew and then changed the settings line to

 ("C compiler command", "/usr/local/bin/gcc-4.9")



回答2:


As mentioned in some of the other answers this is due to gcc being replaced by Clang starting with at least Xcode 5.

GHC leans on GCC's preprocessor in order to support c++ like #something macros and it looks like Clang behaves slightly differently which causes compilation of haskell sources containing such macros to fail.

The fix is actually displayed prominently on the Haskell Platform's Mac page: https://www.haskell.org/platform/mac.html

It consists of a simple bash script which acts as a wrapper around Clang.

To install it:

  • Go to https://www.haskell.org/platform/ghc-clang-wrapper.
  • Press command-s to save the script in your download folder.
  • Install it by running the following instructions in a terminal:

    cd ~/Downloads
    chmod +x ghc-clang-wrapper
    ./ghc-clang-wrapper
    
  • Then follow the simple instructions it prints.

Once that's done, simply relaunch the cabal install command and it will run fine.




回答3:


This issue can fix work by following workaround.

https://github.com/snoyberg/conduit/issues/147



来源:https://stackoverflow.com/questions/19851315/error-installing-stylish-haskell-on-mac-os-x-on-haskell-platform-2013-2-0-0

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!