on iko/ghcjs-patch-master help sign in
shellFor: Fix bug where packages were not excluded from the env (#285)
686fa37Rodney Lorrimar
builder/shell-for.nix+8−5
@@ -20,11 +20,13 @@ let
20 then "ghc-shell-for-${(lib.head selected).identifier.name}"
20 then "ghc-shell-for-${(lib.head selected).identifier.name}"
21 else "ghc-shell-for-packages";
21 else "ghc-shell-for-packages";
22
22
23+ # Removes the selected packages from a list of packages.
23 # If `packages = [ a b ]` and `a` depends on `b`, don't build `b`,
24 # If `packages = [ a b ]` and `a` depends on `b`, don't build `b`,
24− # because cabal will end up ignoring that built version, assuming
25+ # because cabal will end up ignoring that built version;
25− # new-style commands.
26− packageInputs = lib.filter
26+ removeSelected = lib.filter
27− (input: lib.all (cfg: input.identifier != cfg.identifier) selected)
27+ (input: lib.all (cfg: (input.identifier or null) != cfg.identifier) selected);
28+
29+ packageInputs = removeSelected
28 (lib.concatMap (cfg: cfg.depends) selectedConfigs
30 (lib.concatMap (cfg: cfg.depends) selectedConfigs
29 ++ additionalSelected
31 ++ additionalSelected
30 ++ lib.concatMap (cfg: cfg.setup.config.depends or []) selected
32 ++ lib.concatMap (cfg: cfg.setup.config.depends or []) selected
@@ -33,7 +35,8 @@ let
33 # Add the system libraries and build tools of the selected haskell
35 # Add the system libraries and build tools of the selected haskell
34 # packages to the shell.
36 # packages to the shell.
35 systemInputs = lib.concatMap (p: p.components.all.buildInputs) selected;
37 systemInputs = lib.concatMap (p: p.components.all.buildInputs) selected;
38+ nativeBuildInputs = removeSelected
36− nativeBuildInputs = lib.concatMap (p: p.components.all.executableToolDepends) selected;
39+ (lib.concatMap (p: p.components.all.executableToolDepends) selected);
37
40
38 # Set up a "dummy" component to use with ghcForComponent.
41 # Set up a "dummy" component to use with ghcForComponent.
39 component = {
42 component = {
test/builder-haddock/.plan.nix/test-haddock.nix+50−2
@@ -1,4 +1,43 @@
1+let
2+ buildDepError = pkg:
3+ builtins.throw ''
4+ The Haskell package set does not contain the package: ${pkg} (build dependency).
5+
6+ If you are using Stackage, make sure that you are using a snapshot that contains the package. Otherwise you may need to update the Hackage snapshot you are using, usually by updating haskell.nix.
7+ '';
8+ sysDepError = pkg:
9+ builtins.throw ''
10+ The Nixpkgs package set does not contain the package: ${pkg} (system dependency).
11+
12+ You may need to augment the system package mapping in haskell.nix so that it can be found.
13+ '';
14+ pkgConfDepError = pkg:
15+ builtins.throw ''
16+ The pkg-conf packages does not contain the package: ${pkg} (pkg-conf dependency).
17+
18+ You may need to augment the pkg-conf package mapping in haskell.nix so that it can be found.
19+ '';
20+ exeDepError = pkg:
21+ builtins.throw ''
22+ The local executable components do not include the component: ${pkg} (executable dependency).
23+ '';
24+ legacyExeDepError = pkg:
25+ builtins.throw ''
26+ The Haskell package set does not contain the package: ${pkg} (executable dependency).
27+
28+ If you are using Stackage, make sure that you are using a snapshot that contains the package. Otherwise you may need to update the Hackage snapshot you are using, usually by updating haskell.nix.
29+ '';
30+ buildToolDepError = pkg:
31+ builtins.throw ''
32+ Neither the Haskell package set or the Nixpkgs package set contain the package: ${pkg} (build tool dependency).
33+
34+ If this is a system dependency:
35+ You may need to augment the system package mapping in haskell.nix so that it can be found.
36+
37+ If this is a Haskell dependency:
38+ If you are using Stackage, make sure that you are using a snapshot that contains the package. Otherwise you may need to update the Hackage snapshot you are using, usually by updating haskell.nix.
39+ '';
1−{ system, compiler, flags, pkgs, hsPkgs, pkgconfPkgs, ... }:
40+in { system, compiler, flags, pkgs, hsPkgs, pkgconfPkgs, ... }:
2 {
41 {
3 flags = {};
42 flags = {};
4 package = {
43 package = {
@@ -13,6 +52,15 @@
13 synopsis = "";
52 synopsis = "";
14 description = "";
53 description = "";
15 buildType = "Simple";
54 buildType = "Simple";
55+ isLocal = true;
56+ };
57+ components = {
58+ "library" = {
59+ depends = [
60+ (hsPkgs."base" or (buildDepError "base"))
61+ (hsPkgs."stm" or (buildDepError "stm"))
62+ ];
63+ buildable = true;
64+ };
16 };
65 };
17− components = { "library" = { depends = [ (hsPkgs.base) (hsPkgs.stm) ]; }; };
18 } // rec { src = (pkgs.lib).mkDefault ../.; }
66 } // rec { src = (pkgs.lib).mkDefault ../.; }
test/builder-haddock/pkgs.nix+14−10
@@ -2,26 +2,30 @@
2 pkgs = hackage:
2 pkgs = hackage:
3 {
3 {
4 packages = {
4 packages = {
5− "ghc-prim".revision = (((hackage."ghc-prim")."0.5.2.0").revisions).default;
5+ "ghc-prim".revision = (((hackage."ghc-prim")."0.5.3").revisions).default;
6− "stm".revision = (((hackage."stm")."2.4.5.1").revisions).default;
6+ "stm".revision = (((hackage."stm")."2.5.0.0").revisions).default;
7 "rts".revision = (((hackage."rts")."1.0").revisions).default;
7 "rts".revision = (((hackage."rts")."1.0").revisions).default;
8− "base".revision = (((hackage."base")."4.11.1.0").revisions).default;
8+ "base".revision = (((hackage."base")."4.12.0.0").revisions).default;
9− "array".revision = (((hackage."array")."0.5.2.0").revisions).default;
9+ "array".revision = (((hackage."array")."0.5.3.0").revisions).default;
10 "integer-gmp".revision = (((hackage."integer-gmp")."1.0.2.0").revisions).default;
10 "integer-gmp".revision = (((hackage."integer-gmp")."1.0.2.0").revisions).default;
11 };
11 };
12 compiler = {
12 compiler = {
13− version = "8.4.4";
13+ version = "8.6.5";
14− nix-name = "ghc844";
14+ nix-name = "ghc865";
15 packages = {
15 packages = {
16− "ghc-prim" = "0.5.2.0";
16+ "ghc-prim" = "0.5.3";
17− "stm" = "2.4.5.1";
17+ "stm" = "2.5.0.0";
18 "rts" = "1.0";
18 "rts" = "1.0";
19− "base" = "4.11.1.0";
19+ "base" = "4.12.0.0";
20− "array" = "0.5.2.0";
20+ "array" = "0.5.3.0";
21 "integer-gmp" = "1.0.2.0";
21 "integer-gmp" = "1.0.2.0";
22 };
22 };
23 };
23 };
24 };
24 };
25 extras = hackage:
25 extras = hackage:
26 { packages = { test-haddock = ./.plan.nix/test-haddock.nix; }; };
26 { packages = { test-haddock = ./.plan.nix/test-haddock.nix; }; };
27+ modules = [
28+ ({ lib, ... }:
29+ { packages = { "test-haddock" = { flags = {}; }; }; })
30+ ];
27 }
31 }
test/builder-haddock/test-haddock.cabal+1−1
@@ -9,7 +9,7 @@ library
9 exposed-modules: TestHaddock
9 exposed-modules: TestHaddock
10 other-modules: Paths_test_haddock
10 other-modules: Paths_test_haddock
11 -- other-extensions:
11 -- other-extensions:
12− build-depends: base ^>=4.11.1.0
12+ build-depends: base >=4.11.1.0
13 , stm
13 , stm
14 -- hs-source-dirs:
14 -- hs-source-dirs:
15 default-language: Haskell2010
15 default-language: Haskell2010
test/builder-haddock/test-haddock.nix+49−2
@@ -1,4 +1,43 @@
1+let
2+ buildDepError = pkg:
3+ builtins.throw ''
4+ The Haskell package set does not contain the package: ${pkg} (build dependency).
5+
6+ If you are using Stackage, make sure that you are using a snapshot that contains the package. Otherwise you may need to update the Hackage snapshot you are using, usually by updating haskell.nix.
7+ '';
8+ sysDepError = pkg:
9+ builtins.throw ''
10+ The Nixpkgs package set does not contain the package: ${pkg} (system dependency).
11+
12+ You may need to augment the system package mapping in haskell.nix so that it can be found.
13+ '';
14+ pkgConfDepError = pkg:
15+ builtins.throw ''
16+ The pkg-conf packages does not contain the package: ${pkg} (pkg-conf dependency).
17+
18+ You may need to augment the pkg-conf package mapping in haskell.nix so that it can be found.
19+ '';
20+ exeDepError = pkg:
21+ builtins.throw ''
22+ The local executable components do not include the component: ${pkg} (executable dependency).
23+ '';
24+ legacyExeDepError = pkg:
25+ builtins.throw ''
26+ The Haskell package set does not contain the package: ${pkg} (executable dependency).
27+
28+ If you are using Stackage, make sure that you are using a snapshot that contains the package. Otherwise you may need to update the Hackage snapshot you are using, usually by updating haskell.nix.
29+ '';
30+ buildToolDepError = pkg:
31+ builtins.throw ''
32+ Neither the Haskell package set or the Nixpkgs package set contain the package: ${pkg} (build tool dependency).
33+
34+ If this is a system dependency:
35+ You may need to augment the system package mapping in haskell.nix so that it can be found.
36+
37+ If this is a Haskell dependency:
38+ If you are using Stackage, make sure that you are using a snapshot that contains the package. Otherwise you may need to update the Hackage snapshot you are using, usually by updating haskell.nix.
39+ '';
1−{ system, compiler, flags, pkgs, hsPkgs, pkgconfPkgs, ... }:
40+in { system, compiler, flags, pkgs, hsPkgs, pkgconfPkgs, ... }:
2 {
41 {
3 flags = {};
42 flags = {};
4 package = {
43 package = {
@@ -14,5 +53,13 @@
14 description = "";
53 description = "";
15 buildType = "Simple";
54 buildType = "Simple";
16 };
55 };
17− components = { "library" = { depends = [ (hsPkgs.base) (hsPkgs.stm) ]; }; };
56+ components = {
57+ "library" = {
58+ depends = [
59+ (hsPkgs."base" or (buildDepError "base"))
60+ (hsPkgs."stm" or (buildDepError "stm"))
61+ ];
62+ buildable = true;
63+ };
64+ };
18 } // rec { src = (pkgs.lib).mkDefault ./.; }
65 } // rec { src = (pkgs.lib).mkDefault ./.; }
test/cabal-22/.plan.nix/project.nix+68−6
@@ -1,4 +1,43 @@
1+let
2+ buildDepError = pkg:
3+ builtins.throw ''
4+ The Haskell package set does not contain the package: ${pkg} (build dependency).
5+
6+ If you are using Stackage, make sure that you are using a snapshot that contains the package. Otherwise you may need to update the Hackage snapshot you are using, usually by updating haskell.nix.
7+ '';
8+ sysDepError = pkg:
9+ builtins.throw ''
10+ The Nixpkgs package set does not contain the package: ${pkg} (system dependency).
11+
12+ You may need to augment the system package mapping in haskell.nix so that it can be found.
13+ '';
14+ pkgConfDepError = pkg:
15+ builtins.throw ''
16+ The pkg-conf packages does not contain the package: ${pkg} (pkg-conf dependency).
17+
18+ You may need to augment the pkg-conf package mapping in haskell.nix so that it can be found.
19+ '';
20+ exeDepError = pkg:
21+ builtins.throw ''
22+ The local executable components do not include the component: ${pkg} (executable dependency).
23+ '';
24+ legacyExeDepError = pkg:
25+ builtins.throw ''
26+ The Haskell package set does not contain the package: ${pkg} (executable dependency).
27+
28+ If you are using Stackage, make sure that you are using a snapshot that contains the package. Otherwise you may need to update the Hackage snapshot you are using, usually by updating haskell.nix.
29+ '';
30+ buildToolDepError = pkg:
31+ builtins.throw ''
32+ Neither the Haskell package set or the Nixpkgs package set contain the package: ${pkg} (build tool dependency).
33+
34+ If this is a system dependency:
35+ You may need to augment the system package mapping in haskell.nix so that it can be found.
36+
37+ If this is a Haskell dependency:
38+ If you are using Stackage, make sure that you are using a snapshot that contains the package. Otherwise you may need to update the Hackage snapshot you are using, usually by updating haskell.nix.
39+ '';
1−{ system, compiler, flags, pkgs, hsPkgs, pkgconfPkgs, ... }:
40+in { system, compiler, flags, pkgs, hsPkgs, pkgconfPkgs, ... }:
2 {
41 {
3 flags = {};
42 flags = {};
4 package = {
43 package = {
@@ -13,20 +52,43 @@
13 synopsis = "";
52 synopsis = "";
14 description = "";
53 description = "";
15 buildType = "Simple";
54 buildType = "Simple";
55+ isLocal = true;
16 };
56 };
17 components = {
57 components = {
58+ "library" = {
18− "library" = { depends = [ (hsPkgs.base) ]; };
59+ depends = [ (hsPkgs."base" or (buildDepError "base")) ];
19− exes = { "project" = { depends = [ (hsPkgs.base) (hsPkgs.project) ]; }; };
60+ buildable = true;
61+ };
62+ exes = {
63+ "project" = {
64+ depends = [
65+ (hsPkgs."base" or (buildDepError "base"))
66+ (hsPkgs."project" or (buildDepError "project"))
67+ ];
68+ buildable = true;
69+ };
70+ };
20 tests = {
71 tests = {
21 "unit" = {
72 "unit" = {
22− depends = [ (hsPkgs.base) (hsPkgs.project) (hsPkgs.hspec) ];
73+ depends = [
74+ (hsPkgs."base" or (buildDepError "base"))
75+ (hsPkgs."project" or (buildDepError "project"))
76+ (hsPkgs."hspec" or (buildDepError "hspec"))
77+ ];
23 build-tools = [
78 build-tools = [
24− (hsPkgs.buildPackages.hspec-discover or (pkgs.buildPackages.hspec-discover))
79+ (hsPkgs.buildPackages.hspec-discover or (pkgs.buildPackages.hspec-discover or (buildToolDepError "hspec-discover")))
25 ];
80 ];
81+ buildable = true;
26 };
82 };
27 };
83 };
28 benchmarks = {
84 benchmarks = {
29− "project-bench" = { depends = [ (hsPkgs.base) (hsPkgs.project) ]; };
85+ "project-bench" = {
86+ depends = [
87+ (hsPkgs."base" or (buildDepError "base"))
88+ (hsPkgs."project" or (buildDepError "project"))
89+ ];
90+ buildable = true;
91+ };
30 };
92 };
31 };
93 };
32 } // rec { src = (pkgs.lib).mkDefault ../.; }
94 } // rec { src = (pkgs.lib).mkDefault ../.; }
test/cabal-22/pkgs.nix+33−26
@@ -3,65 +3,72 @@
3 {
3 {
4 packages = {
4 packages = {
5 "tf-random".revision = (((hackage."tf-random")."0.5").revisions).default;
5 "tf-random".revision = (((hackage."tf-random")."0.5").revisions).default;
6− "ghc-prim".revision = (((hackage."ghc-prim")."0.5.2.0").revisions).default;
6+ "ghc-prim".revision = (((hackage."ghc-prim")."0.5.3").revisions).default;
7− "stm".revision = (((hackage."stm")."2.4.5.1").revisions).default;
7+ "stm".revision = (((hackage."stm")."2.5.0.0").revisions).default;
8 "unix".revision = (((hackage."unix")."2.7.2.2").revisions).default;
8 "unix".revision = (((hackage."unix")."2.7.2.2").revisions).default;
9 "rts".revision = (((hackage."rts")."1.0").revisions).default;
9 "rts".revision = (((hackage."rts")."1.0").revisions).default;
10 "clock".revision = (((hackage."clock")."0.8").revisions).default;
10 "clock".revision = (((hackage."clock")."0.8").revisions).default;
11 "clock".flags.llvm = false;
11 "clock".flags.llvm = false;
12− "QuickCheck".revision = (((hackage."QuickCheck")."2.13.1").revisions).default;
12+ "QuickCheck".revision = (((hackage."QuickCheck")."2.13.2").revisions).default;
13 "QuickCheck".flags.templatehaskell = true;
13 "QuickCheck".flags.templatehaskell = true;
14 "hspec-discover".revision = (((hackage."hspec-discover")."2.7.1").revisions).default;
14 "hspec-discover".revision = (((hackage."hspec-discover")."2.7.1").revisions).default;
15− "deepseq".revision = (((hackage."deepseq")."1.4.3.0").revisions).default;
15+ "deepseq".revision = (((hackage."deepseq")."1.4.4.0").revisions).default;
16 "random".revision = (((hackage."random")."1.1").revisions).default;
16 "random".revision = (((hackage."random")."1.1").revisions).default;
17− "splitmix".revision = (((hackage."splitmix")."0.0.2").revisions).default;
17+ "splitmix".revision = (((hackage."splitmix")."0.0.3").revisions).default;
18+ "splitmix".flags.optimised-mixer = false;
19+ "splitmix".flags.random = true;
18 "HUnit".revision = (((hackage."HUnit")."1.6.0.0").revisions).default;
20 "HUnit".revision = (((hackage."HUnit")."1.6.0.0").revisions).default;
19− "directory".revision = (((hackage."directory")."1.3.1.5").revisions).default;
21+ "directory".revision = (((hackage."directory")."1.3.3.0").revisions).default;
20− "template-haskell".revision = (((hackage."template-haskell")."2.13.0.0").revisions).default;
22+ "template-haskell".revision = (((hackage."template-haskell")."2.14.0.0").revisions).default;
21 "hspec-expectations".revision = (((hackage."hspec-expectations")."0.8.2").revisions).default;
23 "hspec-expectations".revision = (((hackage."hspec-expectations")."0.8.2").revisions).default;
22− "call-stack".revision = (((hackage."call-stack")."0.1.0").revisions).default;
24+ "call-stack".revision = (((hackage."call-stack")."0.2.0").revisions).default;
23 "primitive".revision = (((hackage."primitive")."0.7.0.0").revisions).default;
25 "primitive".revision = (((hackage."primitive")."0.7.0.0").revisions).default;
24− "ansi-terminal".revision = (((hackage."ansi-terminal")."0.9.1").revisions).default;
26+ "ansi-terminal".revision = (((hackage."ansi-terminal")."0.10.1").revisions).default;
25 "ansi-terminal".flags.example = false;
27 "ansi-terminal".flags.example = false;
26− "containers".revision = (((hackage."containers")."0.5.11.0").revisions).default;
28+ "containers".revision = (((hackage."containers")."0.6.0.1").revisions).default;
27 "bytestring".revision = (((hackage."bytestring")."0.10.8.2").revisions).default;
29 "bytestring".revision = (((hackage."bytestring")."0.10.8.2").revisions).default;
28 "setenv".revision = (((hackage."setenv")."0.1.1.3").revisions).default;
30 "setenv".revision = (((hackage."setenv")."0.1.1.3").revisions).default;
29− "base".revision = (((hackage."base")."4.11.1.0").revisions).default;
31+ "base".revision = (((hackage."base")."4.12.0.0").revisions).default;
30 "hspec".revision = (((hackage."hspec")."2.7.1").revisions).default;
32 "hspec".revision = (((hackage."hspec")."2.7.1").revisions).default;
31 "time".revision = (((hackage."time")."1.8.0.2").revisions).default;
33 "time".revision = (((hackage."time")."1.8.0.2").revisions).default;
32 "transformers".revision = (((hackage."transformers")."0.5.6.2").revisions).default;
34 "transformers".revision = (((hackage."transformers")."0.5.6.2").revisions).default;
33 "quickcheck-io".revision = (((hackage."quickcheck-io")."0.2.0").revisions).default;
35 "quickcheck-io".revision = (((hackage."quickcheck-io")."0.2.0").revisions).default;
34 "colour".revision = (((hackage."colour")."2.3.5").revisions).default;
36 "colour".revision = (((hackage."colour")."2.3.5").revisions).default;
35− "filepath".revision = (((hackage."filepath")."1.4.2").revisions).default;
37+ "filepath".revision = (((hackage."filepath")."1.4.2.1").revisions).default;
36 "hspec-core".revision = (((hackage."hspec-core")."2.7.1").revisions).default;
38 "hspec-core".revision = (((hackage."hspec-core")."2.7.1").revisions).default;
37 "pretty".revision = (((hackage."pretty")."1.1.3.6").revisions).default;
39 "pretty".revision = (((hackage."pretty")."1.1.3.6").revisions).default;
38− "ghc-boot-th".revision = (((hackage."ghc-boot-th")."8.4.4").revisions).default;
40+ "ghc-boot-th".revision = (((hackage."ghc-boot-th")."8.6.5").revisions).default;
39− "array".revision = (((hackage."array")."0.5.2.0").revisions).default;
41+ "array".revision = (((hackage."array")."0.5.3.0").revisions).default;
40 "integer-gmp".revision = (((hackage."integer-gmp")."1.0.2.0").revisions).default;
42 "integer-gmp".revision = (((hackage."integer-gmp")."1.0.2.0").revisions).default;
41 };
43 };
42 compiler = {
44 compiler = {
43− version = "8.4.4";
45+ version = "8.6.5";
44− nix-name = "ghc844";
46+ nix-name = "ghc865";
45 packages = {
47 packages = {
46− "ghc-prim" = "0.5.2.0";
48+ "ghc-prim" = "0.5.3";
47− "stm" = "2.4.5.1";
49+ "stm" = "2.5.0.0";
48 "unix" = "2.7.2.2";
50 "unix" = "2.7.2.2";
49 "rts" = "1.0";
51 "rts" = "1.0";
50− "deepseq" = "1.4.3.0";
52+ "deepseq" = "1.4.4.0";
51− "directory" = "1.3.1.5";
53+ "directory" = "1.3.3.0";
52− "template-haskell" = "2.13.0.0";
54+ "template-haskell" = "2.14.0.0";
53− "containers" = "0.5.11.0";
55+ "containers" = "0.6.0.1";
54 "bytestring" = "0.10.8.2";
56 "bytestring" = "0.10.8.2";
55− "base" = "4.11.1.0";
57+ "base" = "4.12.0.0";
56 "time" = "1.8.0.2";
58 "time" = "1.8.0.2";
59+ "transformers" = "0.5.6.2";
57− "filepath" = "1.4.2";
60+ "filepath" = "1.4.2.1";
58 "pretty" = "1.1.3.6";
61 "pretty" = "1.1.3.6";
59− "ghc-boot-th" = "8.4.4";
62+ "ghc-boot-th" = "8.6.5";
60− "array" = "0.5.2.0";
63+ "array" = "0.5.3.0";
61 "integer-gmp" = "1.0.2.0";
64 "integer-gmp" = "1.0.2.0";
62 };
65 };
63 };
66 };
64 };
67 };
65 extras = hackage:
68 extras = hackage:
66 { packages = { project = ./.plan.nix/project.nix; }; };
69 { packages = { project = ./.plan.nix/project.nix; }; };
70+ modules = [
71+ ({ lib, ... }:
72+ { packages = { "project" = { flags = {}; }; }; })
73+ ];
67 }
74 }
test/cabal-22/project.cabal+4−4
@@ -15,20 +15,20 @@ maintainer: rodney.lorrimar@iohk.io
15
15
16library
16library
17 exposed-modules: Lib
17 exposed-modules: Lib
18− build-depends: base ^>=4.11.1.0
18+ build-depends: base >=4.11.1.0
19 hs-source-dirs: lib
19 hs-source-dirs: lib
20 default-language: Haskell2010
20 default-language: Haskell2010
21
21
22executable project
22executable project
23 main-is: Main.hs
23 main-is: Main.hs
24− build-depends: base ^>=4.11.1.0
24+ build-depends: base >=4.11.1.0
25 , project
25 , project
26 default-language: Haskell2010
26 default-language: Haskell2010
27
27
28benchmark project-bench
28benchmark project-bench
29 type: exitcode-stdio-1.0
29 type: exitcode-stdio-1.0
30 main-is: Main.hs
30 main-is: Main.hs
31− build-depends: base ^>=4.11.1.0
31+ build-depends: base >=4.11.1.0
32 , project
32 , project
33 default-language: Haskell2010
33 default-language: Haskell2010
34 ghc-options: -threaded -rtsopts -Wall -O2
34 ghc-options: -threaded -rtsopts -Wall -O2
@@ -36,7 +36,7 @@ benchmark project-bench
36test-suite unit
36test-suite unit
37 type: exitcode-stdio-1.0
37 type: exitcode-stdio-1.0
38 main-is: Main.hs
38 main-is: Main.hs
39− build-depends: base ^>=4.11.1.0
39+ build-depends: base >=4.11.1.0
40 , project
40 , project
41 , hspec
41 , hspec
42 build-tools: hspec-discover
42 build-tools: hspec-discover
test/cabal-22/project.nix+67−6
@@ -1,4 +1,43 @@
1+let
2+ buildDepError = pkg:
3+ builtins.throw ''
4+ The Haskell package set does not contain the package: ${pkg} (build dependency).
5+
6+ If you are using Stackage, make sure that you are using a snapshot that contains the package. Otherwise you may need to update the Hackage snapshot you are using, usually by updating haskell.nix.
7+ '';
8+ sysDepError = pkg:
9+ builtins.throw ''
10+ The Nixpkgs package set does not contain the package: ${pkg} (system dependency).
11+
12+ You may need to augment the system package mapping in haskell.nix so that it can be found.
13+ '';
14+ pkgConfDepError = pkg:
15+ builtins.throw ''
16+ The pkg-conf packages does not contain the package: ${pkg} (pkg-conf dependency).
17+
18+ You may need to augment the pkg-conf package mapping in haskell.nix so that it can be found.
19+ '';
20+ exeDepError = pkg:
21+ builtins.throw ''
22+ The local executable components do not include the component: ${pkg} (executable dependency).
23+ '';
24+ legacyExeDepError = pkg:
25+ builtins.throw ''
26+ The Haskell package set does not contain the package: ${pkg} (executable dependency).
27+
28+ If you are using Stackage, make sure that you are using a snapshot that contains the package. Otherwise you may need to update the Hackage snapshot you are using, usually by updating haskell.nix.
29+ '';
30+ buildToolDepError = pkg:
31+ builtins.throw ''
32+ Neither the Haskell package set or the Nixpkgs package set contain the package: ${pkg} (build tool dependency).
33+
34+ If this is a system dependency:
35+ You may need to augment the system package mapping in haskell.nix so that it can be found.
36+
37+ If this is a Haskell dependency:
38+ If you are using Stackage, make sure that you are using a snapshot that contains the package. Otherwise you may need to update the Hackage snapshot you are using, usually by updating haskell.nix.
39+ '';
1−{ system, compiler, flags, pkgs, hsPkgs, pkgconfPkgs, ... }:
40+in { system, compiler, flags, pkgs, hsPkgs, pkgconfPkgs, ... }:
2 {
41 {
3 flags = {};
42 flags = {};
4 package = {
43 package = {
@@ -15,18 +54,40 @@
15 buildType = "Simple";
54 buildType = "Simple";
16 };
55 };
17 components = {
56 components = {
57+ "library" = {
18− "library" = { depends = [ (hsPkgs.base) ]; };
58+ depends = [ (hsPkgs."base" or (buildDepError "base")) ];
19− exes = { "project" = { depends = [ (hsPkgs.base) (hsPkgs.project) ]; }; };
59+ buildable = true;
60+ };
61+ exes = {
62+ "project" = {
63+ depends = [
64+ (hsPkgs."base" or (buildDepError "base"))
65+ (hsPkgs."project" or (buildDepError "project"))
66+ ];
67+ buildable = true;
68+ };
69+ };
20 tests = {
70 tests = {
21 "unit" = {
71 "unit" = {
22− depends = [ (hsPkgs.base) (hsPkgs.project) (hsPkgs.hspec) ];
72+ depends = [
73+ (hsPkgs."base" or (buildDepError "base"))
74+ (hsPkgs."project" or (buildDepError "project"))
75+ (hsPkgs."hspec" or (buildDepError "hspec"))
76+ ];
23 build-tools = [
77 build-tools = [
24− (hsPkgs.buildPackages.hspec-discover or (pkgs.buildPackages.hspec-discover))
78+ (hsPkgs.buildPackages.hspec-discover or (pkgs.buildPackages.hspec-discover or (buildToolDepError "hspec-discover")))
25 ];
79 ];
80+ buildable = true;
26 };
81 };
27 };
82 };
28 benchmarks = {
83 benchmarks = {
29− "project-bench" = { depends = [ (hsPkgs.base) (hsPkgs.project) ]; };
84+ "project-bench" = {
85+ depends = [
86+ (hsPkgs."base" or (buildDepError "base"))
87+ (hsPkgs."project" or (buildDepError "project"))
88+ ];
89+ buildable = true;
90+ };
30 };
91 };
31 };
92 };
32 } // rec { src = (pkgs.lib).mkDefault ./.; }
93 } // rec { src = (pkgs.lib).mkDefault ./.; }
test/cabal-simple/.plan.nix/cabal-simple.nix+53−6
@@ -1,4 +1,43 @@
1+let
2+ buildDepError = pkg:
3+ builtins.throw ''
4+ The Haskell package set does not contain the package: ${pkg} (build dependency).
5+
6+ If you are using Stackage, make sure that you are using a snapshot that contains the package. Otherwise you may need to update the Hackage snapshot you are using, usually by updating haskell.nix.
7+ '';
8+ sysDepError = pkg:
9+ builtins.throw ''
10+ The Nixpkgs package set does not contain the package: ${pkg} (system dependency).
11+
12+ You may need to augment the system package mapping in haskell.nix so that it can be found.
13+ '';
14+ pkgConfDepError = pkg:
15+ builtins.throw ''
16+ The pkg-conf packages does not contain the package: ${pkg} (pkg-conf dependency).
17+
18+ You may need to augment the pkg-conf package mapping in haskell.nix so that it can be found.
19+ '';
20+ exeDepError = pkg:
21+ builtins.throw ''
22+ The local executable components do not include the component: ${pkg} (executable dependency).
23+ '';
24+ legacyExeDepError = pkg:
25+ builtins.throw ''
26+ The Haskell package set does not contain the package: ${pkg} (executable dependency).
27+
28+ If you are using Stackage, make sure that you are using a snapshot that contains the package. Otherwise you may need to update the Hackage snapshot you are using, usually by updating haskell.nix.
29+ '';
30+ buildToolDepError = pkg:
31+ builtins.throw ''
32+ Neither the Haskell package set or the Nixpkgs package set contain the package: ${pkg} (build tool dependency).
33+
34+ If this is a system dependency:
35+ You may need to augment the system package mapping in haskell.nix so that it can be found.
36+
37+ If this is a Haskell dependency:
38+ If you are using Stackage, make sure that you are using a snapshot that contains the package. Otherwise you may need to update the Hackage snapshot you are using, usually by updating haskell.nix.
39+ '';
1−{ system, compiler, flags, pkgs, hsPkgs, pkgconfPkgs, ... }:
40+in { system, compiler, flags, pkgs, hsPkgs, pkgconfPkgs, ... }:
2 {
41 {
3 flags = {};
42 flags = {};
4 package = {
43 package = {
@@ -13,19 +52,27 @@
13 synopsis = "";
52 synopsis = "";
14 description = "";
53 description = "";
15 buildType = "Simple";
54 buildType = "Simple";
55+ isLocal = true;
16 };
56 };
17 components = {
57 components = {
18 "library" = {
58 "library" = {
19− depends = [ (hsPkgs.base) (hsPkgs.extra) (hsPkgs.safe) (hsPkgs.aeson) ];
59+ depends = [
60+ (hsPkgs."base" or (buildDepError "base"))
61+ (hsPkgs."extra" or (buildDepError "extra"))
62+ (hsPkgs."safe" or (buildDepError "safe"))
63+ (hsPkgs."aeson" or (buildDepError "aeson"))
64+ ];
65+ buildable = true;
20 };
66 };
21 exes = {
67 exes = {
22 "cabal-simple" = {
68 "cabal-simple" = {
23 depends = [
69 depends = [
24− (hsPkgs.base)
70+ (hsPkgs."base" or (buildDepError "base"))
25− (hsPkgs.cabal-simple)
71+ (hsPkgs."cabal-simple" or (buildDepError "cabal-simple"))
26− (hsPkgs.extra)
72+ (hsPkgs."extra" or (buildDepError "extra"))
27− (hsPkgs.optparse-applicative)
73+ (hsPkgs."optparse-applicative" or (buildDepError "optparse-applicative"))
28 ];
74 ];
75+ buildable = true;
29 };
76 };
30 };
77 };
31 };
78 };
test/cabal-simple/pkgs.nix+36−37
@@ -2,10 +2,9 @@
2 pkgs = hackage:
2 pkgs = hackage:
3 {
3 {
4 packages = {
4 packages = {
5− "binary".revision = (((hackage."binary")."0.8.5.1").revisions).default;
5+ "binary".revision = (((hackage."binary")."0.8.6.0").revisions).default;
6− "ghc-prim".revision = (((hackage."ghc-prim")."0.5.2.0").revisions).default;
6+ "ghc-prim".revision = (((hackage."ghc-prim")."0.5.3").revisions).default;
7− "extra".revision = (((hackage."extra")."1.6.17").revisions).default;
7+ "extra".revision = (((hackage."extra")."1.6.18").revisions).default;
8− "stm".revision = (((hackage."stm")."2.4.5.1").revisions).default;
9 "unix".revision = (((hackage."unix")."2.7.2.2").revisions).default;
8 "unix".revision = (((hackage."unix")."2.7.2.2").revisions).default;
10 "rts".revision = (((hackage."rts")."1.0").revisions).default;
9 "rts".revision = (((hackage."rts")."1.0").revisions).default;
11 "clock".revision = (((hackage."clock")."0.8").revisions).default;
10 "clock".revision = (((hackage."clock")."0.8").revisions).default;
@@ -13,12 +12,12 @@
13 "scientific".revision = (((hackage."scientific")."0.3.6.2").revisions).default;
12 "scientific".revision = (((hackage."scientific")."0.3.6.2").revisions).default;
14 "scientific".flags.integer-simple = false;
13 "scientific".flags.integer-simple = false;
15 "scientific".flags.bytestring-builder = false;
14 "scientific".flags.bytestring-builder = false;
16− "deepseq".revision = (((hackage."deepseq")."1.4.3.0").revisions).default;
15+ "deepseq".revision = (((hackage."deepseq")."1.4.4.0").revisions).default;
17 "random".revision = (((hackage."random")."1.1").revisions).default;
16 "random".revision = (((hackage."random")."1.1").revisions).default;
18 "uuid-types".revision = (((hackage."uuid-types")."1.0.3").revisions).default;
17 "uuid-types".revision = (((hackage."uuid-types")."1.0.3").revisions).default;
19− "optparse-applicative".revision = (((hackage."optparse-applicative")."0.14.3.0").revisions).default;
18+ "optparse-applicative".revision = (((hackage."optparse-applicative")."0.15.1.0").revisions).default;
20− "dlist".revision = (((hackage."dlist")."0.8.0.6").revisions).default;
19+ "dlist".revision = (((hackage."dlist")."0.8.0.7").revisions).default;
21− "semigroups".revision = (((hackage."semigroups")."0.19").revisions).default;
20+ "semigroups".revision = (((hackage."semigroups")."0.19.1").revisions).default;
22 "semigroups".flags.bytestring = true;
21 "semigroups".flags.bytestring = true;
23 "semigroups".flags.unordered-containers = true;
22 "semigroups".flags.unordered-containers = true;
24 "semigroups".flags.text = true;
23 "semigroups".flags.text = true;
@@ -30,7 +29,7 @@
30 "semigroups".flags.deepseq = true;
29 "semigroups".flags.deepseq = true;
31 "semigroups".flags.bytestring-builder = false;
30 "semigroups".flags.bytestring-builder = false;
32 "semigroups".flags.template-haskell = true;
31 "semigroups".flags.template-haskell = true;
33− "directory".revision = (((hackage."directory")."1.3.1.5").revisions).default;
32+ "directory".revision = (((hackage."directory")."1.3.3.0").revisions).default;
34 "transformers-compat".revision = (((hackage."transformers-compat")."0.6.5").revisions).default;
33 "transformers-compat".revision = (((hackage."transformers-compat")."0.6.5").revisions).default;
35 "transformers-compat".flags.five = false;
34 "transformers-compat".flags.five = false;
36 "transformers-compat".flags.generic-deriving = true;
35 "transformers-compat".flags.generic-deriving = true;
@@ -39,7 +38,7 @@
39 "transformers-compat".flags.mtl = true;
38 "transformers-compat".flags.mtl = true;
40 "transformers-compat".flags.four = false;
39 "transformers-compat".flags.four = false;
41 "transformers-compat".flags.three = false;
40 "transformers-compat".flags.three = false;
42− "template-haskell".revision = (((hackage."template-haskell")."2.13.0.0").revisions).default;
41+ "template-haskell".revision = (((hackage."template-haskell")."2.14.0.0").revisions).default;
43 "vector".revision = (((hackage."vector")."0.12.0.3").revisions).default;
42 "vector".revision = (((hackage."vector")."0.12.0.3").revisions).default;
44 "vector".flags.unsafechecks = false;
43 "vector".flags.unsafechecks = false;
45 "vector".flags.internalchecks = false;
44 "vector".flags.internalchecks = false;
@@ -47,30 +46,25 @@
47 "vector".flags.boundschecks = true;
46 "vector".flags.boundschecks = true;
48 "primitive".revision = (((hackage."primitive")."0.7.0.0").revisions).default;
47 "primitive".revision = (((hackage."primitive")."0.7.0.0").revisions).default;
49 "safe".revision = (((hackage."safe")."0.3.17").revisions).default;
48 "safe".revision = (((hackage."safe")."0.3.17").revisions).default;
50− "base-compat".revision = (((hackage."base-compat")."0.10.5").revisions).default;
49+ "base-compat".revision = (((hackage."base-compat")."0.11.0").revisions).default;
51 "time-compat".revision = (((hackage."time-compat")."1.9.2.2").revisions).default;
50 "time-compat".revision = (((hackage."time-compat")."1.9.2.2").revisions).default;
52 "time-compat".flags.old-locale = false;
51 "time-compat".flags.old-locale = false;
53− "ansi-terminal".revision = (((hackage."ansi-terminal")."0.9.1").revisions).default;
52+ "ansi-terminal".revision = (((hackage."ansi-terminal")."0.10.1").revisions).default;
54 "ansi-terminal".flags.example = false;
53 "ansi-terminal".flags.example = false;
55 "tagged".revision = (((hackage."tagged")."0.8.6").revisions).default;
54 "tagged".revision = (((hackage."tagged")."0.8.6").revisions).default;
56 "tagged".flags.transformers = true;
55 "tagged".flags.transformers = true;
57 "tagged".flags.deepseq = true;
56 "tagged".flags.deepseq = true;
58− "containers".revision = (((hackage."containers")."0.5.11.0").revisions).default;
57+ "containers".revision = (((hackage."containers")."0.6.0.1").revisions).default;
59 "integer-logarithms".revision = (((hackage."integer-logarithms")."1.0.3").revisions).default;
58 "integer-logarithms".revision = (((hackage."integer-logarithms")."1.0.3").revisions).default;
60 "integer-logarithms".flags.check-bounds = false;
59 "integer-logarithms".flags.check-bounds = false;
61 "integer-logarithms".flags.integer-gmp = true;
60 "integer-logarithms".flags.integer-gmp = true;
62 "bytestring".revision = (((hackage."bytestring")."0.10.8.2").revisions).default;
61 "bytestring".revision = (((hackage."bytestring")."0.10.8.2").revisions).default;
63 "ansi-wl-pprint".revision = (((hackage."ansi-wl-pprint")."0.6.9").revisions).default;
62 "ansi-wl-pprint".revision = (((hackage."ansi-wl-pprint")."0.6.9").revisions).default;
64 "ansi-wl-pprint".flags.example = false;
63 "ansi-wl-pprint".flags.example = false;
65− "StateVar".revision = (((hackage."StateVar")."1.2").revisions).default;
66− "contravariant".revision = (((hackage."contravariant")."1.5.2").revisions).default;
67− "contravariant".flags.semigroups = true;
68− "contravariant".flags.tagged = true;
69− "contravariant".flags.statevar = true;
70 "text".revision = (((hackage."text")."1.2.3.1").revisions).default;
64 "text".revision = (((hackage."text")."1.2.3.1").revisions).default;
71 "unordered-containers".revision = (((hackage."unordered-containers")."0.2.10.0").revisions).default;
65 "unordered-containers".revision = (((hackage."unordered-containers")."0.2.10.0").revisions).default;
72 "unordered-containers".flags.debug = false;
66 "unordered-containers".flags.debug = false;
73− "base".revision = (((hackage."base")."4.11.1.0").revisions).default;
67+ "base".revision = (((hackage."base")."4.12.0.0").revisions).default;
74 "time".revision = (((hackage."time")."1.8.0.2").revisions).default;
68 "time".revision = (((hackage."time")."1.8.0.2").revisions).default;
75 "transformers".revision = (((hackage."transformers")."0.5.6.2").revisions).default;
69 "transformers".revision = (((hackage."transformers")."0.5.6.2").revisions).default;
76 "hashable".revision = (((hackage."hashable")."1.3.0.0").revisions).default;
70 "hashable".revision = (((hackage."hashable")."1.3.0.0").revisions).default;
@@ -78,48 +72,53 @@
78 "hashable".flags.integer-gmp = true;
72 "hashable".flags.integer-gmp = true;
79 "hashable".flags.sse41 = false;
73 "hashable".flags.sse41 = false;
80 "hashable".flags.examples = false;
74 "hashable".flags.examples = false;
81− "attoparsec".revision = (((hackage."attoparsec")."0.13.2.2").revisions).default;
75+ "attoparsec".revision = (((hackage."attoparsec")."0.13.2.3").revisions).default;
82 "attoparsec".flags.developer = false;
76 "attoparsec".flags.developer = false;
83 "colour".revision = (((hackage."colour")."2.3.5").revisions).default;
77 "colour".revision = (((hackage."colour")."2.3.5").revisions).default;
84− "filepath".revision = (((hackage."filepath")."1.4.2").revisions).default;
78+ "filepath".revision = (((hackage."filepath")."1.4.2.1").revisions).default;
85 "process".revision = (((hackage."process")."1.6.5.0").revisions).default;
79 "process".revision = (((hackage."process")."1.6.5.0").revisions).default;
86 "pretty".revision = (((hackage."pretty")."1.1.3.6").revisions).default;
80 "pretty".revision = (((hackage."pretty")."1.1.3.6").revisions).default;
87− "aeson".revision = (((hackage."aeson")."1.4.4.0").revisions).default;
81+ "aeson".revision = (((hackage."aeson")."1.4.5.0").revisions).default;
88 "aeson".flags.cffi = false;
82 "aeson".flags.cffi = false;
89 "aeson".flags.fast = false;
83 "aeson".flags.fast = false;
90 "aeson".flags.bytestring-builder = false;
84 "aeson".flags.bytestring-builder = false;
91 "aeson".flags.developer = false;
85 "aeson".flags.developer = false;
92− "ghc-boot-th".revision = (((hackage."ghc-boot-th")."8.4.4").revisions).default;
86+ "ghc-boot-th".revision = (((hackage."ghc-boot-th")."8.6.5").revisions).default;
93 "base-orphans".revision = (((hackage."base-orphans")."0.8.1").revisions).default;
87 "base-orphans".revision = (((hackage."base-orphans")."0.8.1").revisions).default;
94 "th-abstraction".revision = (((hackage."th-abstraction")."0.3.1.0").revisions).default;
88 "th-abstraction".revision = (((hackage."th-abstraction")."0.3.1.0").revisions).default;
95− "array".revision = (((hackage."array")."0.5.2.0").revisions).default;
89+ "array".revision = (((hackage."array")."0.5.3.0").revisions).default;
96 "integer-gmp".revision = (((hackage."integer-gmp")."1.0.2.0").revisions).default;
90 "integer-gmp".revision = (((hackage."integer-gmp")."1.0.2.0").revisions).default;
97 };
91 };
98 compiler = {
92 compiler = {
99− version = "8.4.4";
93+ version = "8.6.5";
100− nix-name = "ghc844";
94+ nix-name = "ghc865";
101 packages = {
95 packages = {
102− "binary" = "0.8.5.1";
96+ "binary" = "0.8.6.0";
103− "ghc-prim" = "0.5.2.0";
97+ "ghc-prim" = "0.5.3";
104− "stm" = "2.4.5.1";
105 "unix" = "2.7.2.2";
98 "unix" = "2.7.2.2";
106 "rts" = "1.0";
99 "rts" = "1.0";
107− "deepseq" = "1.4.3.0";
100+ "deepseq" = "1.4.4.0";
108− "directory" = "1.3.1.5";
101+ "directory" = "1.3.3.0";
109− "template-haskell" = "2.13.0.0";
102+ "template-haskell" = "2.14.0.0";
110− "containers" = "0.5.11.0";
103+ "containers" = "0.6.0.1";
111 "bytestring" = "0.10.8.2";
104 "bytestring" = "0.10.8.2";
112 "text" = "1.2.3.1";
105 "text" = "1.2.3.1";
113− "base" = "4.11.1.0";
106+ "base" = "4.12.0.0";
114 "time" = "1.8.0.2";
107 "time" = "1.8.0.2";
108+ "transformers" = "0.5.6.2";
115− "filepath" = "1.4.2";
109+ "filepath" = "1.4.2.1";
110+ "process" = "1.6.5.0";
116 "pretty" = "1.1.3.6";
111 "pretty" = "1.1.3.6";
117− "ghc-boot-th" = "8.4.4";
112+ "ghc-boot-th" = "8.6.5";
118− "array" = "0.5.2.0";
113+ "array" = "0.5.3.0";
119 "integer-gmp" = "1.0.2.0";
114 "integer-gmp" = "1.0.2.0";
120 };
115 };
121 };
116 };
122 };
117 };
123 extras = hackage:
118 extras = hackage:
124 { packages = { cabal-simple = ./.plan.nix/cabal-simple.nix; }; };
119 { packages = { cabal-simple = ./.plan.nix/cabal-simple.nix; }; };
120+ modules = [
121+ ({ lib, ... }:
122+ { packages = { "cabal-simple" = { flags = {}; }; }; })
123+ ];
125 }
124 }
test/cabal-sublib/.plan.nix/cabal-sublib.nix+61−7
@@ -1,4 +1,43 @@
1+let
2+ buildDepError = pkg:
3+ builtins.throw ''
4+ The Haskell package set does not contain the package: ${pkg} (build dependency).
5+
6+ If you are using Stackage, make sure that you are using a snapshot that contains the package. Otherwise you may need to update the Hackage snapshot you are using, usually by updating haskell.nix.
7+ '';
8+ sysDepError = pkg:
9+ builtins.throw ''
10+ The Nixpkgs package set does not contain the package: ${pkg} (system dependency).
11+
12+ You may need to augment the system package mapping in haskell.nix so that it can be found.
13+ '';
14+ pkgConfDepError = pkg:
15+ builtins.throw ''
16+ The pkg-conf packages does not contain the package: ${pkg} (pkg-conf dependency).
17+
18+ You may need to augment the pkg-conf package mapping in haskell.nix so that it can be found.
19+ '';
20+ exeDepError = pkg:
21+ builtins.throw ''
22+ The local executable components do not include the component: ${pkg} (executable dependency).
23+ '';
24+ legacyExeDepError = pkg:
25+ builtins.throw ''
26+ The Haskell package set does not contain the package: ${pkg} (executable dependency).
27+
28+ If you are using Stackage, make sure that you are using a snapshot that contains the package. Otherwise you may need to update the Hackage snapshot you are using, usually by updating haskell.nix.
29+ '';
30+ buildToolDepError = pkg:
31+ builtins.throw ''
32+ Neither the Haskell package set or the Nixpkgs package set contain the package: ${pkg} (build tool dependency).
33+
34+ If this is a system dependency:
35+ You may need to augment the system package mapping in haskell.nix so that it can be found.
36+
37+ If this is a Haskell dependency:
38+ If you are using Stackage, make sure that you are using a snapshot that contains the package. Otherwise you may need to update the Hackage snapshot you are using, usually by updating haskell.nix.
39+ '';
1−{ system, compiler, flags, pkgs, hsPkgs, pkgconfPkgs, ... }:
40+in { system, compiler, flags, pkgs, hsPkgs, pkgconfPkgs, ... }:
2 {
41 {
3 flags = {};
42 flags = {};
4 package = {
43 package = {
@@ -13,20 +52,35 @@
13 synopsis = "";
52 synopsis = "";
14 description = "";
53 description = "";
15 buildType = "Simple";
54 buildType = "Simple";
55+ isLocal = true;
16 };
56 };
17 components = {
57 components = {
18− "library" = { depends = [ (hsPkgs.base) (hsPkgs.slib) ]; };
58+ "library" = {
59+ depends = [
60+ (hsPkgs."base" or (buildDepError "base"))
61+ (hsPkgs."slib" or (buildDepError "slib"))
62+ ];
63+ buildable = true;
64+ };
19 sublibs = {
65 sublibs = {
20− "slib" = { depends = [ (hsPkgs.extra) (hsPkgs.safe) (hsPkgs.aeson) ]; };
66+ "slib" = {
67+ depends = [
68+ (hsPkgs."extra" or (buildDepError "extra"))
69+ (hsPkgs."safe" or (buildDepError "safe"))
70+ (hsPkgs."aeson" or (buildDepError "aeson"))
71+ ];
72+ buildable = true;
73+ };
21 };
74 };
22 exes = {
75 exes = {
23 "cabal-sublib" = {
76 "cabal-sublib" = {
24 depends = [
77 depends = [
25− (hsPkgs.base)
78+ (hsPkgs."base" or (buildDepError "base"))
26− (hsPkgs.cabal-sublib)
79+ (hsPkgs."cabal-sublib" or (buildDepError "cabal-sublib"))
27− (hsPkgs.extra)
80+ (hsPkgs."extra" or (buildDepError "extra"))
28− (hsPkgs.optparse-applicative)
81+ (hsPkgs."optparse-applicative" or (buildDepError "optparse-applicative"))
29 ];
82 ];
83+ buildable = true;
30 };
84 };
31 };
85 };
32 };
86 };
test/cabal-sublib/pkgs.nix+36−37
@@ -2,10 +2,9 @@
2 pkgs = hackage:
2 pkgs = hackage:
3 {
3 {
4 packages = {
4 packages = {
5− "binary".revision = (((hackage."binary")."0.8.5.1").revisions).default;
5+ "binary".revision = (((hackage."binary")."0.8.6.0").revisions).default;
6− "ghc-prim".revision = (((hackage."ghc-prim")."0.5.2.0").revisions).default;
6+ "ghc-prim".revision = (((hackage."ghc-prim")."0.5.3").revisions).default;
7− "extra".revision = (((hackage."extra")."1.6.17").revisions).default;
7+ "extra".revision = (((hackage."extra")."1.6.18").revisions).default;
8− "stm".revision = (((hackage."stm")."2.4.5.1").revisions).default;
9 "unix".revision = (((hackage."unix")."2.7.2.2").revisions).default;
8 "unix".revision = (((hackage."unix")."2.7.2.2").revisions).default;
10 "rts".revision = (((hackage."rts")."1.0").revisions).default;
9 "rts".revision = (((hackage."rts")."1.0").revisions).default;
11 "clock".revision = (((hackage."clock")."0.8").revisions).default;
10 "clock".revision = (((hackage."clock")."0.8").revisions).default;
@@ -13,12 +12,12 @@
13 "scientific".revision = (((hackage."scientific")."0.3.6.2").revisions).default;
12 "scientific".revision = (((hackage."scientific")."0.3.6.2").revisions).default;
14 "scientific".flags.integer-simple = false;
13 "scientific".flags.integer-simple = false;
15 "scientific".flags.bytestring-builder = false;
14 "scientific".flags.bytestring-builder = false;
16− "deepseq".revision = (((hackage."deepseq")."1.4.3.0").revisions).default;
15+ "deepseq".revision = (((hackage."deepseq")."1.4.4.0").revisions).default;
17 "random".revision = (((hackage."random")."1.1").revisions).default;
16 "random".revision = (((hackage."random")."1.1").revisions).default;
18 "uuid-types".revision = (((hackage."uuid-types")."1.0.3").revisions).default;
17 "uuid-types".revision = (((hackage."uuid-types")."1.0.3").revisions).default;
19− "optparse-applicative".revision = (((hackage."optparse-applicative")."0.14.3.0").revisions).default;
18+ "optparse-applicative".revision = (((hackage."optparse-applicative")."0.15.1.0").revisions).default;
20− "dlist".revision = (((hackage."dlist")."0.8.0.6").revisions).default;
19+ "dlist".revision = (((hackage."dlist")."0.8.0.7").revisions).default;
21− "semigroups".revision = (((hackage."semigroups")."0.19").revisions).default;
20+ "semigroups".revision = (((hackage."semigroups")."0.19.1").revisions).default;
22 "semigroups".flags.bytestring = true;
21 "semigroups".flags.bytestring = true;
23 "semigroups".flags.unordered-containers = true;
22 "semigroups".flags.unordered-containers = true;
24 "semigroups".flags.text = true;
23 "semigroups".flags.text = true;
@@ -30,7 +29,7 @@
30 "semigroups".flags.deepseq = true;
29 "semigroups".flags.deepseq = true;
31 "semigroups".flags.bytestring-builder = false;
30 "semigroups".flags.bytestring-builder = false;
32 "semigroups".flags.template-haskell = true;
31 "semigroups".flags.template-haskell = true;
33− "directory".revision = (((hackage."directory")."1.3.1.5").revisions).default;
32+ "directory".revision = (((hackage."directory")."1.3.3.0").revisions).default;
34 "transformers-compat".revision = (((hackage."transformers-compat")."0.6.5").revisions).default;
33 "transformers-compat".revision = (((hackage."transformers-compat")."0.6.5").revisions).default;
35 "transformers-compat".flags.five = false;
34 "transformers-compat".flags.five = false;
36 "transformers-compat".flags.generic-deriving = true;
35 "transformers-compat".flags.generic-deriving = true;
@@ -39,7 +38,7 @@
39 "transformers-compat".flags.mtl = true;
38 "transformers-compat".flags.mtl = true;
40 "transformers-compat".flags.four = false;
39 "transformers-compat".flags.four = false;
41 "transformers-compat".flags.three = false;
40 "transformers-compat".flags.three = false;
42− "template-haskell".revision = (((hackage."template-haskell")."2.13.0.0").revisions).default;
41+ "template-haskell".revision = (((hackage."template-haskell")."2.14.0.0").revisions).default;
43 "vector".revision = (((hackage."vector")."0.12.0.3").revisions).default;
42 "vector".revision = (((hackage."vector")."0.12.0.3").revisions).default;
44 "vector".flags.unsafechecks = false;
43 "vector".flags.unsafechecks = false;
45 "vector".flags.internalchecks = false;
44 "vector".flags.internalchecks = false;
@@ -47,30 +46,25 @@
47 "vector".flags.boundschecks = true;
46 "vector".flags.boundschecks = true;
48 "primitive".revision = (((hackage."primitive")."0.7.0.0").revisions).default;
47 "primitive".revision = (((hackage."primitive")."0.7.0.0").revisions).default;
49 "safe".revision = (((hackage."safe")."0.3.17").revisions).default;
48 "safe".revision = (((hackage."safe")."0.3.17").revisions).default;
50− "base-compat".revision = (((hackage."base-compat")."0.10.5").revisions).default;
49+ "base-compat".revision = (((hackage."base-compat")."0.11.0").revisions).default;
51 "time-compat".revision = (((hackage."time-compat")."1.9.2.2").revisions).default;
50 "time-compat".revision = (((hackage."time-compat")."1.9.2.2").revisions).default;
52 "time-compat".flags.old-locale = false;
51 "time-compat".flags.old-locale = false;
53− "ansi-terminal".revision = (((hackage."ansi-terminal")."0.9.1").revisions).default;
52+ "ansi-terminal".revision = (((hackage."ansi-terminal")."0.10.1").revisions).default;
54 "ansi-terminal".flags.example = false;
53 "ansi-terminal".flags.example = false;
55 "tagged".revision = (((hackage."tagged")."0.8.6").revisions).default;
54 "tagged".revision = (((hackage."tagged")."0.8.6").revisions).default;
56 "tagged".flags.transformers = true;
55 "tagged".flags.transformers = true;
57 "tagged".flags.deepseq = true;
56 "tagged".flags.deepseq = true;
58− "containers".revision = (((hackage."containers")."0.5.11.0").revisions).default;
57+ "containers".revision = (((hackage."containers")."0.6.0.1").revisions).default;
59 "integer-logarithms".revision = (((hackage."integer-logarithms")."1.0.3").revisions).default;
58 "integer-logarithms".revision = (((hackage."integer-logarithms")."1.0.3").revisions).default;
60 "integer-logarithms".flags.check-bounds = false;
59 "integer-logarithms".flags.check-bounds = false;
61 "integer-logarithms".flags.integer-gmp = true;
60 "integer-logarithms".flags.integer-gmp = true;
62 "bytestring".revision = (((hackage."bytestring")."0.10.8.2").revisions).default;
61 "bytestring".revision = (((hackage."bytestring")."0.10.8.2").revisions).default;
63 "ansi-wl-pprint".revision = (((hackage."ansi-wl-pprint")."0.6.9").revisions).default;
62 "ansi-wl-pprint".revision = (((hackage."ansi-wl-pprint")."0.6.9").revisions).default;
64 "ansi-wl-pprint".flags.example = false;
63 "ansi-wl-pprint".flags.example = false;
65− "StateVar".revision = (((hackage."StateVar")."1.2").revisions).default;
66− "contravariant".revision = (((hackage."contravariant")."1.5.2").revisions).default;
67− "contravariant".flags.semigroups = true;
68− "contravariant".flags.tagged = true;
69− "contravariant".flags.statevar = true;
70 "text".revision = (((hackage."text")."1.2.3.1").revisions).default;
64 "text".revision = (((hackage."text")."1.2.3.1").revisions).default;
71 "unordered-containers".revision = (((hackage."unordered-containers")."0.2.10.0").revisions).default;
65 "unordered-containers".revision = (((hackage."unordered-containers")."0.2.10.0").revisions).default;
72 "unordered-containers".flags.debug = false;
66 "unordered-containers".flags.debug = false;
73− "base".revision = (((hackage."base")."4.11.1.0").revisions).default;
67+ "base".revision = (((hackage."base")."4.12.0.0").revisions).default;
74 "time".revision = (((hackage."time")."1.8.0.2").revisions).default;
68 "time".revision = (((hackage."time")."1.8.0.2").revisions).default;
75 "transformers".revision = (((hackage."transformers")."0.5.6.2").revisions).default;
69 "transformers".revision = (((hackage."transformers")."0.5.6.2").revisions).default;
76 "hashable".revision = (((hackage."hashable")."1.3.0.0").revisions).default;
70 "hashable".revision = (((hackage."hashable")."1.3.0.0").revisions).default;
@@ -78,48 +72,53 @@
78 "hashable".flags.integer-gmp = true;
72 "hashable".flags.integer-gmp = true;
79 "hashable".flags.sse41 = false;
73 "hashable".flags.sse41 = false;
80 "hashable".flags.examples = false;
74 "hashable".flags.examples = false;
81− "attoparsec".revision = (((hackage."attoparsec")."0.13.2.2").revisions).default;
75+ "attoparsec".revision = (((hackage."attoparsec")."0.13.2.3").revisions).default;
82 "attoparsec".flags.developer = false;
76 "attoparsec".flags.developer = false;
83 "colour".revision = (((hackage."colour")."2.3.5").revisions).default;
77 "colour".revision = (((hackage."colour")."2.3.5").revisions).default;
84− "filepath".revision = (((hackage."filepath")."1.4.2").revisions).default;
78+ "filepath".revision = (((hackage."filepath")."1.4.2.1").revisions).default;
85 "process".revision = (((hackage."process")."1.6.5.0").revisions).default;
79 "process".revision = (((hackage."process")."1.6.5.0").revisions).default;
86 "pretty".revision = (((hackage."pretty")."1.1.3.6").revisions).default;
80 "pretty".revision = (((hackage."pretty")."1.1.3.6").revisions).default;
87− "aeson".revision = (((hackage."aeson")."1.4.4.0").revisions).default;
81+ "aeson".revision = (((hackage."aeson")."1.4.5.0").revisions).default;
88 "aeson".flags.cffi = false;
82 "aeson".flags.cffi = false;
89 "aeson".flags.fast = false;
83 "aeson".flags.fast = false;
90 "aeson".flags.bytestring-builder = false;
84 "aeson".flags.bytestring-builder = false;
91 "aeson".flags.developer = false;
85 "aeson".flags.developer = false;
92− "ghc-boot-th".revision = (((hackage."ghc-boot-th")."8.4.4").revisions).default;
86+ "ghc-boot-th".revision = (((hackage."ghc-boot-th")."8.6.5").revisions).default;
93 "base-orphans".revision = (((hackage."base-orphans")."0.8.1").revisions).default;
87 "base-orphans".revision = (((hackage."base-orphans")."0.8.1").revisions).default;
94 "th-abstraction".revision = (((hackage."th-abstraction")."0.3.1.0").revisions).default;
88 "th-abstraction".revision = (((hackage."th-abstraction")."0.3.1.0").revisions).default;
95− "array".revision = (((hackage."array")."0.5.2.0").revisions).default;
89+ "array".revision = (((hackage."array")."0.5.3.0").revisions).default;
96 "integer-gmp".revision = (((hackage."integer-gmp")."1.0.2.0").revisions).default;
90 "integer-gmp".revision = (((hackage."integer-gmp")."1.0.2.0").revisions).default;
97 };
91 };
98 compiler = {
92 compiler = {
99− version = "8.4.4";
93+ version = "8.6.5";
100− nix-name = "ghc844";
94+ nix-name = "ghc865";
101 packages = {
95 packages = {
102− "binary" = "0.8.5.1";
96+ "binary" = "0.8.6.0";
103− "ghc-prim" = "0.5.2.0";
97+ "ghc-prim" = "0.5.3";
104− "stm" = "2.4.5.1";
105 "unix" = "2.7.2.2";
98 "unix" = "2.7.2.2";
106 "rts" = "1.0";
99 "rts" = "1.0";
107− "deepseq" = "1.4.3.0";
100+ "deepseq" = "1.4.4.0";
108− "directory" = "1.3.1.5";
101+ "directory" = "1.3.3.0";
109− "template-haskell" = "2.13.0.0";
102+ "template-haskell" = "2.14.0.0";
110− "containers" = "0.5.11.0";
103+ "containers" = "0.6.0.1";
111 "bytestring" = "0.10.8.2";
104 "bytestring" = "0.10.8.2";
112 "text" = "1.2.3.1";
105 "text" = "1.2.3.1";
113− "base" = "4.11.1.0";
106+ "base" = "4.12.0.0";
114 "time" = "1.8.0.2";
107 "time" = "1.8.0.2";
108+ "transformers" = "0.5.6.2";
115− "filepath" = "1.4.2";
109+ "filepath" = "1.4.2.1";
110+ "process" = "1.6.5.0";
116 "pretty" = "1.1.3.6";
111 "pretty" = "1.1.3.6";
117− "ghc-boot-th" = "8.4.4";
112+ "ghc-boot-th" = "8.6.5";
118− "array" = "0.5.2.0";
113+ "array" = "0.5.3.0";
119 "integer-gmp" = "1.0.2.0";
114 "integer-gmp" = "1.0.2.0";
120 };
115 };
121 };
116 };
122 };
117 };
123 extras = hackage:
118 extras = hackage:
124 { packages = { cabal-sublib = ./.plan.nix/cabal-sublib.nix; }; };
119 { packages = { cabal-sublib = ./.plan.nix/cabal-sublib.nix; }; };
120+ modules = [
121+ ({ lib, ... }:
122+ { packages = { "cabal-sublib" = { flags = {}; }; }; })
123+ ];
125 }
124 }
test/regen.nix+5−5
@@ -1,21 +1,21 @@
1# A script for regenerating nix for tests
1# A script for regenerating nix for tests
2−{ pkgs ? import nixpkgs {}
2+{ pkgs ? import nixpkgs ((import ../.) // nixpkgsArgs)
3, nixpkgs ? ../nixpkgs
3, nixpkgs ? ../nixpkgs
4−, haskell ? pkgs.callPackage ../. { }
4+, nixpkgsArgs ? { }
5}:
5}:
6
6
7with pkgs;
7with pkgs;
8
8
9writeScript "regen-tests.sh" ''
9writeScript "regen-tests.sh" ''
10− #!${pkgs.stdenv.shell}
10+ #!${pkgs.runtimeShell}
11
11
12 set -euo pipefail
12 set -euo pipefail
13
13
14− export PATH="${lib.makeBinPath [ coreutils glibc haskell.nix-tools cabal-install pkgs.haskell.compiler.ghc844 ]}"
14+ export PATH="${lib.makeBinPath [ coreutils glibc haskell-nix.nix-tools cabal-install haskell.compiler.ghc865 ]}"
15
15
16 cabal_configure() {
16 cabal_configure() {
17 cabal new-configure \
17 cabal new-configure \
18− --with-compiler ghc-8.4.4 \
18+ --with-compiler ghc-8.6.5 \
19 --constraint 'transformers == 0.5.6.2' \
19 --constraint 'transformers == 0.5.6.2' \
20 --constraint 'process == 1.6.5.0'
20 --constraint 'process == 1.6.5.0'
21 }
21 }
test/shell-for/.plan.nix/pkga.nix+6
@@ -63,5 +63,11 @@ in { system, compiler, flags, pkgs, hsPkgs, pkgconfPkgs, ... }:
63 ];
63 ];
64 buildable = true;
64 buildable = true;
65 };
65 };
66+ exes = {
67+ "pkga-exe" = {
68+ depends = [ (hsPkgs."base" or (buildDepError "base")) ];
69+ buildable = true;
70+ };
71+ };
66 };
72 };
67 } // rec { src = (pkgs.lib).mkDefault ../pkga; }
73 } // rec { src = (pkgs.lib).mkDefault ../pkga; }
test/shell-for/.plan.nix/pkgb.nix+13
@@ -77,5 +77,18 @@ in { system, compiler, flags, pkgs, hsPkgs, pkgconfPkgs, ... }:
77 buildable = true;
77 buildable = true;
78 };
78 };
79 };
79 };
80+ tests = {
81+ "tests" = {
82+ depends = [
83+ (hsPkgs."base" or (buildDepError "base"))
84+ (hsPkgs."pkgb" or (buildDepError "pkgb"))
85+ (hsPkgs."process" or (buildDepError "process"))
86+ ];
87+ build-tools = [
88+ (hsPkgs.buildPackages.pkga or (pkgs.buildPackages.pkga or (buildToolDepError "pkga")))
89+ ];
90+ buildable = true;
91+ };
92+ };
80 };
93 };
81 } // rec { src = (pkgs.lib).mkDefault ../pkgb; }
94 } // rec { src = (pkgs.lib).mkDefault ../pkgb; }
test/shell-for/pkga/MainA.hsnew file+4
@@ -0,0 +1,4 @@
1+module Main where
2+
3+main :: IO ()
4+main = putStrLn "This is MainA"
test/shell-for/pkga/pkga.cabal+6
@@ -18,3 +18,9 @@ library
18 , lens
18 , lens
19 , text
19 , text
20 default-language: Haskell2010
20 default-language: Haskell2010
21+
22+executable pkga-exe
23+ main-is: MainA.hs
24+ build-depends: base
25+ hs-source-dirs: .
26+ default-language: Haskell2010
test/shell-for/pkgb/app/tests.hsnew file+6
@@ -0,0 +1,6 @@
1+module Main where
2+
3+import System.Process
4+
5+main :: IO ()
6+main = callProcess "pkga-exe" []
test/shell-for/pkgb/pkgb.cabal+9−2
@@ -26,11 +26,18 @@ library
26
26
27executable pkgb
27executable pkgb
28 main-is: Main.hs
28 main-is: Main.hs
29− -- other-modules:
30− -- other-extensions:
31 build-depends: base
29 build-depends: base
32 , pkgb
30 , pkgb
33 , optparse-applicative
31 , optparse-applicative
34 , text
32 , text
35 hs-source-dirs: app
33 hs-source-dirs: app
36 default-language: Haskell2010
34 default-language: Haskell2010
35+
36+test-suite tests
37+ type: exitcode-stdio-1.0
38+ main-is: tests.hs
39+ hs-source-dirs: app
40+ build-depends: base
41+ , pkgb
42+ , process
43+ build-tools: pkga
test/shell-for/pkgs.nix+9−5
@@ -39,7 +39,7 @@
39 "deepseq".revision = (((hackage."deepseq")."1.4.4.0").revisions).default;
39 "deepseq".revision = (((hackage."deepseq")."1.4.4.0").revisions).default;
40 "random".revision = (((hackage."random")."1.1").revisions).default;
40 "random".revision = (((hackage."random")."1.1").revisions).default;
41 "optparse-applicative".revision = (((hackage."optparse-applicative")."0.15.1.0").revisions).default;
41 "optparse-applicative".revision = (((hackage."optparse-applicative")."0.15.1.0").revisions).default;
42− "network".revision = (((hackage."network")."3.1.0.1").revisions).default;
42+ "network".revision = (((hackage."network")."3.1.1.0").revisions).default;
43 "async".revision = (((hackage."async")."2.2.2").revisions).default;
43 "async".revision = (((hackage."async")."2.2.2").revisions).default;
44 "async".flags.bench = false;
44 "async".flags.bench = false;
45 "conduit".revision = (((hackage."conduit")."1.3.1.1").revisions).default;
45 "conduit".revision = (((hackage."conduit")."1.3.1.1").revisions).default;
@@ -68,7 +68,7 @@
68 "transformers-compat".flags.four = false;
68 "transformers-compat".flags.four = false;
69 "transformers-compat".flags.three = false;
69 "transformers-compat".flags.three = false;
70 "template-haskell".revision = (((hackage."template-haskell")."2.14.0.0").revisions).default;
70 "template-haskell".revision = (((hackage."template-haskell")."2.14.0.0").revisions).default;
71− "mono-traversable".revision = (((hackage."mono-traversable")."1.0.12.0").revisions).default;
71+ "mono-traversable".revision = (((hackage."mono-traversable")."1.0.13.0").revisions).default;
72 "vector".revision = (((hackage."vector")."0.12.0.3").revisions).default;
72 "vector".revision = (((hackage."vector")."0.12.0.3").revisions).default;
73 "vector".flags.unsafechecks = false;
73 "vector".flags.unsafechecks = false;
74 "vector".flags.internalchecks = false;
74 "vector".flags.internalchecks = false;
@@ -77,7 +77,7 @@
77 "call-stack".revision = (((hackage."call-stack")."0.2.0").revisions).default;
77 "call-stack".revision = (((hackage."call-stack")."0.2.0").revisions).default;
78 "primitive".revision = (((hackage."primitive")."0.7.0.0").revisions).default;
78 "primitive".revision = (((hackage."primitive")."0.7.0.0").revisions).default;
79 "profunctors".revision = (((hackage."profunctors")."5.5").revisions).default;
79 "profunctors".revision = (((hackage."profunctors")."5.5").revisions).default;
80− "ansi-terminal".revision = (((hackage."ansi-terminal")."0.10").revisions).default;
80+ "ansi-terminal".revision = (((hackage."ansi-terminal")."0.10.1").revisions).default;
81 "ansi-terminal".flags.example = false;
81 "ansi-terminal".flags.example = false;
82 "tagged".revision = (((hackage."tagged")."0.8.6").revisions).default;
82 "tagged".revision = (((hackage."tagged")."0.8.6").revisions).default;
83 "tagged".flags.transformers = true;
83 "tagged".flags.transformers = true;
@@ -147,7 +147,7 @@
147 "kan-extensions".revision = (((hackage."kan-extensions")."5.2").revisions).default;
147 "kan-extensions".revision = (((hackage."kan-extensions")."5.2").revisions).default;
148 "resourcet".revision = (((hackage."resourcet")."1.2.2").revisions).default;
148 "resourcet".revision = (((hackage."resourcet")."1.2.2").revisions).default;
149 "pretty".revision = (((hackage."pretty")."1.1.3.6").revisions).default;
149 "pretty".revision = (((hackage."pretty")."1.1.3.6").revisions).default;
150− "cabal-doctest".revision = (((hackage."cabal-doctest")."1.0.7").revisions).default;
150+ "cabal-doctest".revision = (((hackage."cabal-doctest")."1.0.8").revisions).default;
151 "ghc-boot-th".revision = (((hackage."ghc-boot-th")."8.6.5").revisions).default;
151 "ghc-boot-th".revision = (((hackage."ghc-boot-th")."8.6.5").revisions).default;
152 "base-orphans".revision = (((hackage."base-orphans")."0.8.1").revisions).default;
152 "base-orphans".revision = (((hackage."base-orphans")."0.8.1").revisions).default;
153 "th-abstraction".revision = (((hackage."th-abstraction")."0.3.1.0").revisions).default;
153 "th-abstraction".revision = (((hackage."th-abstraction")."0.3.1.0").revisions).default;
@@ -189,4 +189,8 @@
189 {
189 {
190 packages = { pkga = ./.plan.nix/pkga.nix; pkgb = ./.plan.nix/pkgb.nix; };
190 packages = { pkga = ./.plan.nix/pkga.nix; pkgb = ./.plan.nix/pkgb.nix; };
191 };
191 };
192+ modules = [
193+ ({ lib, ... }:
194+ { packages = { "pkga" = { flags = {}; }; "pkgb" = { flags = {}; }; }; })
195+ ];
192− }
196+ }
test/stack-simple/pkgs.nix+3−1
@@ -4,7 +4,9 @@
4 packages = {
4 packages = {
5 "transformers" = (((hackage.transformers)."0.5.6.2").revisions).default;
5 "transformers" = (((hackage.transformers)."0.5.6.2").revisions).default;
6 "process" = (((hackage.process)."1.6.5.0").revisions).default;
6 "process" = (((hackage.process)."1.6.5.0").revisions).default;
7− } // { stack-simple = ./stack-simple.nix; };
7+ stack-simple = ./stack-simple.nix;
8+ };
8 };
9 };
9 resolver = "lts-13.26";
10 resolver = "lts-13.26";
11+ modules = [ ({ lib, ... }: { packages = {}; }) { packages = {}; } ];
10 }
12 }
test/stack-simple/stack-simple.nix+55−4
@@ -1,4 +1,43 @@
1+let
2+ buildDepError = pkg:
3+ builtins.throw ''
4+ The Haskell package set does not contain the package: ${pkg} (build dependency).
5+
6+ If you are using Stackage, make sure that you are using a snapshot that contains the package. Otherwise you may need to update the Hackage snapshot you are using, usually by updating haskell.nix.
7+ '';
8+ sysDepError = pkg:
9+ builtins.throw ''
10+ The Nixpkgs package set does not contain the package: ${pkg} (system dependency).
11+
12+ You may need to augment the system package mapping in haskell.nix so that it can be found.
13+ '';
14+ pkgConfDepError = pkg:
15+ builtins.throw ''
16+ The pkg-conf packages does not contain the package: ${pkg} (pkg-conf dependency).
17+
18+ You may need to augment the pkg-conf package mapping in haskell.nix so that it can be found.
19+ '';
20+ exeDepError = pkg:
21+ builtins.throw ''
22+ The local executable components do not include the component: ${pkg} (executable dependency).
23+ '';
24+ legacyExeDepError = pkg:
25+ builtins.throw ''
26+ The Haskell package set does not contain the package: ${pkg} (executable dependency).
27+
28+ If you are using Stackage, make sure that you are using a snapshot that contains the package. Otherwise you may need to update the Hackage snapshot you are using, usually by updating haskell.nix.
29+ '';
30+ buildToolDepError = pkg:
31+ builtins.throw ''
32+ Neither the Haskell package set or the Nixpkgs package set contain the package: ${pkg} (build tool dependency).
33+
34+ If this is a system dependency:
35+ You may need to augment the system package mapping in haskell.nix so that it can be found.
36+
37+ If this is a Haskell dependency:
38+ If you are using Stackage, make sure that you are using a snapshot that contains the package. Otherwise you may need to update the Hackage snapshot you are using, usually by updating haskell.nix.
39+ '';
1−{ system, compiler, flags, pkgs, hsPkgs, pkgconfPkgs, ... }:
40+in { system, compiler, flags, pkgs, hsPkgs, pkgconfPkgs, ... }:
2 ({
41 ({
3 flags = {};
42 flags = {};
4 package = {
43 package = {
@@ -13,17 +52,29 @@
13 synopsis = "";
52 synopsis = "";
14 description = "Please see the README on GitHub at <https://github.com/githubuser/stack-simple#readme>";
53 description = "Please see the README on GitHub at <https://github.com/githubuser/stack-simple#readme>";
15 buildType = "Simple";
54 buildType = "Simple";
55+ isLocal = true;
16 };
56 };
17 components = {
57 components = {
58+ "library" = {
18− "library" = { depends = [ (hsPkgs.base) ]; };
59+ depends = [ (hsPkgs."base" or (buildDepError "base")) ];
60+ buildable = true;
61+ };
19 exes = {
62 exes = {
20 "stack-simple-exe" = {
63 "stack-simple-exe" = {
64+ depends = [
65+ (hsPkgs."base" or (buildDepError "base"))
21− depends = [ (hsPkgs.base) (hsPkgs.stack-simple) ];
66+ (hsPkgs."stack-simple" or (buildDepError "stack-simple"))
67+ ];
68+ buildable = true;
22 };
69 };
23 };
70 };
24 tests = {
71 tests = {
25 "stack-simple-test" = {
72 "stack-simple-test" = {
73+ depends = [
74+ (hsPkgs."base" or (buildDepError "base"))
26− depends = [ (hsPkgs.base) (hsPkgs.stack-simple) ];
75+ (hsPkgs."stack-simple" or (buildDepError "stack-simple"))
76+ ];
77+ buildable = true;
27 };
78 };
28 };
79 };
29 };
80 };
test/tests.sh+13−1
@@ -1,5 +1,5 @@
1#! /usr/bin/env nix-shell
1#! /usr/bin/env nix-shell
2−#! nix-shell -i bash -p bash jq nix
2+#! nix-shell -i bash -p bash jq nix gnused
3
3
4set -euo pipefail
4set -euo pipefail
5
5
@@ -88,6 +88,18 @@ nix-shell $NIX_BUILD_ARGS \
88 --run 'hoogle ConduitT | grep Data.Conduit'
88 --run 'hoogle ConduitT | grep Data.Conduit'
89echo >& 2
89echo >& 2
90
90
91+printf "*** Checking shellFor does not depend on given packages...\n" >& 2
92+drva=$(nix-instantiate ./default.nix -A shell-for.env)
93+echo "-- hello" >> shell-for/pkga/PkgA.hs
94+drvb=$(nix-instantiate ./default.nix -A shell-for.env)
95+sed -i -e '/-- hello/d' shell-for/pkga/PkgA.hs
96+if [ "$drva" != "$drvb" ]; then
97+ printf "FAIL\nShell derivations\n$drva\n$drvb\n are not identical.\n" >& 2
98+ exit 1
99+else
100+ printf "PASS\n" >& 2
101+fi
102+
91printf "*** Checking the maintainer scripts...\n" >& 2
103printf "*** Checking the maintainer scripts...\n" >& 2
92nix build $NIX_BUILD_ARGS --no-link --keep-going -f ../build.nix maintainer-scripts
104nix build $NIX_BUILD_ARGS --no-link --keep-going -f ../build.nix maintainer-scripts
93echo >& 2
105echo >& 2
test/with-packages/.plan.nix/test-with-packages.nix+48−2
@@ -1,4 +1,43 @@
1+let
2+ buildDepError = pkg:
3+ builtins.throw ''
4+ The Haskell package set does not contain the package: ${pkg} (build dependency).
5+
6+ If you are using Stackage, make sure that you are using a snapshot that contains the package. Otherwise you may need to update the Hackage snapshot you are using, usually by updating haskell.nix.
7+ '';
8+ sysDepError = pkg:
9+ builtins.throw ''
10+ The Nixpkgs package set does not contain the package: ${pkg} (system dependency).
11+
12+ You may need to augment the system package mapping in haskell.nix so that it can be found.
13+ '';
14+ pkgConfDepError = pkg:
15+ builtins.throw ''
16+ The pkg-conf packages does not contain the package: ${pkg} (pkg-conf dependency).
17+
18+ You may need to augment the pkg-conf package mapping in haskell.nix so that it can be found.
19+ '';
20+ exeDepError = pkg:
21+ builtins.throw ''
22+ The local executable components do not include the component: ${pkg} (executable dependency).
23+ '';
24+ legacyExeDepError = pkg:
25+ builtins.throw ''
26+ The Haskell package set does not contain the package: ${pkg} (executable dependency).
27+
28+ If you are using Stackage, make sure that you are using a snapshot that contains the package. Otherwise you may need to update the Hackage snapshot you are using, usually by updating haskell.nix.
29+ '';
30+ buildToolDepError = pkg:
31+ builtins.throw ''
32+ Neither the Haskell package set or the Nixpkgs package set contain the package: ${pkg} (build tool dependency).
33+
34+ If this is a system dependency:
35+ You may need to augment the system package mapping in haskell.nix so that it can be found.
36+
37+ If this is a Haskell dependency:
38+ If you are using Stackage, make sure that you are using a snapshot that contains the package. Otherwise you may need to update the Hackage snapshot you are using, usually by updating haskell.nix.
39+ '';
1−{ system, compiler, flags, pkgs, hsPkgs, pkgconfPkgs, ... }:
40+in { system, compiler, flags, pkgs, hsPkgs, pkgconfPkgs, ... }:
2 {
41 {
3 flags = {};
42 flags = {};
4 package = {
43 package = {
@@ -13,8 +52,15 @@
13 synopsis = "";
52 synopsis = "";
14 description = "";
53 description = "";
15 buildType = "Simple";
54 buildType = "Simple";
55+ isLocal = true;
16 };
56 };
17 components = {
57 components = {
18− "library" = { depends = [ (hsPkgs.base) (hsPkgs.lens) ]; };
58+ "library" = {
59+ depends = [
60+ (hsPkgs."base" or (buildDepError "base"))
61+ (hsPkgs."lens" or (buildDepError "lens"))
62+ ];
63+ buildable = true;
64+ };
19 };
65 };
20 } // rec { src = (pkgs.lib).mkDefault ../.; }
66 } // rec { src = (pkgs.lib).mkDefault ../.; }
test/with-packages/pkgs.nix+45−40
@@ -4,7 +4,7 @@
4 packages = {
4 packages = {
5 "void".revision = (((hackage."void")."0.7.3").revisions).default;
5 "void".revision = (((hackage."void")."0.7.3").revisions).default;
6 "void".flags.safe = false;
6 "void".flags.safe = false;
7− "semigroupoids".revision = (((hackage."semigroupoids")."5.3.2").revisions).default;
7+ "semigroupoids".revision = (((hackage."semigroupoids")."5.3.3").revisions).default;
8 "semigroupoids".flags.comonad = true;
8 "semigroupoids".flags.comonad = true;
9 "semigroupoids".flags.doctests = true;
9 "semigroupoids".flags.doctests = true;
10 "semigroupoids".flags.unordered-containers = true;
10 "semigroupoids".flags.unordered-containers = true;
@@ -12,25 +12,25 @@
12 "semigroupoids".flags.tagged = true;
12 "semigroupoids".flags.tagged = true;
13 "semigroupoids".flags.containers = true;
13 "semigroupoids".flags.containers = true;
14 "semigroupoids".flags.contravariant = true;
14 "semigroupoids".flags.contravariant = true;
15− "free".revision = (((hackage."free")."5.1.1").revisions).default;
15+ "free".revision = (((hackage."free")."5.1.2").revisions).default;
16− "exceptions".revision = (((hackage."exceptions")."0.10.2").revisions).default;
16+ "exceptions".revision = (((hackage."exceptions")."0.10.3").revisions).default;
17− "binary".revision = (((hackage."binary")."0.8.5.1").revisions).default;
17+ "binary".revision = (((hackage."binary")."0.8.6.0").revisions).default;
18− "ghc-prim".revision = (((hackage."ghc-prim")."0.5.2.0").revisions).default;
18+ "ghc-prim".revision = (((hackage."ghc-prim")."0.5.3").revisions).default;
19− "bifunctors".revision = (((hackage."bifunctors")."5.5.4").revisions).default;
19+ "bifunctors".revision = (((hackage."bifunctors")."5.5.5").revisions).default;
20 "bifunctors".flags.semigroups = true;
20 "bifunctors".flags.semigroups = true;
21 "bifunctors".flags.tagged = true;
21 "bifunctors".flags.tagged = true;
22− "stm".revision = (((hackage."stm")."2.4.5.1").revisions).default;
22+ "stm".revision = (((hackage."stm")."2.5.0.0").revisions).default;
23 "unix".revision = (((hackage."unix")."2.7.2.2").revisions).default;
23 "unix".revision = (((hackage."unix")."2.7.2.2").revisions).default;
24 "mtl".revision = (((hackage."mtl")."2.2.2").revisions).default;
24 "mtl".revision = (((hackage."mtl")."2.2.2").revisions).default;
25 "rts".revision = (((hackage."rts")."1.0").revisions).default;
25 "rts".revision = (((hackage."rts")."1.0").revisions).default;
26 "adjunctions".revision = (((hackage."adjunctions")."4.4").revisions).default;
26 "adjunctions".revision = (((hackage."adjunctions")."4.4").revisions).default;
27 "invariant".revision = (((hackage."invariant")."0.5.3").revisions).default;
27 "invariant".revision = (((hackage."invariant")."0.5.3").revisions).default;
28− "distributive".revision = (((hackage."distributive")."0.6").revisions).default;
28+ "distributive".revision = (((hackage."distributive")."0.6.1").revisions).default;
29 "distributive".flags.semigroups = true;
29 "distributive".flags.semigroups = true;
30 "distributive".flags.tagged = true;
30 "distributive".flags.tagged = true;
31 "parallel".revision = (((hackage."parallel")."3.2.2.0").revisions).default;
31 "parallel".revision = (((hackage."parallel")."3.2.2.0").revisions).default;
32− "deepseq".revision = (((hackage."deepseq")."1.4.3.0").revisions).default;
32+ "deepseq".revision = (((hackage."deepseq")."1.4.4.0").revisions).default;
33− "semigroups".revision = (((hackage."semigroups")."0.19").revisions).default;
33+ "semigroups".revision = (((hackage."semigroups")."0.19.1").revisions).default;
34 "semigroups".flags.bytestring = true;
34 "semigroups".flags.bytestring = true;
35 "semigroups".flags.unordered-containers = true;
35 "semigroups".flags.unordered-containers = true;
36 "semigroups".flags.text = true;
36 "semigroups".flags.text = true;
@@ -43,7 +43,7 @@
43 "semigroups".flags.bytestring-builder = false;
43 "semigroups".flags.bytestring-builder = false;
44 "semigroups".flags.template-haskell = true;
44 "semigroups".flags.template-haskell = true;
45 "parsec".revision = (((hackage."parsec")."3.1.13.0").revisions).default;
45 "parsec".revision = (((hackage."parsec")."3.1.13.0").revisions).default;
46− "directory".revision = (((hackage."directory")."1.3.1.5").revisions).default;
46+ "directory".revision = (((hackage."directory")."1.3.3.0").revisions).default;
47 "transformers-compat".revision = (((hackage."transformers-compat")."0.6.5").revisions).default;
47 "transformers-compat".revision = (((hackage."transformers-compat")."0.6.5").revisions).default;
48 "transformers-compat".flags.five = false;
48 "transformers-compat".flags.five = false;
49 "transformers-compat".flags.generic-deriving = true;
49 "transformers-compat".flags.generic-deriving = true;
@@ -52,19 +52,19 @@
52 "transformers-compat".flags.mtl = true;
52 "transformers-compat".flags.mtl = true;
53 "transformers-compat".flags.four = false;
53 "transformers-compat".flags.four = false;
54 "transformers-compat".flags.three = false;
54 "transformers-compat".flags.three = false;
55− "template-haskell".revision = (((hackage."template-haskell")."2.13.0.0").revisions).default;
55+ "template-haskell".revision = (((hackage."template-haskell")."2.14.0.0").revisions).default;
56 "vector".revision = (((hackage."vector")."0.12.0.3").revisions).default;
56 "vector".revision = (((hackage."vector")."0.12.0.3").revisions).default;
57 "vector".flags.unsafechecks = false;
57 "vector".flags.unsafechecks = false;
58 "vector".flags.internalchecks = false;
58 "vector".flags.internalchecks = false;
59 "vector".flags.wall = false;
59 "vector".flags.wall = false;
60 "vector".flags.boundschecks = true;
60 "vector".flags.boundschecks = true;
61− "call-stack".revision = (((hackage."call-stack")."0.1.0").revisions).default;
61+ "call-stack".revision = (((hackage."call-stack")."0.2.0").revisions).default;
62 "primitive".revision = (((hackage."primitive")."0.7.0.0").revisions).default;
62 "primitive".revision = (((hackage."primitive")."0.7.0.0").revisions).default;
63− "profunctors".revision = (((hackage."profunctors")."5.4").revisions).default;
63+ "profunctors".revision = (((hackage."profunctors")."5.5").revisions).default;
64 "tagged".revision = (((hackage."tagged")."0.8.6").revisions).default;
64 "tagged".revision = (((hackage."tagged")."0.8.6").revisions).default;
65 "tagged".flags.transformers = true;
65 "tagged".flags.transformers = true;
66 "tagged".flags.deepseq = true;
66 "tagged".flags.deepseq = true;
67− "lens".revision = (((hackage."lens")."4.17.1").revisions).default;
67+ "lens".revision = (((hackage."lens")."4.18.1").revisions).default;
68 "lens".flags.j = false;
68 "lens".flags.j = false;
69 "lens".flags.test-properties = true;
69 "lens".flags.test-properties = true;
70 "lens".flags.old-inline-pragmas = false;
70 "lens".flags.old-inline-pragmas = false;
@@ -76,8 +76,8 @@
76 "lens".flags.dump-splices = false;
76 "lens".flags.dump-splices = false;
77 "lens".flags.test-hunit = true;
77 "lens".flags.test-hunit = true;
78 "lens".flags.safe = false;
78 "lens".flags.safe = false;
79− "containers".revision = (((hackage."containers")."0.5.11.0").revisions).default;
79+ "containers".revision = (((hackage."containers")."0.6.0.1").revisions).default;
80− "reflection".revision = (((hackage."reflection")."2.1.4").revisions).default;
80+ "reflection".revision = (((hackage."reflection")."2.1.5").revisions).default;
81 "reflection".flags.slow = false;
81 "reflection".flags.slow = false;
82 "reflection".flags.template-haskell = true;
82 "reflection".flags.template-haskell = true;
83 "bytestring".revision = (((hackage."bytestring")."0.10.8.2").revisions).default;
83 "bytestring".revision = (((hackage."bytestring")."0.10.8.2").revisions).default;
@@ -86,11 +86,12 @@
86 "contravariant".flags.semigroups = true;
86 "contravariant".flags.semigroups = true;
87 "contravariant".flags.tagged = true;
87 "contravariant".flags.tagged = true;
88 "contravariant".flags.statevar = true;
88 "contravariant".flags.statevar = true;
89+ "type-equality".revision = (((hackage."type-equality")."1").revisions).default;
89 "text".revision = (((hackage."text")."1.2.3.1").revisions).default;
90 "text".revision = (((hackage."text")."1.2.3.1").revisions).default;
90− "Cabal".revision = (((hackage."Cabal")."2.2.0.1").revisions).default;
91+ "Cabal".revision = (((hackage."Cabal")."2.4.0.1").revisions).default;
91 "unordered-containers".revision = (((hackage."unordered-containers")."0.2.10.0").revisions).default;
92 "unordered-containers".revision = (((hackage."unordered-containers")."0.2.10.0").revisions).default;
92 "unordered-containers".flags.debug = false;
93 "unordered-containers".flags.debug = false;
93− "base".revision = (((hackage."base")."4.11.1.0").revisions).default;
94+ "base".revision = (((hackage."base")."4.12.0.0").revisions).default;
94 "comonad".revision = (((hackage."comonad")."5.0.5").revisions).default;
95 "comonad".revision = (((hackage."comonad")."5.0.5").revisions).default;
95 "comonad".flags.distributive = true;
96 "comonad".flags.distributive = true;
96 "comonad".flags.test-doctests = true;
97 "comonad".flags.test-doctests = true;
@@ -104,43 +105,43 @@
104 "hashable".flags.examples = false;
105 "hashable".flags.examples = false;
105 "transformers-base".revision = (((hackage."transformers-base")."0.4.5.2").revisions).default;
106 "transformers-base".revision = (((hackage."transformers-base")."0.4.5.2").revisions).default;
106 "transformers-base".flags.orphaninstances = true;
107 "transformers-base".flags.orphaninstances = true;
107− "filepath".revision = (((hackage."filepath")."1.4.2").revisions).default;
108+ "filepath".revision = (((hackage."filepath")."1.4.2.1").revisions).default;
108− "process".revision = (((hackage."process")."1.6.3.0").revisions).default;
109+ "process".revision = (((hackage."process")."1.6.5.0").revisions).default;
109 "kan-extensions".revision = (((hackage."kan-extensions")."5.2").revisions).default;
110 "kan-extensions".revision = (((hackage."kan-extensions")."5.2").revisions).default;
110 "pretty".revision = (((hackage."pretty")."1.1.3.6").revisions).default;
111 "pretty".revision = (((hackage."pretty")."1.1.3.6").revisions).default;
111− "cabal-doctest".revision = (((hackage."cabal-doctest")."1.0.6").revisions).default;
112+ "cabal-doctest".revision = (((hackage."cabal-doctest")."1.0.8").revisions).default;
112− "ghc-boot-th".revision = (((hackage."ghc-boot-th")."8.4.4").revisions).default;
113+ "ghc-boot-th".revision = (((hackage."ghc-boot-th")."8.6.5").revisions).default;
113 "base-orphans".revision = (((hackage."base-orphans")."0.8.1").revisions).default;
114 "base-orphans".revision = (((hackage."base-orphans")."0.8.1").revisions).default;
114 "th-abstraction".revision = (((hackage."th-abstraction")."0.3.1.0").revisions).default;
115 "th-abstraction".revision = (((hackage."th-abstraction")."0.3.1.0").revisions).default;
115− "array".revision = (((hackage."array")."0.5.2.0").revisions).default;
116+ "array".revision = (((hackage."array")."0.5.3.0").revisions).default;
116 "integer-gmp".revision = (((hackage."integer-gmp")."1.0.2.0").revisions).default;
117 "integer-gmp".revision = (((hackage."integer-gmp")."1.0.2.0").revisions).default;
117 };
118 };
118 compiler = {
119 compiler = {
119− version = "8.4.4";
120+ version = "8.6.5";
120− nix-name = "ghc844";
121+ nix-name = "ghc865";
121 packages = {
122 packages = {
122− "binary" = "0.8.5.1";
123+ "binary" = "0.8.6.0";
123− "ghc-prim" = "0.5.2.0";
124+ "ghc-prim" = "0.5.3";
124− "stm" = "2.4.5.1";
125+ "stm" = "2.5.0.0";
125 "unix" = "2.7.2.2";
126 "unix" = "2.7.2.2";
126 "mtl" = "2.2.2";
127 "mtl" = "2.2.2";
127 "rts" = "1.0";
128 "rts" = "1.0";
128− "deepseq" = "1.4.3.0";
129+ "deepseq" = "1.4.4.0";
129 "parsec" = "3.1.13.0";
130 "parsec" = "3.1.13.0";
130− "directory" = "1.3.1.5";
131+ "directory" = "1.3.3.0";
131− "template-haskell" = "2.13.0.0";
132+ "template-haskell" = "2.14.0.0";
132− "containers" = "0.5.11.0";
133+ "containers" = "0.6.0.1";
133 "bytestring" = "0.10.8.2";
134 "bytestring" = "0.10.8.2";
134 "text" = "1.2.3.1";
135 "text" = "1.2.3.1";
135− "Cabal" = "2.2.0.1";
136+ "Cabal" = "2.4.0.1";
136− "base" = "4.11.1.0";
137+ "base" = "4.12.0.0";
137 "time" = "1.8.0.2";
138 "time" = "1.8.0.2";
138− "transformers" = "0.5.5.0";
139+ "transformers" = "0.5.6.2";
139− "filepath" = "1.4.2";
140+ "filepath" = "1.4.2.1";
140− "process" = "1.6.3.0";
141+ "process" = "1.6.5.0";
141 "pretty" = "1.1.3.6";
142 "pretty" = "1.1.3.6";
142− "ghc-boot-th" = "8.4.4";
143+ "ghc-boot-th" = "8.6.5";
143− "array" = "0.5.2.0";
144+ "array" = "0.5.3.0";
144 "integer-gmp" = "1.0.2.0";
145 "integer-gmp" = "1.0.2.0";
145 };
146 };
146 };
147 };
@@ -149,4 +150,8 @@
149 {
150 {
150 packages = { test-with-packages = ./.plan.nix/test-with-packages.nix; };
151 packages = { test-with-packages = ./.plan.nix/test-with-packages.nix; };
151 };
152 };
153+ modules = [
154+ ({ lib, ... }:
155+ { packages = { "test-with-packages" = { flags = {}; }; }; })
156+ ];
152 }
157 }