当我只要求`haskellPackages`的`库`时,为什么`nix-shell`失败并且缺少`test-suite`依赖?

时间:2017-01-04 17:12:23

标签: haskell cabal nix

可能有人知道为什么

$ nix-shell \
  -I nixpkgs=https://github.com/NixOS/nixpkgs-channels/archive/nixos-unstable.tar.gz \
  -p "haskellPackages.ghcWithPackages (p: [p.compose-ltr])" \
  --run ghci

失败
Configuring compose-ltr-0.2.3...

Setup: Encountered missing dependencies:
QuickCheck ==2.8.1, hspec ==2.2.0

builder for ‘/nix/store/pvmm9qcp9xpj5hw77nbfyfj4wxs49jl8-compose-ltr-0.2.3.drv’ failed with exit code 1
cannot build derivation ‘/nix/store/41znxh9qi408n9j63fqvixrlkaasrgkx-ghc-8.0.1-with-packages.drv’: 1 dependencies couldn't be built

(为分离和强调添加了空行)

我问,因为据我所知,我并没有要求nix构建/运行compose-ltr的单元测试,所以为什么它关心{{1} }和QuickCheck

是的,提到了QuickCheck和hspec in the .cabal file, but only for test-suite spec and not library

此外,我可以通过

解决这个问题
  1. 在我的hspec命令中进一步指定了一些内容,
  2. 更改nix-shell文件.cabal
  3. 中的内容
  4. compose-ltr个文件添加到.nix
  5. 我不会说我对compose-ltr有很多经验,所以欢迎详细回复。

1 个答案:

答案 0 :(得分:3)

替换

p.compose-ltr

(haskell.lib.dontCheck p.compose-ltr)

禁用此程序包的测试。总的来说,这应该包括在https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/haskell-modules/configuration-common.nix中(我认为GitHub上的公关会受到欢迎)