我想使用持续集成来测试我的 Haskell 库及其依赖项的不同版本。有没有一种简单的方法可以用 Hydra ( http://nixos.org/hydra ) 来完成这个任务?
一种解决方案是覆盖感兴趣的依赖项的版本,并将 Nixpkgs 版本用于其他依赖项。但是,我无法弄清楚如何覆盖一个 Haskell 包版本,同时确保使用覆盖的包调用所有其他 Haskell 包。
这是我尝试在release.nix
. 引用的 Nix 表达式是使用 cabal2nix 创建的。构建依赖json-assertions,依赖aeson,依赖mtl。由于不使用覆盖的 mtl 调用 aeson,因此表达式指定了 mtl 的两个版本。两个版本的 mtl 导致构建失败。
let pkgs = import <nixpkgs> {};
in {
example = pkgs.haskellPackages.cabal.mkDerivation (self: {
pname = "example";
version = "0.1.0.0";
isExecutable = true;
src = ./.;
buildDepends = [ (pkgs.haskellPackages.ghcWithPackages (self:
[ self.cabalInstall_1_18_0_3
(self.callPackage (import ./mtl_2_2.nix) {
transformers = self.callPackage (import ./transformers_0_4_2_0.nix) {};
})
(self.callPackage (import ./jsonAssertions_1_0_4.nix) {})
]))
];
});
}
另一种解决方案是使用公开可用的 Nix 表达式来兼容除 Nixpkgs 中的 Haskell 包集。不过,我还没有找到任何东西。
是否有任何在线项目使用 Hydra 来针对多个版本的依赖项测试 Haskell 包,我可以将其用作示例?