给cabal简单构建系统一个自定义构建钩子,为什么有两个PackageDescription结构?

时间:2011-12-12 22:54:04

标签: haskell cabal

可以使用以下形式覆盖cabal的简单构建系统的Setup.hs默认构建挂钩:

main = defaultMainWithHooks simpleUserHooks { buildHook = myBuildHook }

哪里

myBuildHook :: PackageDescription -> LocalBuildInfo -> UserHooks -> BuildFlags -> IO ()

因此我们同时获得PackageDescriptionLocalBuildInfo,但如果我们look at the latter,我们可以看到它包含前者,记录名为localPkgDescr

鉴于此,我问:

  1. 我们有两个PackageDescription的原因吗?
  2. 如果我们没有覆盖buildHookPackageDescription会被使用?

1 个答案:

答案 0 :(得分:2)

似乎第一个PackageDescription基本上代表原始<pkg>.cabal文件,而包装PackageDescription包含“已解决”的包描述,其中已删除标记,并且所有条件都包含已经解决了。

我无法更仔细地检查同时使用这两种结构的代码,所以我不是100%肯定这种行为。