4

スタイリッシュなハスケルパッケージをハックからインストールしようとすると、比較的一貫して同じエラーが発生します。インストールは、コンジットのインストールに至るまで順調に進みましたが、正しくインストールすることはできませんでした。

エラーメッセージの末尾:

        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.

私が得る完全な端末出力は次のとおりです。

        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.
4

3 に答える 3

5

他の回答のいくつかで述べたように、これは gcc が少なくとも Xcode 5 以降の Clang に置き換えられたためです。

GHC は、c++ のようなマクロをサポートするために GCC のプリプロセッサに#something依存しており、Clang の動作がわずかに異なり、そのようなマクロを含む haskell ソースのコンパイルが失敗するようです。

この修正は、実際には Haskell Platform の Mac ページ ( https://www.haskell.org/platform/mac.html ) に目立つように表示されています。

これは、Clang のラッパーとして機能する単純な bash スクリプトで構成されています。

インストールするには:

  • https://www.haskell.org/platform/ghc-clang-wrapperに移動します。
  • command-s を押して、スクリプトをダウンロード フォルダーに保存します。
  • ターミナルで次の手順を実行してインストールします。

    cd ~/Downloads
    chmod +x ghc-clang-wrapper
    ./ghc-clang-wrapper
    
  • 次に、印刷された簡単な指示に従います。

それが完了したら、cabal install コマンドを再起動するだけで問題なく動作します。

于 2014-06-26T05:09:28.757 に答える
1

この問題は、回避策に従って作業を修正できます。

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

于 2014-05-22T04:11:13.937 に答える