Cabal无法在测试套件块中解析构建依赖

时间:2015-09-23 23:37:03

标签: haskell cabal haskell-stack

我正在尝试将测试添加到我正在处理的包中(我正在使用堆栈)。到目前为止,一切都在努力。我正在运行以下版本(因为我的ubuntu将获得最新版本):

cabal-install version 1.22.6.0
using version 1.22.4.0 of the Cabal library

Stack: Version 0.1.4.0, Git revision 3a665fe1bc52776041a1c25cc47734e691805b6c (1724 commits) X86_64

这是令人不快的部分:

Test-Suite test-one
  main-is: Test.hs
  type: exitcode-stdio-1.0
  hs-source-dirs: test
  build-depends: base >= 4.7 && < 5
               , scotty >= 0.10.2
               , scotty-login-session
               , text
               , wai
               , wai-extra
               , HUnit
               , HTTP-4000

这是堆栈/ cabal在尝试构建或测试时给出的错误:

Unable to parse cabal file <mypackage>.cabal: NoParse "build-depends" 44

该44是上面的构建依赖行。

这里发生了什么?我按照了Cabal用户指南,我的google-fu一无所获。 cabal文件的其余部分链接here以供参考。

如果有帮助,我的系统是ubuntu 14.04 LTS。

1 个答案:

答案 0 :(得分:2)

最后一行应该是:

                 , HTTP

而不是HTTP-4000。也许你想要, HTTP >= 4000

以下是有关该问题的更多信息......

这是Cabal库中用于解析包名称(link)

的代码
instance Text PackageName where
  disp (PackageName n) = Disp.text n
  parse = do
    ns <- Parse.sepBy1 component (Parse.char '-')
    return (PackageName (intercalate "-" ns))
    where
      component = do
        cs <- Parse.munch1 Char.isAlphaNum
        if all Char.isDigit cs then Parse.pfail else return cs
        -- each component must contain an alphabetic character, to avoid
        -- ambiguity in identifiers like foo-1 (the 1 is the version number).

请注意最后的评论。也许有一次build-depends:接受了语法name-version,例如aeson-0.10.0.0,后来改为要求使用关系运算符,例如aeson == 0.10.0.0

现在我们总是使用关系运算符,也许可以允许包名称包含全数字组件。

在任何情况下,foo-123x之类的东西都是有效的包名,因为第二个组件并非都是数字。