haskell.nix/test/stack-simple/stack-simple.nix
Hamish Mackenzie 674f5b0a3d
Better support for source-repository-packages, only include planned components and pick latest packages (#1166)
This change updates to the latest `nix-tools` to get the following fixes (there are 3 PRs in nix-tools, but just the one in haskell.nix to avoid having to update the materialized files multiple times):

## Better support for source repository packages

* https://github.com/input-output-hk/nix-tools/pull/107

Currently these are replaced by the `cabalProject` functions with regular `packages:` before running cabal configure.  Cabal does not treat these the same (the setting of `tests:` and `benchmarks:` in the `cabal.project` file):

* The plan found by `cabalProject` may not match the one used when running `cabal`.
* The performance of the solver may not be consistent with running `cabal`.

This change replaces `source-repository-package` with another `source-repository-package` pointing at a minimal git repo.

## Only include planned components

* https://github.com/input-output-hk/nix-tools/pull/108

Only the components in the `plan.json` are now included in the haskell.nix cabal projects.  This avoids missing dependencies attempting to build components that were not in the plan.  Should fix #993.

## Pick latest packages

* https://github.com/input-output-hk/nix-tools/pull/109

When the same package occurs more than once in a `plan.json` file (perhaps because it is needed both by the project itself and by one of the `setup` dependencies or `build-tool-dependencies` of the project) the latest version will now be the one picked by haskell.nix. This is a work around for a common issue with `cabal-doctest` when cross compiling to windows (an old version of Win32 is used even if a newer one was required by the projects `constraints`).
2021-07-23 14:27:56 +12:00

52 lines
1.5 KiB
Nix

{ system
, compiler
, flags
, pkgs
, hsPkgs
, pkgconfPkgs
, errorHandler
, config
, ... }:
({
flags = {};
package = {
specVersion = "1.12";
identifier = { name = "stack-simple"; version = "0.1.0.0"; };
license = "BSD-3-Clause";
copyright = "2019 Author name here";
maintainer = "example@example.com";
author = "Author name here";
homepage = "https://github.com/githubuser/stack-simple#readme";
url = "";
synopsis = "";
description = "Please see the README on GitHub at <https://github.com/githubuser/stack-simple#readme>";
buildType = "Simple";
isLocal = true;
};
components = {
"library" = {
depends = [ (hsPkgs."base" or (errorHandler.buildDepError "base")) ];
buildable = true;
};
exes = {
"stack-simple-exe" = {
depends = [
(hsPkgs."base" or (errorHandler.buildDepError "base"))
(hsPkgs."stack-simple" or (errorHandler.buildDepError "stack-simple"))
];
buildable = true;
};
};
tests = {
"stack-simple-test" = {
depends = [
(hsPkgs."base" or (errorHandler.buildDepError "base"))
(hsPkgs."stack-simple" or (errorHandler.buildDepError "stack-simple"))
];
buildable = true;
};
};
};
} // rec { src = (pkgs.lib).mkDefault ./.; }) // {
cabal-generator = "hpack";
}