on iko/ghcjs-patch-master help sign in
Add default for shellFor packages (#242)

Uses the `isLocal` for property set by `plan-to-nix` and `stack-to-nix` on packages where the source is referenced in the `cabal.project` or `stack.yaml` file.

commitfdcb2da2a8ee0e11a1aaac70e93ebbef24047a06 authorHamish Mackenzie <Hamish.Mackenzie@iohk.io> dateTue 1 Oct 2019, 11:10 (7 years ago) parent792cf12
9 files changed+187−67
builder/hspkg-builder.nix+1−1 builder/shell-for.nix+9−1 lib/default.nix+5 modules/package.nix+5 nix-tools/nix-tools-src.json+3−3 test/shell-for/.plan.nix/pkga.nix+49−2 test/shell-for/.plan.nix/pkgb.nix+53−11 test/shell-for/default.nix+14−2 test/shell-for/pkgs.nix+48−47
builder/hspkg-builder.nix+1−1
@@ -51,7 +51,7 @@ let
5151
5252in {
5353 components = haskellLib.applyComponents buildComp config;
54− inherit (package) identifier;
54+ inherit (package) identifier detailLevel isLocal;
5555 inherit setup cabalFile;
5656 isHaskell = true;
5757}
builder/shell-for.nix+9−1
@@ -1,6 +1,14 @@
11{ lib, stdenv, glibcLocales, pkgconfig, ghcForComponent, makeConfigFiles, hsPkgs, hoogleLocal, haskellLib }:
22
3−{ packages, additional ? _: [], withHoogle ? true, ... } @ args:
3+{ packages ? ps:
4+ let
5+ selected = haskellLib.selectLocalPackages ps;
6+ in
7+ builtins.trace ("Shell for " + toString (builtins.attrNames selected))
8+ (builtins.attrValues selected)
9+, additional ? _: []
10+, withHoogle ? true
11+, ... } @ args:
412
513let
614 selected = packages hsPkgs;
lib/default.nix+5
@@ -61,6 +61,11 @@ with haskellLib;
6161 isTest = componentId: componentId.ctype == "test";
6262 isBenchmark = componentId: componentId.ctype == "bench";
6363
64+ # Was there a reference to the package source in the `cabal.project` or `stack.yaml` file.
65+ # This is used to make the default `packages` list for `shellFor`.
66+ isLocalPackage = p: p.isLocal or false;
67+ selectLocalPackages = ps: lib.filterAttrs (n: p: p != null && isLocalPackage p) ps;
68+
6469 # Format a componentId as it should appear as a target on the
6570 # command line of the setup script.
6671 componentTarget = componentId:
modules/package.nix+5
@@ -126,6 +126,11 @@ in {
126126 type = bool;
127127 default = false;
128128 };
129+
130+ isLocal = mkOption {
131+ type = bool;
132+ default = false;
133+ };
129134 };
130135
131136 components = let
nix-tools/nix-tools-src.json+3−3
@@ -1,7 +1,7 @@
11{
22 "url": "https://github.com/input-output-hk/nix-tools",
3− "rev": "9a08485cb33a60bbf18c2f442020b12ff6373d24",
4− "date": "2019-09-25T17:39:56+08:00",
5− "sha256": "04ijh8fgnc4f8zdvysv2qkhp0mq60jdhp3agm2v47xlq8r456vlm",
3+ "rev": "47ab47199194990681d24afd725e3f0e942e4f3d",
4+ "date": "2019-09-30T23:06:49+13:00",
5+ "sha256": "1wbfs4k2sadzz0swrpbmdhsph0icfqni8f3dzxcny0vzpx7fiwfq",
66 "fetchSubmodules": false
77}
test/shell-for/.plan.nix/pkga.nix+49−2
@@ -1,4 +1,43 @@
1−{ system, compiler, flags, pkgs, hsPkgs, pkgconfPkgs, ... }:
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+ '';
40+in { system, compiler, flags, pkgs, hsPkgs, pkgconfPkgs, ... }:
241 {
342 flags = {};
443 package = {
@@ -13,8 +52,16 @@
1352 synopsis = "";
1453 description = "";
1554 buildType = "Simple";
55+ isLocal = true;
1656 };
1757 components = {
18− "library" = { depends = [ (hsPkgs.base) (hsPkgs.lens) (hsPkgs.text) ]; };
58+ "library" = {
59+ depends = [
60+ (hsPkgs."base" or (buildDepError "base"))
61+ (hsPkgs."lens" or (buildDepError "lens"))
62+ (hsPkgs."text" or (buildDepError "text"))
63+ ];
64+ buildable = true;
65+ };
1966 };
2067 } // rec { src = (pkgs.lib).mkDefault ../pkga; }
test/shell-for/.plan.nix/pkgb.nix+53−11
@@ -1,4 +1,43 @@
1−{ system, compiler, flags, pkgs, hsPkgs, pkgconfPkgs, ... }:
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+ '';
40+in { system, compiler, flags, pkgs, hsPkgs, pkgconfPkgs, ... }:
241 {
342 flags = {};
443 package = {
@@ -13,26 +52,29 @@
1352 synopsis = "";
1453 description = "";
1554 buildType = "Simple";
55+ isLocal = true;
1656 };
1757 components = {
1858 "library" = {
1959 depends = [
20− (hsPkgs.base)
21− (hsPkgs.pkga)
22− (hsPkgs.conduit)
23− (hsPkgs.conduit-extra)
24− (hsPkgs.directory)
25− (hsPkgs.resourcet)
60+ (hsPkgs."base" or (buildDepError "base"))
61+ (hsPkgs."pkga" or (buildDepError "pkga"))
62+ (hsPkgs."conduit" or (buildDepError "conduit"))
63+ (hsPkgs."conduit-extra" or (buildDepError "conduit-extra"))
64+ (hsPkgs."directory" or (buildDepError "directory"))
65+ (hsPkgs."resourcet" or (buildDepError "resourcet"))
2666 ];
67+ buildable = true;
2768 };
2869 exes = {
2970 "pkgb" = {
3071 depends = [
31− (hsPkgs.base)
32− (hsPkgs.pkgb)
33− (hsPkgs.optparse-applicative)
34− (hsPkgs.text)
72+ (hsPkgs."base" or (buildDepError "base"))
73+ (hsPkgs."pkgb" or (buildDepError "pkgb"))
74+ (hsPkgs."optparse-applicative" or (buildDepError "optparse-applicative"))
75+ (hsPkgs."text" or (buildDepError "text"))
3576 ];
77+ buildable = true;
3678 };
3779 };
3880 };
test/shell-for/default.nix+14−2
@@ -33,7 +33,16 @@ let
3333 buildInputs = [ cabal-install ];
3434 };
3535
36−in
36+ envDefault = pkgSet.config.hsPkgs.shellFor {
37+ # The default implementation of packages should use isLocal and the
38+ # result should be the same as:
39+ # packages = ps: with ps; [ pkga pkgb ];
40+ # This adds cabal-install to the shell, which helps tests because
41+ # they use a nix-shell --pure. Normally you would BYO cabal-install.
42+ buildInputs = [ cabal-install ];
43+ };
44+
45+ in
3746 stdenv.mkDerivation {
3847 name = "shell-for-test";
3948
@@ -46,6 +55,9 @@ in
4655 printf "checking that the shell env has the dependencies...\n" >& 2
4756 ${env.ghc}/bin/runghc conduit-test.hs
4857
58+ printf "checking that the shell envDefault has the dependencies...\n" >& 2
59+ ${envDefault.ghc}/bin/runghc conduit-test.hs
60+
4961 touch $out
5062 '';
5163
@@ -57,6 +69,6 @@ in
5769 inherit pkgSet;
5870
5971 # Used for testing externally with nix-shell (../tests.sh).
60− inherit env envPkga;
72+ inherit env envPkga envDefault;
6173 };
6274}
test/shell-for/pkgs.nix+48−47
@@ -4,7 +4,7 @@
44 packages = {
55 "void".revision = (((hackage."void")."0.7.3").revisions).default;
66 "void".flags.safe = false;
7− "semigroupoids".revision = (((hackage."semigroupoids")."5.3.2").revisions).default;
7+ "semigroupoids".revision = (((hackage."semigroupoids")."5.3.3").revisions).default;
88 "semigroupoids".flags.comonad = true;
99 "semigroupoids".flags.doctests = true;
1010 "semigroupoids".flags.unordered-containers = true;
@@ -12,38 +12,38 @@
1212 "semigroupoids".flags.tagged = true;
1313 "semigroupoids".flags.containers = true;
1414 "semigroupoids".flags.contravariant = true;
15− "free".revision = (((hackage."free")."5.1.1").revisions).default;
16− "exceptions".revision = (((hackage."exceptions")."0.10.2").revisions).default;
17− "binary".revision = (((hackage."binary")."0.8.5.1").revisions).default;
18− "ghc-prim".revision = (((hackage."ghc-prim")."0.5.2.0").revisions).default;
19− "bifunctors".revision = (((hackage."bifunctors")."5.5.4").revisions).default;
15+ "free".revision = (((hackage."free")."5.1.2").revisions).default;
16+ "exceptions".revision = (((hackage."exceptions")."0.10.3").revisions).default;
17+ "binary".revision = (((hackage."binary")."0.8.6.0").revisions).default;
18+ "ghc-prim".revision = (((hackage."ghc-prim")."0.5.3").revisions).default;
19+ "bifunctors".revision = (((hackage."bifunctors")."5.5.5").revisions).default;
2020 "bifunctors".flags.semigroups = true;
2121 "bifunctors".flags.tagged = true;
2222 "split".revision = (((hackage."split")."0.2.3.3").revisions).default;
23− "stm".revision = (((hackage."stm")."2.4.5.1").revisions).default;
23+ "stm".revision = (((hackage."stm")."2.5.0.0").revisions).default;
2424 "unix".revision = (((hackage."unix")."2.7.2.2").revisions).default;
2525 "mtl".revision = (((hackage."mtl")."2.2.2").revisions).default;
26− "zlib".revision = (((hackage."zlib")."0.6.2").revisions).default;
26+ "zlib".revision = (((hackage."zlib")."0.6.2.1").revisions).default;
2727 "zlib".flags.non-blocking-ffi = false;
2828 "zlib".flags.pkg-config = false;
2929 "rts".revision = (((hackage."rts")."1.0").revisions).default;
3030 "adjunctions".revision = (((hackage."adjunctions")."4.4").revisions).default;
3131 "invariant".revision = (((hackage."invariant")."0.5.3").revisions).default;
32− "distributive".revision = (((hackage."distributive")."0.6").revisions).default;
32+ "distributive".revision = (((hackage."distributive")."0.6.1").revisions).default;
3333 "distributive".flags.semigroups = true;
3434 "distributive".flags.tagged = true;
3535 "scientific".revision = (((hackage."scientific")."0.3.6.2").revisions).default;
3636 "scientific".flags.integer-simple = false;
3737 "scientific".flags.bytestring-builder = false;
3838 "parallel".revision = (((hackage."parallel")."3.2.2.0").revisions).default;
39− "deepseq".revision = (((hackage."deepseq")."1.4.3.0").revisions).default;
39+ "deepseq".revision = (((hackage."deepseq")."1.4.4.0").revisions).default;
4040 "random".revision = (((hackage."random")."1.1").revisions).default;
41− "optparse-applicative".revision = (((hackage."optparse-applicative")."0.14.3.0").revisions).default;
41+ "optparse-applicative".revision = (((hackage."optparse-applicative")."0.15.1.0").revisions).default;
4242 "network".revision = (((hackage."network")."3.1.0.1").revisions).default;
4343 "async".revision = (((hackage."async")."2.2.2").revisions).default;
4444 "async".flags.bench = false;
4545 "conduit".revision = (((hackage."conduit")."1.3.1.1").revisions).default;
46− "semigroups".revision = (((hackage."semigroups")."0.19").revisions).default;
46+ "semigroups".revision = (((hackage."semigroups")."0.19.1").revisions).default;
4747 "semigroups".flags.bytestring = true;
4848 "semigroups".flags.unordered-containers = true;
4949 "semigroups".flags.text = true;
@@ -56,9 +56,9 @@
5656 "semigroups".flags.bytestring-builder = false;
5757 "semigroups".flags.template-haskell = true;
5858 "parsec".revision = (((hackage."parsec")."3.1.13.0").revisions).default;
59− "hsc2hs".revision = (((hackage."hsc2hs")."0.68.3").revisions).default;
59+ "hsc2hs".revision = (((hackage."hsc2hs")."0.68.6").revisions).default;
6060 "hsc2hs".flags.in-ghc-tree = false;
61− "directory".revision = (((hackage."directory")."1.3.1.5").revisions).default;
61+ "directory".revision = (((hackage."directory")."1.3.3.0").revisions).default;
6262 "transformers-compat".revision = (((hackage."transformers-compat")."0.6.5").revisions).default;
6363 "transformers-compat".flags.five = false;
6464 "transformers-compat".flags.generic-deriving = true;
@@ -67,22 +67,22 @@
6767 "transformers-compat".flags.mtl = true;
6868 "transformers-compat".flags.four = false;
6969 "transformers-compat".flags.three = false;
70− "template-haskell".revision = (((hackage."template-haskell")."2.13.0.0").revisions).default;
71− "mono-traversable".revision = (((hackage."mono-traversable")."1.0.11.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;
7272 "vector".revision = (((hackage."vector")."0.12.0.3").revisions).default;
7373 "vector".flags.unsafechecks = false;
7474 "vector".flags.internalchecks = false;
7575 "vector".flags.wall = false;
7676 "vector".flags.boundschecks = true;
77− "call-stack".revision = (((hackage."call-stack")."0.1.0").revisions).default;
77+ "call-stack".revision = (((hackage."call-stack")."0.2.0").revisions).default;
7878 "primitive".revision = (((hackage."primitive")."0.7.0.0").revisions).default;
79− "profunctors".revision = (((hackage."profunctors")."5.4").revisions).default;
80− "ansi-terminal".revision = (((hackage."ansi-terminal")."0.9.1").revisions).default;
79+ "profunctors".revision = (((hackage."profunctors")."5.5").revisions).default;
80+ "ansi-terminal".revision = (((hackage."ansi-terminal")."0.10").revisions).default;
8181 "ansi-terminal".flags.example = false;
8282 "tagged".revision = (((hackage."tagged")."0.8.6").revisions).default;
8383 "tagged".flags.transformers = true;
8484 "tagged".flags.deepseq = true;
85− "lens".revision = (((hackage."lens")."4.17.1").revisions).default;
85+ "lens".revision = (((hackage."lens")."4.18.1").revisions).default;
8686 "lens".flags.j = false;
8787 "lens".flags.test-properties = true;
8888 "lens".flags.old-inline-pragmas = false;
@@ -95,11 +95,11 @@
9595 "lens".flags.test-hunit = true;
9696 "lens".flags.safe = false;
9797 "unliftio-core".revision = (((hackage."unliftio-core")."0.1.2.0").revisions).default;
98− "containers".revision = (((hackage."containers")."0.5.11.0").revisions).default;
98+ "containers".revision = (((hackage."containers")."0.6.0.1").revisions).default;
9999 "integer-logarithms".revision = (((hackage."integer-logarithms")."1.0.3").revisions).default;
100100 "integer-logarithms".flags.check-bounds = false;
101101 "integer-logarithms".flags.integer-gmp = true;
102− "reflection".revision = (((hackage."reflection")."2.1.4").revisions).default;
102+ "reflection".revision = (((hackage."reflection")."2.1.5").revisions).default;
103103 "reflection".flags.slow = false;
104104 "reflection".flags.template-haskell = true;
105105 "streaming-commons".revision = (((hackage."streaming-commons")."0.2.1.1").revisions).default;
@@ -108,16 +108,17 @@
108108 "ansi-wl-pprint".revision = (((hackage."ansi-wl-pprint")."0.6.9").revisions).default;
109109 "ansi-wl-pprint".flags.example = false;
110110 "StateVar".revision = (((hackage."StateVar")."1.2").revisions).default;
111− "typed-process".revision = (((hackage."typed-process")."0.2.5.0").revisions).default;
111+ "typed-process".revision = (((hackage."typed-process")."0.2.6.0").revisions).default;
112112 "contravariant".revision = (((hackage."contravariant")."1.5.2").revisions).default;
113113 "contravariant".flags.semigroups = true;
114114 "contravariant".flags.tagged = true;
115115 "contravariant".flags.statevar = true;
116+ "type-equality".revision = (((hackage."type-equality")."1").revisions).default;
116117 "text".revision = (((hackage."text")."1.2.3.1").revisions).default;
117− "Cabal".revision = (((hackage."Cabal")."2.2.0.1").revisions).default;
118+ "Cabal".revision = (((hackage."Cabal")."2.4.0.1").revisions).default;
118119 "unordered-containers".revision = (((hackage."unordered-containers")."0.2.10.0").revisions).default;
119120 "unordered-containers".flags.debug = false;
120− "base".revision = (((hackage."base")."4.11.1.0").revisions).default;
121+ "base".revision = (((hackage."base")."4.12.0.0").revisions).default;
121122 "comonad".revision = (((hackage."comonad")."5.0.5").revisions).default;
122123 "comonad".flags.distributive = true;
123124 "comonad".flags.test-doctests = true;
@@ -136,50 +137,50 @@
136137 "hashable".flags.integer-gmp = true;
137138 "hashable".flags.sse41 = false;
138139 "hashable".flags.examples = false;
139− "attoparsec".revision = (((hackage."attoparsec")."0.13.2.2").revisions).default;
140+ "attoparsec".revision = (((hackage."attoparsec")."0.13.2.3").revisions).default;
140141 "attoparsec".flags.developer = false;
141142 "colour".revision = (((hackage."colour")."2.3.5").revisions).default;
142143 "transformers-base".revision = (((hackage."transformers-base")."0.4.5.2").revisions).default;
143144 "transformers-base".flags.orphaninstances = true;
144− "filepath".revision = (((hackage."filepath")."1.4.2").revisions).default;
145+ "filepath".revision = (((hackage."filepath")."1.4.2.1").revisions).default;
145146 "process".revision = (((hackage."process")."1.6.5.0").revisions).default;
146147 "kan-extensions".revision = (((hackage."kan-extensions")."5.2").revisions).default;
147148 "resourcet".revision = (((hackage."resourcet")."1.2.2").revisions).default;
148149 "pretty".revision = (((hackage."pretty")."1.1.3.6").revisions).default;
149− "cabal-doctest".revision = (((hackage."cabal-doctest")."1.0.6").revisions).default;
150− "ghc-boot-th".revision = (((hackage."ghc-boot-th")."8.4.4").revisions).default;
150+ "cabal-doctest".revision = (((hackage."cabal-doctest")."1.0.7").revisions).default;
151+ "ghc-boot-th".revision = (((hackage."ghc-boot-th")."8.6.5").revisions).default;
151152 "base-orphans".revision = (((hackage."base-orphans")."0.8.1").revisions).default;
152153 "th-abstraction".revision = (((hackage."th-abstraction")."0.3.1.0").revisions).default;
153− "array".revision = (((hackage."array")."0.5.2.0").revisions).default;
154− "conduit-extra".revision = (((hackage."conduit-extra")."1.3.3").revisions).default;
154+ "array".revision = (((hackage."array")."0.5.3.0").revisions).default;
155+ "conduit-extra".revision = (((hackage."conduit-extra")."1.3.4").revisions).default;
155156 "integer-gmp".revision = (((hackage."integer-gmp")."1.0.2.0").revisions).default;
156157 };
157158 compiler = {
158− version = "8.4.4";
159− nix-name = "ghc844";
159+ version = "8.6.5";
160+ nix-name = "ghc865";
160161 packages = {
161− "binary" = "0.8.5.1";
162− "ghc-prim" = "0.5.2.0";
163− "stm" = "2.4.5.1";
162+ "binary" = "0.8.6.0";
163+ "ghc-prim" = "0.5.3";
164+ "stm" = "2.5.0.0";
164165 "unix" = "2.7.2.2";
165166 "mtl" = "2.2.2";
166167 "rts" = "1.0";
167− "deepseq" = "1.4.3.0";
168+ "deepseq" = "1.4.4.0";
168169 "parsec" = "3.1.13.0";
169− "directory" = "1.3.1.5";
170− "template-haskell" = "2.13.0.0";
171− "containers" = "0.5.11.0";
170+ "directory" = "1.3.3.0";
171+ "template-haskell" = "2.14.0.0";
172+ "containers" = "0.6.0.1";
172173 "bytestring" = "0.10.8.2";
173174 "text" = "1.2.3.1";
174− "Cabal" = "2.2.0.1";
175− "base" = "4.11.1.0";
175+ "Cabal" = "2.4.0.1";
176+ "base" = "4.12.0.0";
176177 "time" = "1.8.0.2";
177− "transformers" = "0.5.5.0";
178− "filepath" = "1.4.2";
179− "process" = "1.6.3.0";
178+ "transformers" = "0.5.6.2";
179+ "filepath" = "1.4.2.1";
180+ "process" = "1.6.5.0";
180181 "pretty" = "1.1.3.6";
181− "ghc-boot-th" = "8.4.4";
182− "array" = "0.5.2.0";
182+ "ghc-boot-th" = "8.6.5";
183+ "array" = "0.5.3.0";
183184 "integer-gmp" = "1.0.2.0";
184185 };
185186 };