在我的.nix文件中,我有包foo和bar,bar取决于foo:
let
haskellPackages = reflex-platform.ghcjs.override {
overrides = self: super: {
foo =
pkgs.haskell.lib.dontCheck
(pkgs.haskell.lib.dontHaddock
(self.callCabal2nix "foo" ./foo { }));
bar = self.callCabal2nix "bar" ./bar { };
};
};
in
haskellPackages.bar
Run Code Online (Sandbox Code Playgroud)
如何禁用构建中包含的可执行文件foo?我只想建立图书馆。
我试过overrideCabal,但没有运气。这仍然构建foo可执行文件:
let
haskellPackages = reflex-platform.ghcjs.override {
overrides = self: super: {
foo =
pkgs.haskell.lib.overrideCabal
(pkgs.haskell.lib.dontCheck
(pkgs.haskell.lib.dontHaddock
(self.callCabal2nix "foo" ./foo { })));
(drv: { isExecutable = false; });
bar = self.callCabal2nix "bar" ./bar { };
};
};
in
haskellPackages.bar
Run Code Online (Sandbox Code Playgroud)
我可以用 GHC 而不是 GHCJS 重现同样的问题。
在您的示例中,您可以使用:
foo = pkgs.haskell.lib.compose.setBuildTarget "lib:foo" (...)
Run Code Online (Sandbox Code Playgroud)
有一些类似的功能可用:
pkgs.haskell.lib.compose.setBuildTargets
pkgs.haskell.lib.compose.setBuildTarget
pkgs.haskell.lib.setBuildTargets
pkgs.haskell.lib.setBuildTarget
Run Code Online (Sandbox Code Playgroud)