on iko/ghcjs-patch-master help sign in
Add `ghc8102-plutus` as a `compiler-nix-name` (#848)
cda15dcHamish Mackenzie
@@ -30,6 +30,7 @@
30 ghc884 = true;
30 ghc884 = true;
31 ghc8101 = false;
31 ghc8101 = false;
32 ghc8102 = true;
32 ghc8102 = true;
33+ ghc8102-experimental = true;
33 } // nixpkgs.lib.optionalAttrs (nixpkgsName == "R2009") {
34 } // nixpkgs.lib.optionalAttrs (nixpkgsName == "R2009") {
34 ghc8102 = true;
35 ghc8102 = true;
35 });
36 });
@@ -42,7 +43,7 @@
42 # We need to use the actual nixpkgs version we're working with here, since the values
43 # We need to use the actual nixpkgs version we're working with here, since the values
43 # of 'lib.systems.examples' are not understood between all versions
44 # of 'lib.systems.examples' are not understood between all versions
44 let lib = nixpkgs.lib;
45 let lib = nixpkgs.lib;
45− in lib.optionalAttrs (system == "x86_64-linux" && (nixpkgsName == "R2009" || (compiler-nix-name != "ghc8101" && compiler-nix-name != "ghc8102"))) {
46+ in lib.optionalAttrs (system == "x86_64-linux" && (nixpkgsName == "R2009" || (compiler-nix-name != "ghc8101" && compiler-nix-name != "ghc8102" && compiler-nix-name != "ghc8102-experimental"))) {
46 # Windows cross compilation is currently broken on macOS
47 # Windows cross compilation is currently broken on macOS
47 inherit (lib.systems.examples) mingwW64;
48 inherit (lib.systems.examples) mingwW64;
48 } // lib.optionalAttrs (system == "x86_64-linux") {
49 } // lib.optionalAttrs (system == "x86_64-linux") {
materialized/ghc-boot-packages-nix/ghc8102-experimental/bytestring.nixnew file+80
@@ -0,0 +1,80 @@
1+{ system
2+ , compiler
3+ , flags
4+ , pkgs
5+ , hsPkgs
6+ , pkgconfPkgs
7+ , errorHandler
8+ , config
9+ , ... }:
10+ {
11+ flags = { integer-simple = false; };
12+ package = {
13+ specVersion = "1.10";
14+ identifier = { name = "bytestring"; version = "0.10.10.0"; };
15+ license = "BSD-3-Clause";
16+ copyright = "Copyright (c) Don Stewart 2005-2009,\n(c) Duncan Coutts 2006-2015,\n(c) David Roundy 2003-2005,\n(c) Jasper Van der Jeugt 2010,\n(c) Simon Meier 2010-2013.";
17+ maintainer = "Duncan Coutts <duncan@community.haskell.org>";
18+ author = "Don Stewart,\nDuncan Coutts";
19+ homepage = "https://github.com/haskell/bytestring";
20+ url = "";
21+ synopsis = "Fast, compact, strict and lazy byte strings with a list interface";
22+ description = "An efficient compact, immutable byte string type (both strict and lazy)\nsuitable for binary or 8-bit character data.\n\nThe 'ByteString' type represents sequences of bytes or 8-bit characters.\nIt is suitable for high performance use, both in terms of large data\nquantities, or high speed requirements. The 'ByteString' functions follow\nthe same style as Haskell\\'s ordinary lists, so it is easy to convert code\nfrom using 'String' to 'ByteString'.\n\nTwo 'ByteString' variants are provided:\n\n* Strict 'ByteString's keep the string as a single large array. This\nmakes them convenient for passing data between C and Haskell.\n\n* Lazy 'ByteString's use a lazy list of strict chunks which makes it\nsuitable for I\\/O streaming tasks.\n\nThe @Char8@ modules provide a character-based view of the same\nunderlying 'ByteString' types. This makes it convenient to handle mixed\nbinary and 8-bit character content (which is common in many file formats\nand network protocols).\n\nThe 'Builder' module provides an efficient way to build up 'ByteString's\nin an ad-hoc way by repeated concatenation. This is ideal for fast\nserialisation or pretty printing.\n\nThere is also a 'ShortByteString' type which has a lower memory overhead\nand can can be converted to or from a 'ByteString', but supports very few\nother operations. It is suitable for keeping many short strings in memory.\n\n'ByteString's are not designed for Unicode. For Unicode strings you should\nuse the 'Text' type from the @text@ package.\n\nThese modules are intended to be imported qualified, to avoid name clashes\nwith \"Prelude\" functions, e.g.\n\n> import qualified Data.ByteString as BS";
23+ buildType = "Simple";
24+ };
25+ components = {
26+ "library" = {
27+ depends = ([
28+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
29+ (hsPkgs."ghc-prim" or (errorHandler.buildDepError "ghc-prim"))
30+ (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq"))
31+ ] ++ (pkgs.lib).optionals (compiler.isGhc && (compiler.version).ge "6.11") ((pkgs.lib).optional (!flags.integer-simple) (hsPkgs."integer-gmp" or (errorHandler.buildDepError "integer-gmp")))) ++ (pkgs.lib).optional (compiler.isGhc && (compiler.version).ge "6.9" && (compiler.isGhc && (compiler.version).lt "6.11")) (hsPkgs."integer" or (errorHandler.buildDepError "integer"));
32+ buildable = true;
33+ };
34+ tests = {
35+ "prop-compiled" = {
36+ depends = [
37+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
38+ (hsPkgs."ghc-prim" or (errorHandler.buildDepError "ghc-prim"))
39+ (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq"))
40+ (hsPkgs."random" or (errorHandler.buildDepError "random"))
41+ (hsPkgs."directory" or (errorHandler.buildDepError "directory"))
42+ (hsPkgs."test-framework" or (errorHandler.buildDepError "test-framework"))
43+ (hsPkgs."test-framework-quickcheck2" or (errorHandler.buildDepError "test-framework-quickcheck2"))
44+ (hsPkgs."QuickCheck" or (errorHandler.buildDepError "QuickCheck"))
45+ ];
46+ buildable = true;
47+ };
48+ "regressions" = {
49+ depends = [
50+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
51+ (hsPkgs."ghc-prim" or (errorHandler.buildDepError "ghc-prim"))
52+ (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq"))
53+ (hsPkgs."random" or (errorHandler.buildDepError "random"))
54+ (hsPkgs."directory" or (errorHandler.buildDepError "directory"))
55+ (hsPkgs."test-framework" or (errorHandler.buildDepError "test-framework"))
56+ (hsPkgs."test-framework-hunit" or (errorHandler.buildDepError "test-framework-hunit"))
57+ (hsPkgs."HUnit" or (errorHandler.buildDepError "HUnit"))
58+ ];
59+ buildable = false;
60+ };
61+ "test-builder" = {
62+ depends = [
63+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
64+ (hsPkgs."ghc-prim" or (errorHandler.buildDepError "ghc-prim"))
65+ (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq"))
66+ (hsPkgs."QuickCheck" or (errorHandler.buildDepError "QuickCheck"))
67+ (hsPkgs."byteorder" or (errorHandler.buildDepError "byteorder"))
68+ (hsPkgs."dlist" or (errorHandler.buildDepError "dlist"))
69+ (hsPkgs."directory" or (errorHandler.buildDepError "directory"))
70+ (hsPkgs."mtl" or (errorHandler.buildDepError "mtl"))
71+ (hsPkgs."HUnit" or (errorHandler.buildDepError "HUnit"))
72+ (hsPkgs."test-framework" or (errorHandler.buildDepError "test-framework"))
73+ (hsPkgs."test-framework-hunit" or (errorHandler.buildDepError "test-framework-hunit"))
74+ (hsPkgs."test-framework-quickcheck2" or (errorHandler.buildDepError "test-framework-quickcheck2"))
75+ ];
76+ buildable = true;
77+ };
78+ };
79+ };
80+ } // rec { src = (pkgs.lib).mkDefault ./.; }
materialized/ghc-boot-packages-nix/ghc8102-experimental/ghc-boot.nixnew file+39
@@ -0,0 +1,39 @@
1+{ system
2+ , compiler
3+ , flags
4+ , pkgs
5+ , hsPkgs
6+ , pkgconfPkgs
7+ , errorHandler
8+ , config
9+ , ... }:
10+ {
11+ flags = {};
12+ package = {
13+ specVersion = "1.22";
14+ identifier = { name = "ghc-boot"; version = "8.10.2"; };
15+ license = "BSD-3-Clause";
16+ copyright = "";
17+ maintainer = "ghc-devs@haskell.org";
18+ author = "";
19+ homepage = "";
20+ url = "";
21+ synopsis = "Shared functionality between GHC and its boot libraries";
22+ description = "This library is shared between GHC, ghc-pkg, and other boot\nlibraries.\n\nA note about \"GHC.PackageDb\": it only deals with the subset of\nthe package database that the compiler cares about: modules\npaths etc and not package metadata like description, authors\netc. It is thus not a library interface to ghc-pkg and is *not*\nsuitable for modifying GHC package databases.\n\nThe package database format and this library are constructed in\nsuch a way that while ghc-pkg depends on Cabal, the GHC library\nand program do not have to depend on Cabal.";
23+ buildType = "Simple";
24+ };
25+ components = {
26+ "library" = {
27+ depends = [
28+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
29+ (hsPkgs."binary" or (errorHandler.buildDepError "binary"))
30+ (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring"))
31+ (hsPkgs."containers" or (errorHandler.buildDepError "containers"))
32+ (hsPkgs."directory" or (errorHandler.buildDepError "directory"))
33+ (hsPkgs."filepath" or (errorHandler.buildDepError "filepath"))
34+ (hsPkgs."ghc-boot-th" or (errorHandler.buildDepError "ghc-boot-th"))
35+ ];
36+ buildable = true;
37+ };
38+ };
39+ } // rec { src = (pkgs.lib).mkDefault ./.; }
materialized/ghc-boot-packages-nix/ghc8102-experimental/ghc.nixnew file+62
@@ -0,0 +1,62 @@
1+{ system
2+ , compiler
3+ , flags
4+ , pkgs
5+ , hsPkgs
6+ , pkgconfPkgs
7+ , errorHandler
8+ , config
9+ , ... }:
10+ {
11+ flags = {
12+ ghci = false;
13+ stage1 = false;
14+ stage2 = false;
15+ stage3 = false;
16+ terminfo = true;
17+ integer-simple = false;
18+ integer-gmp = false;
19+ dynamic-system-linker = true;
20+ };
21+ package = {
22+ specVersion = "1.10";
23+ identifier = { name = "ghc"; version = "8.10.2"; };
24+ license = "BSD-3-Clause";
25+ copyright = "";
26+ maintainer = "glasgow-haskell-users@haskell.org";
27+ author = "The GHC Team";
28+ homepage = "http://www.haskell.org/ghc/";
29+ url = "";
30+ synopsis = "The GHC API";
31+ description = "GHC's functionality can be useful for more things than just\ncompiling Haskell programs. Important use cases are programs\nthat analyse (and perhaps transform) Haskell code. Others\ninclude loading Haskell code dynamically in a GHCi-like manner.\nFor this reason, a lot of GHC's functionality is made available\nthrough this package.";
32+ buildType = "Simple";
33+ };
34+ components = {
35+ "library" = {
36+ depends = ((([
37+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
38+ (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq"))
39+ (hsPkgs."directory" or (errorHandler.buildDepError "directory"))
40+ (hsPkgs."process" or (errorHandler.buildDepError "process"))
41+ (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring"))
42+ (hsPkgs."binary" or (errorHandler.buildDepError "binary"))
43+ (hsPkgs."time" or (errorHandler.buildDepError "time"))
44+ (hsPkgs."containers" or (errorHandler.buildDepError "containers"))
45+ (hsPkgs."array" or (errorHandler.buildDepError "array"))
46+ (hsPkgs."filepath" or (errorHandler.buildDepError "filepath"))
47+ (hsPkgs."template-haskell" or (errorHandler.buildDepError "template-haskell"))
48+ (hsPkgs."hpc" or (errorHandler.buildDepError "hpc"))
49+ (hsPkgs."transformers" or (errorHandler.buildDepError "transformers"))
50+ (hsPkgs."ghc-boot" or (errorHandler.buildDepError "ghc-boot"))
51+ (hsPkgs."ghc-boot-th" or (errorHandler.buildDepError "ghc-boot-th"))
52+ (hsPkgs."ghc-heap" or (errorHandler.buildDepError "ghc-heap"))
53+ (hsPkgs."ghci" or (errorHandler.buildDepError "ghci"))
54+ ] ++ (if system.isWindows
55+ then [ (hsPkgs."Win32" or (errorHandler.buildDepError "Win32")) ]
56+ else [
57+ (hsPkgs."unix" or (errorHandler.buildDepError "unix"))
58+ ] ++ (pkgs.lib).optional (flags.terminfo) (hsPkgs."terminfo" or (errorHandler.buildDepError "terminfo")))) ++ (pkgs.lib).optional (flags.integer-gmp && flags.integer-simple) (hsPkgs."invalid-cabal-flag-settings" or (errorHandler.buildDepError "invalid-cabal-flag-settings"))) ++ (pkgs.lib).optional (flags.integer-gmp) (hsPkgs."integer-gmp" or (errorHandler.buildDepError "integer-gmp"))) ++ (pkgs.lib).optional (flags.integer-simple) (hsPkgs."integer-simple" or (errorHandler.buildDepError "integer-simple"));
59+ buildable = true;
60+ };
61+ };
62+ } // rec { src = (pkgs.lib).mkDefault ./.; }
materialized/ghc-boot-packages-nix/ghc8102-experimental/ghci.nixnew file+44
@@ -0,0 +1,44 @@
1+{ system
2+ , compiler
3+ , flags
4+ , pkgs
5+ , hsPkgs
6+ , pkgconfPkgs
7+ , errorHandler
8+ , config
9+ , ... }:
10+ {
11+ flags = { ghci = false; };
12+ package = {
13+ specVersion = "1.10";
14+ identifier = { name = "ghci"; version = "8.10.2"; };
15+ license = "BSD-3-Clause";
16+ copyright = "";
17+ maintainer = "ghc-devs@haskell.org";
18+ author = "";
19+ homepage = "";
20+ url = "";
21+ synopsis = "The library supporting GHC's interactive interpreter";
22+ description = "This library offers interfaces which mediate interactions between the\n@ghci@ interactive shell and @iserv@, GHC's out-of-process interpreter\nbackend.";
23+ buildType = "Simple";
24+ };
25+ components = {
26+ "library" = {
27+ depends = [
28+ (hsPkgs."array" or (errorHandler.buildDepError "array"))
29+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
30+ (hsPkgs."binary" or (errorHandler.buildDepError "binary"))
31+ (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring"))
32+ (hsPkgs."containers" or (errorHandler.buildDepError "containers"))
33+ (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq"))
34+ (hsPkgs."filepath" or (errorHandler.buildDepError "filepath"))
35+ (hsPkgs."ghc-boot" or (errorHandler.buildDepError "ghc-boot"))
36+ (hsPkgs."ghc-boot-th" or (errorHandler.buildDepError "ghc-boot-th"))
37+ (hsPkgs."ghc-heap" or (errorHandler.buildDepError "ghc-heap"))
38+ (hsPkgs."template-haskell" or (errorHandler.buildDepError "template-haskell"))
39+ (hsPkgs."transformers" or (errorHandler.buildDepError "transformers"))
40+ ] ++ (pkgs.lib).optional (!system.isWindows) (hsPkgs."unix" or (errorHandler.buildDepError "unix"));
41+ buildable = true;
42+ };
43+ };
44+ } // rec { src = (pkgs.lib).mkDefault ./.; }
materialized/ghc-boot-packages-nix/ghc8102-experimental/hpc.nixnew file+38
@@ -0,0 +1,38 @@
1+{ system
2+ , compiler
3+ , flags
4+ , pkgs
5+ , hsPkgs
6+ , pkgconfPkgs
7+ , errorHandler
8+ , config
9+ , ... }:
10+ {
11+ flags = {};
12+ package = {
13+ specVersion = "1.10";
14+ identifier = { name = "hpc"; version = "0.6.1.0"; };
15+ license = "BSD-3-Clause";
16+ copyright = "";
17+ maintainer = "ghc-devs@haskell.org";
18+ author = "Andy Gill";
19+ homepage = "";
20+ url = "";
21+ synopsis = "Code Coverage Library for Haskell";
22+ description = "This package provides the code coverage library for Haskell.\n\nSee <http://www.haskell.org/haskellwiki/Haskell_program_coverage> for more\ninformation.";
23+ buildType = "Simple";
24+ };
25+ components = {
26+ "library" = {
27+ depends = [
28+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
29+ (hsPkgs."containers" or (errorHandler.buildDepError "containers"))
30+ (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq"))
31+ (hsPkgs."directory" or (errorHandler.buildDepError "directory"))
32+ (hsPkgs."filepath" or (errorHandler.buildDepError "filepath"))
33+ (hsPkgs."time" or (errorHandler.buildDepError "time"))
34+ ];
35+ buildable = true;
36+ };
37+ };
38+ } // rec { src = (pkgs.lib).mkDefault ./.; }
materialized/ghc-boot-packages-nix/ghc8102-experimental/iserv-proxy.nixnew file+45
@@ -0,0 +1,45 @@
1+{ system
2+ , compiler
3+ , flags
4+ , pkgs
5+ , hsPkgs
6+ , pkgconfPkgs
7+ , errorHandler
8+ , config
9+ , ... }:
10+ {
11+ flags = {};
12+ package = {
13+ specVersion = "1.10";
14+ identifier = { name = "iserv-proxy"; version = "8.10.2"; };
15+ license = "BSD-3-Clause";
16+ copyright = "XXX";
17+ maintainer = "XXX";
18+ author = "XXX";
19+ homepage = "";
20+ url = "";
21+ synopsis = "iserv allows GHC to delegate Tempalte Haskell computations";
22+ description = "GHC can be provided with a path to the iserv binary with\n@-pgmi=/path/to/iserv-bin@, and will in combination with\n@-fexternal-interpreter@, compile Template Haskell though the\n@iserv-bin@ delegate. This is very similar to how ghcjs has been\ncompiling Template Haskell, by spawning a separate delegate (so\ncalled runner on the javascript vm) and evaluating the splices\nthere.\n\niserv can also be used in combination with cross compilation. For\nthis, the @iserv-proxy@ needs to be built on the host, targeting the\nhost (as it is running on the host). @cabal install -flibrary\n-fproxy@ will yield the proxy.\n\nUsing the cabal for the target @arch-platform-target-cabal install\n-flibrary@ will build the required library that contains the ffi\n@startSlave@ function, which needs to be invoked on the target\n(e.g. in an iOS application) to start the remote iserv slave.\n\ncalling the GHC cross compiler with @-fexternal-interpreter\n-pgmi=\$HOME/.cabal/bin/iserv-proxy -opti\\<ip address\\> -opti\\<port\\>@\nwill cause it to compile Template Haskell via the remote at \\<ip address\\>.\n\nThus to get cross compilation with Template Haskell follow the\nfollowing receipt:\n\n* compile the iserv library for your target\n\n> iserv \$ arch-platform-target-cabal install -flibrary\n\n* setup an application for your target that calls the\n* startSlave function. This could be either haskell or your\n* targets ffi capable language, if needed.\n\n> void startSlave(false /* verbose */, 5000 /* port */,\n> \"/path/to/storagelocation/on/target\");\n\n* build the iserv-proxy\n\n> iserv \$ cabal install -flibrary -fproxy\n* Start your iserv-slave app on your target running on say @10.0.0.1:5000@\n* compiler your sources with -fexternal-interpreter and the proxy\n\n> project \$ arch-platform-target-ghc ModuleContainingTH.hs \\\n> -fexternal-interpreter \\\n> -pgmi=\$HOME/.cabal/bin/iserv-proxy \\\n> -opti10.0.0.1 -opti5000\n\nShould something not work as expected, provide @-opti-v@ for verbose\nlogging of the @iserv-proxy@.";
23+ buildType = "Simple";
24+ };
25+ components = {
26+ exes = {
27+ "iserv-proxy" = {
28+ depends = [
29+ (hsPkgs."array" or (errorHandler.buildDepError "array"))
30+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
31+ (hsPkgs."binary" or (errorHandler.buildDepError "binary"))
32+ (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring"))
33+ (hsPkgs."containers" or (errorHandler.buildDepError "containers"))
34+ (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq"))
35+ (hsPkgs."directory" or (errorHandler.buildDepError "directory"))
36+ (hsPkgs."network" or (errorHandler.buildDepError "network"))
37+ (hsPkgs."filepath" or (errorHandler.buildDepError "filepath"))
38+ (hsPkgs."ghci" or (errorHandler.buildDepError "ghci"))
39+ (hsPkgs."libiserv" or (errorHandler.buildDepError "libiserv"))
40+ ];
41+ buildable = true;
42+ };
43+ };
44+ };
45+ } // rec { src = (pkgs.lib).mkDefault ./.; }
materialized/ghc-boot-packages-nix/ghc8102-experimental/iserv.nixnew file+42
@@ -0,0 +1,42 @@
1+{ system
2+ , compiler
3+ , flags
4+ , pkgs
5+ , hsPkgs
6+ , pkgconfPkgs
7+ , errorHandler
8+ , config
9+ , ... }:
10+ {
11+ flags = {};
12+ package = {
13+ specVersion = "1.10";
14+ identifier = { name = "iserv"; version = "8.10.2"; };
15+ license = "BSD-3-Clause";
16+ copyright = "XXX";
17+ maintainer = "XXX";
18+ author = "XXX";
19+ homepage = "";
20+ url = "";
21+ synopsis = "iserv allows GHC to delegate Template Haskell computations";
22+ description = "GHC can be provided with a path to the iserv binary with\n@-pgmi=/path/to/iserv-bin@, and will in combination with\n@-fexternal-interpreter@, compile Template Haskell though the\n@iserv-bin@ delegate. This is very similar to how ghcjs has been\ncompiling Template Haskell, by spawning a separate delegate (so\ncalled runner on the javascript vm) and evaluating the splices\nthere.\n\nTo use iserv with cross compilers, please see @libraries/libiserv@\nand @utils/iserv-proxy@.";
23+ buildType = "Simple";
24+ };
25+ components = {
26+ exes = {
27+ "iserv" = {
28+ depends = [
29+ (hsPkgs."array" or (errorHandler.buildDepError "array"))
30+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
31+ (hsPkgs."binary" or (errorHandler.buildDepError "binary"))
32+ (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring"))
33+ (hsPkgs."containers" or (errorHandler.buildDepError "containers"))
34+ (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq"))
35+ (hsPkgs."ghci" or (errorHandler.buildDepError "ghci"))
36+ (hsPkgs."libiserv" or (errorHandler.buildDepError "libiserv"))
37+ ] ++ (pkgs.lib).optional (!system.isWindows) (hsPkgs."unix" or (errorHandler.buildDepError "unix"));
38+ buildable = true;
39+ };
40+ };
41+ };
42+ } // rec { src = (pkgs.lib).mkDefault ./.; }
materialized/ghc-boot-packages-nix/ghc8102-experimental/libiserv.nixnew file+42
@@ -0,0 +1,42 @@
1+{ system
2+ , compiler
3+ , flags
4+ , pkgs
5+ , hsPkgs
6+ , pkgconfPkgs
7+ , errorHandler
8+ , config
9+ , ... }:
10+ {
11+ flags = { network = false; };
12+ package = {
13+ specVersion = "1.10";
14+ identifier = { name = "libiserv"; version = "8.10.2"; };
15+ license = "BSD-3-Clause";
16+ copyright = "XXX";
17+ maintainer = "XXX";
18+ author = "XXX";
19+ homepage = "";
20+ url = "";
21+ synopsis = "Provides shared functionality between iserv and iserv-proxy";
22+ description = "";
23+ buildType = "Simple";
24+ };
25+ components = {
26+ "library" = {
27+ depends = ([
28+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
29+ (hsPkgs."binary" or (errorHandler.buildDepError "binary"))
30+ (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring"))
31+ (hsPkgs."containers" or (errorHandler.buildDepError "containers"))
32+ (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq"))
33+ (hsPkgs."ghci" or (errorHandler.buildDepError "ghci"))
34+ ] ++ (pkgs.lib).optionals (flags.network) [
35+ (hsPkgs."network" or (errorHandler.buildDepError "network"))
36+ (hsPkgs."directory" or (errorHandler.buildDepError "directory"))
37+ (hsPkgs."filepath" or (errorHandler.buildDepError "filepath"))
38+ ]) ++ (pkgs.lib).optional (!system.isWindows) (hsPkgs."unix" or (errorHandler.buildDepError "unix"));
39+ buildable = true;
40+ };
41+ };
42+ } // rec { src = (pkgs.lib).mkDefault ./.; }
materialized/ghc-boot-packages-nix/ghc8102-experimental/remote-iserv.nixnew file+36
@@ -0,0 +1,36 @@
1+{ system
2+ , compiler
3+ , flags
4+ , pkgs
5+ , hsPkgs
6+ , pkgconfPkgs
7+ , errorHandler
8+ , config
9+ , ... }:
10+ {
11+ flags = {};
12+ package = {
13+ specVersion = "1.10";
14+ identifier = { name = "remote-iserv"; version = "8.10.2"; };
15+ license = "BSD-3-Clause";
16+ copyright = "XXX";
17+ maintainer = "Moritz Angermann <moritz.angermann@gmail.com>";
18+ author = "Moritz Angermann <moritz.angermann@gmail.com>";
19+ homepage = "";
20+ url = "";
21+ synopsis = "iserv allows GHC to delegate Tempalte Haskell computations";
22+ description = "This is a very simple remote runner for iserv, to be used together\nwith iserv-proxy. The foundamental idea is that this this wrapper\nstarts running libiserv on a given port to which iserv-proxy will\nthen connect.";
23+ buildType = "Simple";
24+ };
25+ components = {
26+ exes = {
27+ "remote-iserv" = {
28+ depends = [
29+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
30+ (hsPkgs."libiserv" or (errorHandler.buildDepError "libiserv"))
31+ ];
32+ buildable = true;
33+ };
34+ };
35+ };
36+ } // rec { src = (pkgs.lib).mkDefault ./.; }
materialized/ghc-extra-projects/cross/ghc8102-experimental/.plan.nix/bytestring.nixnew file+136
@@ -0,0 +1,136 @@
1+{ system
2+ , compiler
3+ , flags
4+ , pkgs
5+ , hsPkgs
6+ , pkgconfPkgs
7+ , errorHandler
8+ , config
9+ , ... }:
10+ {
11+ flags = { integer-simple = false; };
12+ package = {
13+ specVersion = "1.10";
14+ identifier = { name = "bytestring"; version = "0.10.10.0"; };
15+ license = "BSD-3-Clause";
16+ copyright = "Copyright (c) Don Stewart 2005-2009,\n(c) Duncan Coutts 2006-2015,\n(c) David Roundy 2003-2005,\n(c) Jasper Van der Jeugt 2010,\n(c) Simon Meier 2010-2013.";
17+ maintainer = "Duncan Coutts <duncan@community.haskell.org>";
18+ author = "Don Stewart,\nDuncan Coutts";
19+ homepage = "https://github.com/haskell/bytestring";
20+ url = "";
21+ synopsis = "Fast, compact, strict and lazy byte strings with a list interface";
22+ description = "An efficient compact, immutable byte string type (both strict and lazy)\nsuitable for binary or 8-bit character data.\n\nThe 'ByteString' type represents sequences of bytes or 8-bit characters.\nIt is suitable for high performance use, both in terms of large data\nquantities, or high speed requirements. The 'ByteString' functions follow\nthe same style as Haskell\\'s ordinary lists, so it is easy to convert code\nfrom using 'String' to 'ByteString'.\n\nTwo 'ByteString' variants are provided:\n\n* Strict 'ByteString's keep the string as a single large array. This\nmakes them convenient for passing data between C and Haskell.\n\n* Lazy 'ByteString's use a lazy list of strict chunks which makes it\nsuitable for I\\/O streaming tasks.\n\nThe @Char8@ modules provide a character-based view of the same\nunderlying 'ByteString' types. This makes it convenient to handle mixed\nbinary and 8-bit character content (which is common in many file formats\nand network protocols).\n\nThe 'Builder' module provides an efficient way to build up 'ByteString's\nin an ad-hoc way by repeated concatenation. This is ideal for fast\nserialisation or pretty printing.\n\nThere is also a 'ShortByteString' type which has a lower memory overhead\nand can can be converted to or from a 'ByteString', but supports very few\nother operations. It is suitable for keeping many short strings in memory.\n\n'ByteString's are not designed for Unicode. For Unicode strings you should\nuse the 'Text' type from the @text@ package.\n\nThese modules are intended to be imported qualified, to avoid name clashes\nwith \"Prelude\" functions, e.g.\n\n> import qualified Data.ByteString as BS";
23+ buildType = "Simple";
24+ isLocal = true;
25+ detailLevel = "FullDetails";
26+ licenseFiles = [ "LICENSE" ];
27+ dataDir = "";
28+ dataFiles = [];
29+ extraSrcFiles = [ "README.md" "Changelog.md" ];
30+ extraTmpFiles = [];
31+ extraDocFiles = [];
32+ };
33+ components = {
34+ "library" = {
35+ depends = ([
36+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
37+ (hsPkgs."ghc-prim" or (errorHandler.buildDepError "ghc-prim"))
38+ (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq"))
39+ ] ++ (pkgs.lib).optionals (compiler.isGhc && (compiler.version).ge "6.11") ((pkgs.lib).optional (!flags.integer-simple) (hsPkgs."integer-gmp" or (errorHandler.buildDepError "integer-gmp")))) ++ (pkgs.lib).optional (compiler.isGhc && (compiler.version).ge "6.9" && (compiler.isGhc && (compiler.version).lt "6.11")) (hsPkgs."integer" or (errorHandler.buildDepError "integer"));
40+ buildable = true;
41+ modules = [
42+ "Data/ByteString/Builder/ASCII"
43+ "Data/ByteString/Builder/Prim/Binary"
44+ "Data/ByteString/Builder/Prim/ASCII"
45+ "Data/ByteString/Builder/Prim/Internal/Floating"
46+ "Data/ByteString/Builder/Prim/Internal/UncheckedShifts"
47+ "Data/ByteString/Builder/Prim/Internal/Base16"
48+ "Data/ByteString"
49+ "Data/ByteString/Char8"
50+ "Data/ByteString/Unsafe"
51+ "Data/ByteString/Internal"
52+ "Data/ByteString/Lazy"
53+ "Data/ByteString/Lazy/Char8"
54+ "Data/ByteString/Lazy/Internal"
55+ "Data/ByteString/Short"
56+ "Data/ByteString/Short/Internal"
57+ "Data/ByteString/Builder"
58+ "Data/ByteString/Builder/Extra"
59+ "Data/ByteString/Builder/Prim"
60+ "Data/ByteString/Builder/Internal"
61+ "Data/ByteString/Builder/Prim/Internal"
62+ "Data/ByteString/Lazy/Builder"
63+ "Data/ByteString/Lazy/Builder/Extras"
64+ "Data/ByteString/Lazy/Builder/ASCII"
65+ ];
66+ cSources = [ "cbits/fpstring.c" "cbits/itoa.c" ];
67+ includeDirs = [ "include" ];
68+ includes = [ "fpstring.h" ];
69+ };
70+ tests = {
71+ "prop-compiled" = {
72+ depends = [
73+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
74+ (hsPkgs."ghc-prim" or (errorHandler.buildDepError "ghc-prim"))
75+ (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq"))
76+ (hsPkgs."random" or (errorHandler.buildDepError "random"))
77+ (hsPkgs."directory" or (errorHandler.buildDepError "directory"))
78+ (hsPkgs."test-framework" or (errorHandler.buildDepError "test-framework"))
79+ (hsPkgs."test-framework-quickcheck2" or (errorHandler.buildDepError "test-framework-quickcheck2"))
80+ (hsPkgs."QuickCheck" or (errorHandler.buildDepError "QuickCheck"))
81+ ];
82+ buildable = true;
83+ modules = [ "Rules" "QuickCheckUtils" "TestFramework" ];
84+ cSources = [ "cbits/fpstring.c" ];
85+ hsSourceDirs = [ "." "tests" ];
86+ includeDirs = [ "include" ];
87+ mainPath = [ "Properties.hs" ];
88+ };
89+ "regressions" = {
90+ depends = [
91+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
92+ (hsPkgs."ghc-prim" or (errorHandler.buildDepError "ghc-prim"))
93+ (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq"))
94+ (hsPkgs."random" or (errorHandler.buildDepError "random"))
95+ (hsPkgs."directory" or (errorHandler.buildDepError "directory"))
96+ (hsPkgs."test-framework" or (errorHandler.buildDepError "test-framework"))
97+ (hsPkgs."test-framework-hunit" or (errorHandler.buildDepError "test-framework-hunit"))
98+ (hsPkgs."HUnit" or (errorHandler.buildDepError "HUnit"))
99+ ];
100+ buildable = false;
101+ cSources = [ "cbits/fpstring.c" ];
102+ hsSourceDirs = [ "." "tests" ];
103+ includeDirs = [ "include" ];
104+ mainPath = [ "Regressions.hs" ];
105+ };
106+ "test-builder" = {
107+ depends = [
108+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
109+ (hsPkgs."ghc-prim" or (errorHandler.buildDepError "ghc-prim"))
110+ (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq"))
111+ (hsPkgs."QuickCheck" or (errorHandler.buildDepError "QuickCheck"))
112+ (hsPkgs."byteorder" or (errorHandler.buildDepError "byteorder"))
113+ (hsPkgs."dlist" or (errorHandler.buildDepError "dlist"))
114+ (hsPkgs."directory" or (errorHandler.buildDepError "directory"))
115+ (hsPkgs."mtl" or (errorHandler.buildDepError "mtl"))
116+ (hsPkgs."HUnit" or (errorHandler.buildDepError "HUnit"))
117+ (hsPkgs."test-framework" or (errorHandler.buildDepError "test-framework"))
118+ (hsPkgs."test-framework-hunit" or (errorHandler.buildDepError "test-framework-hunit"))
119+ (hsPkgs."test-framework-quickcheck2" or (errorHandler.buildDepError "test-framework-quickcheck2"))
120+ ];
121+ buildable = true;
122+ modules = [
123+ "Data/ByteString/Builder/Tests"
124+ "Data/ByteString/Builder/Prim/Tests"
125+ "Data/ByteString/Builder/Prim/TestUtils"
126+ "TestFramework"
127+ ];
128+ cSources = [ "cbits/fpstring.c" "cbits/itoa.c" ];
129+ hsSourceDirs = [ "." "tests" "tests/builder" ];
130+ includeDirs = [ "include" ];
131+ includes = [ "fpstring.h" ];
132+ mainPath = [ "TestSuite.hs" ];
133+ };
134+ };
135+ };
136+ } // rec { src = (pkgs.lib).mkDefault ../libraries/bytestring; }
materialized/ghc-extra-projects/cross/ghc8102-experimental/.plan.nix/ghc-boot.nixnew file+60
@@ -0,0 +1,60 @@
1+{ system
2+ , compiler
3+ , flags
4+ , pkgs
5+ , hsPkgs
6+ , pkgconfPkgs
7+ , errorHandler
8+ , config
9+ , ... }:
10+ {
11+ flags = {};
12+ package = {
13+ specVersion = "1.22";
14+ identifier = { name = "ghc-boot"; version = "8.10.2"; };
15+ license = "BSD-3-Clause";
16+ copyright = "";
17+ maintainer = "ghc-devs@haskell.org";
18+ author = "";
19+ homepage = "";
20+ url = "";
21+ synopsis = "Shared functionality between GHC and its boot libraries";
22+ description = "This library is shared between GHC, ghc-pkg, and other boot\nlibraries.\n\nA note about \"GHC.PackageDb\": it only deals with the subset of\nthe package database that the compiler cares about: modules\npaths etc and not package metadata like description, authors\netc. It is thus not a library interface to ghc-pkg and is *not*\nsuitable for modifying GHC package databases.\n\nThe package database format and this library are constructed in\nsuch a way that while ghc-pkg depends on Cabal, the GHC library\nand program do not have to depend on Cabal.";
23+ buildType = "Simple";
24+ isLocal = true;
25+ detailLevel = "FullDetails";
26+ licenseFiles = [ "LICENSE" ];
27+ dataDir = "";
28+ dataFiles = [];
29+ extraSrcFiles = [];
30+ extraTmpFiles = [];
31+ extraDocFiles = [];
32+ };
33+ components = {
34+ "library" = {
35+ depends = [
36+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
37+ (hsPkgs."binary" or (errorHandler.buildDepError "binary"))
38+ (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring"))
39+ (hsPkgs."containers" or (errorHandler.buildDepError "containers"))
40+ (hsPkgs."directory" or (errorHandler.buildDepError "directory"))
41+ (hsPkgs."filepath" or (errorHandler.buildDepError "filepath"))
42+ (hsPkgs."ghc-boot-th" or (errorHandler.buildDepError "ghc-boot-th"))
43+ ];
44+ buildable = true;
45+ modules = [
46+ "GHC/BaseDir"
47+ "GHC/LanguageExtensions"
48+ "GHC/PackageDb"
49+ "GHC/Serialized"
50+ "GHC/ForeignSrcLang"
51+ "GHC/HandleEncoding"
52+ "GHC/Platform"
53+ "GHC/Platform/Host"
54+ "GHC/Settings"
55+ "GHC/UniqueSubdir"
56+ "GHC/Version"
57+ ];
58+ };
59+ };
60+ } // rec { src = (pkgs.lib).mkDefault ../libraries/ghc-boot; }
materialized/ghc-extra-projects/cross/ghc8102-experimental/.plan.nix/ghc.nixnew file+586
@@ -0,0 +1,586 @@
1+{ system
2+ , compiler
3+ , flags
4+ , pkgs
5+ , hsPkgs
6+ , pkgconfPkgs
7+ , errorHandler
8+ , config
9+ , ... }:
10+ {
11+ flags = {
12+ ghci = false;
13+ stage1 = false;
14+ stage2 = false;
15+ stage3 = false;
16+ terminfo = true;
17+ integer-simple = false;
18+ integer-gmp = false;
19+ dynamic-system-linker = true;
20+ };
21+ package = {
22+ specVersion = "1.10";
23+ identifier = { name = "ghc"; version = "8.10.2"; };
24+ license = "BSD-3-Clause";
25+ copyright = "";
26+ maintainer = "glasgow-haskell-users@haskell.org";
27+ author = "The GHC Team";
28+ homepage = "http://www.haskell.org/ghc/";
29+ url = "";
30+ synopsis = "The GHC API";
31+ description = "GHC's functionality can be useful for more things than just\ncompiling Haskell programs. Important use cases are programs\nthat analyse (and perhaps transform) Haskell code. Others\ninclude loading Haskell code dynamically in a GHCi-like manner.\nFor this reason, a lot of GHC's functionality is made available\nthrough this package.";
32+ buildType = "Simple";
33+ isLocal = true;
34+ detailLevel = "FullDetails";
35+ licenseFiles = [ "LICENSE" ];
36+ dataDir = "";
37+ dataFiles = [];
38+ extraSrcFiles = [];
39+ extraTmpFiles = [];
40+ extraDocFiles = [];
41+ };
42+ components = {
43+ "library" = {
44+ depends = ((([
45+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
46+ (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq"))
47+ (hsPkgs."directory" or (errorHandler.buildDepError "directory"))
48+ (hsPkgs."process" or (errorHandler.buildDepError "process"))
49+ (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring"))
50+ (hsPkgs."binary" or (errorHandler.buildDepError "binary"))
51+ (hsPkgs."time" or (errorHandler.buildDepError "time"))
52+ (hsPkgs."containers" or (errorHandler.buildDepError "containers"))
53+ (hsPkgs."array" or (errorHandler.buildDepError "array"))
54+ (hsPkgs."filepath" or (errorHandler.buildDepError "filepath"))
55+ (hsPkgs."template-haskell" or (errorHandler.buildDepError "template-haskell"))
56+ (hsPkgs."hpc" or (errorHandler.buildDepError "hpc"))
57+ (hsPkgs."transformers" or (errorHandler.buildDepError "transformers"))
58+ (hsPkgs."ghc-boot" or (errorHandler.buildDepError "ghc-boot"))
59+ (hsPkgs."ghc-boot-th" or (errorHandler.buildDepError "ghc-boot-th"))
60+ (hsPkgs."ghc-heap" or (errorHandler.buildDepError "ghc-heap"))
61+ (hsPkgs."ghci" or (errorHandler.buildDepError "ghci"))
62+ ] ++ (if system.isWindows
63+ then [ (hsPkgs."Win32" or (errorHandler.buildDepError "Win32")) ]
64+ else [
65+ (hsPkgs."unix" or (errorHandler.buildDepError "unix"))
66+ ] ++ (pkgs.lib).optional (flags.terminfo) (hsPkgs."terminfo" or (errorHandler.buildDepError "terminfo")))) ++ (pkgs.lib).optional (flags.integer-gmp && flags.integer-simple) (hsPkgs."invalid-cabal-flag-settings" or (errorHandler.buildDepError "invalid-cabal-flag-settings"))) ++ (pkgs.lib).optional (flags.integer-gmp) (hsPkgs."integer-gmp" or (errorHandler.buildDepError "integer-gmp"))) ++ (pkgs.lib).optional (flags.integer-simple) (hsPkgs."integer-simple" or (errorHandler.buildDepError "integer-simple"));
67+ buildable = true;
68+ modules = [
69+ "HieTypes"
70+ "HieDebug"
71+ "HieBin"
72+ "HieUtils"
73+ "HieAst"
74+ "Ar"
75+ "FileCleanup"
76+ "DriverBkp"
77+ "BkpSyn"
78+ "NameShape"
79+ "RnModIface"
80+ "Avail"
81+ "AsmUtils"
82+ "BasicTypes"
83+ "ConLike"
84+ "DataCon"
85+ "PatSyn"
86+ "Demand"
87+ "Debug"
88+ "Exception"
89+ "FieldLabel"
90+ "GhcMonad"
91+ "Hooks"
92+ "Id"
93+ "IdInfo"
94+ "Predicate"
95+ "Lexeme"
96+ "Literal"
97+ "Llvm"
98+ "Llvm/AbsSyn"
99+ "Llvm/MetaData"
100+ "Llvm/PpLlvm"
101+ "Llvm/Types"
102+ "LlvmCodeGen"
103+ "LlvmCodeGen/Base"
104+ "LlvmCodeGen/CodeGen"
105+ "LlvmCodeGen/Data"
106+ "LlvmCodeGen/Ppr"
107+ "LlvmCodeGen/Regs"
108+ "LlvmMangler"
109+ "MkId"
110+ "Module"
111+ "Name"
112+ "NameEnv"
113+ "NameSet"
114+ "OccName"
115+ "RdrName"
116+ "NameCache"
117+ "SrcLoc"
118+ "UniqSupply"
119+ "Unique"
120+ "Var"
121+ "VarEnv"
122+ "VarSet"
123+ "UnVarGraph"
124+ "BlockId"
125+ "CLabel"
126+ "Cmm"
127+ "CmmBuildInfoTables"
128+ "CmmPipeline"
129+ "CmmCallConv"
130+ "CmmCommonBlockElim"
131+ "CmmImplementSwitchPlans"
132+ "CmmContFlowOpt"
133+ "CmmExpr"
134+ "CmmInfo"
135+ "CmmLex"
136+ "CmmLint"
137+ "CmmLive"
138+ "CmmMachOp"
139+ "CmmMonad"
140+ "CmmSwitch"
141+ "CmmNode"
142+ "CmmOpt"
143+ "CmmParse"
144+ "CmmProcPoint"
145+ "CmmSink"
146+ "CmmType"
147+ "CmmUtils"
148+ "CmmLayoutStack"
149+ "CliOption"
150+ "EnumSet"
151+ "GhcNameVersion"
152+ "FileSettings"
153+ "MkGraph"
154+ "PprBase"
155+ "PprC"
156+ "PprCmm"
157+ "PprCmmDecl"
158+ "PprCmmExpr"
159+ "Bitmap"
160+ "GHC/Platform/Regs"
161+ "GHC/Platform/ARM"
162+ "GHC/Platform/ARM64"
163+ "GHC/Platform/NoRegs"
164+ "GHC/Platform/PPC"
165+ "GHC/Platform/S390X"
166+ "GHC/Platform/SPARC"
167+ "GHC/Platform/X86"
168+ "GHC/Platform/X86_64"
169+ "GHC/StgToCmm/CgUtils"
170+ "GHC/StgToCmm"
171+ "GHC/StgToCmm/Bind"
172+ "GHC/StgToCmm/Closure"
173+ "GHC/StgToCmm/DataCon"
174+ "GHC/StgToCmm/Env"
175+ "GHC/StgToCmm/Expr"
176+ "GHC/StgToCmm/Foreign"
177+ "GHC/StgToCmm/Heap"
178+ "GHC/StgToCmm/Hpc"
179+ "GHC/StgToCmm/ArgRep"
180+ "GHC/StgToCmm/Layout"
181+ "GHC/StgToCmm/Monad"
182+ "GHC/StgToCmm/Prim"
183+ "GHC/StgToCmm/Prof"
184+ "GHC/StgToCmm/Ticky"
185+ "GHC/StgToCmm/Utils"
186+ "GHC/StgToCmm/ExtCode"
187+ "SMRep"
188+ "CoreArity"
189+ "CoreFVs"
190+ "CoreLint"
191+ "CorePrep"
192+ "CoreSubst"
193+ "CoreOpt"
194+ "CoreSyn"
195+ "TrieMap"
196+ "CoreTidy"
197+ "CoreUnfold"
198+ "CoreUtils"
199+ "CoreMap"
200+ "CoreSeq"
201+ "CoreStats"
202+ "MkCore"
203+ "PprCore"
204+ "GHC/HsToCore/PmCheck/Oracle"
205+ "GHC/HsToCore/PmCheck/Ppr"
206+ "GHC/HsToCore/PmCheck/Types"
207+ "GHC/HsToCore/PmCheck"
208+ "Coverage"
209+ "Desugar"
210+ "DsArrows"
211+ "DsBinds"
212+ "DsCCall"
213+ "DsExpr"
214+ "DsForeign"
215+ "DsGRHSs"
216+ "DsListComp"
217+ "DsMonad"
218+ "DsUsage"
219+ "DsUtils"
220+ "ExtractDocs"
221+ "Match"
222+ "MatchCon"
223+ "MatchLit"
224+ "GHC/Hs"
225+ "GHC/Hs/Binds"
226+ "GHC/Hs/Decls"
227+ "GHC/Hs/Doc"
228+ "GHC/Hs/Expr"
229+ "GHC/Hs/ImpExp"
230+ "GHC/Hs/Lit"
231+ "GHC/Hs/PlaceHolder"
232+ "GHC/Hs/Extension"
233+ "GHC/Hs/Instances"
234+ "GHC/Hs/Pat"
235+ "GHC/Hs/Types"
236+ "GHC/Hs/Utils"
237+ "GHC/Hs/Dump"
238+ "BinIface"
239+ "BinFingerprint"
240+ "BuildTyCl"
241+ "IfaceEnv"
242+ "IfaceSyn"
243+ "IfaceType"
244+ "ToIface"
245+ "LoadIface"
246+ "MkIface"
247+ "TcIface"
248+ "FlagChecker"
249+ "Annotations"
250+ "CmdLineParser"
251+ "CodeOutput"
252+ "Config"
253+ "Constants"
254+ "DriverMkDepend"
255+ "DriverPhases"
256+ "PipelineMonad"
257+ "DriverPipeline"
258+ "DynFlags"
259+ "ErrUtils"
260+ "Finder"
261+ "GHC"
262+ "GhcMake"
263+ "GhcPlugins"
264+ "GhcPrelude"
265+ "DynamicLoading"
266+ "HeaderInfo"
267+ "HscMain"
268+ "HscStats"
269+ "HscTypes"
270+ "InteractiveEval"
271+ "InteractiveEvalTypes"
272+ "PackageConfig"
273+ "Packages"
274+ "PlatformConstants"
275+ "Plugins"
276+ "TcPluginM"
277+ "PprTyThing"
278+ "Settings"
279+ "StaticPtrTable"
280+ "SysTools"
281+ "SysTools/BaseDir"
282+ "SysTools/Terminal"
283+ "SysTools/ExtraObj"
284+ "SysTools/Info"
285+ "SysTools/Process"
286+ "SysTools/Tasks"
287+ "SysTools/Settings"
288+ "Elf"
289+ "TidyPgm"
290+ "Ctype"
291+ "HaddockUtils"
292+ "Lexer"
293+ "OptCoercion"
294+ "Parser"
295+ "RdrHsSyn"
296+ "ApiAnnotation"
297+ "ForeignCall"
298+ "KnownUniques"
299+ "PrelInfo"
300+ "PrelNames"
301+ "PrelRules"
302+ "PrimOp"
303+ "ToolSettings"
304+ "TysPrim"
305+ "TysWiredIn"
306+ "CostCentre"
307+ "CostCentreState"
308+ "ProfInit"
309+ "RnBinds"
310+ "RnEnv"
311+ "RnExpr"
312+ "RnHsDoc"
313+ "RnNames"
314+ "RnPat"
315+ "RnSource"
316+ "RnSplice"
317+ "RnTypes"
318+ "RnFixity"
319+ "RnUtils"
320+ "RnUnbound"
321+ "CoreMonad"
322+ "CSE"
323+ "FloatIn"
324+ "FloatOut"
325+ "LiberateCase"
326+ "OccurAnal"
327+ "SAT"
328+ "SetLevels"
329+ "SimplCore"
330+ "SimplEnv"
331+ "SimplMonad"
332+ "SimplUtils"
333+ "Simplify"
334+ "SimplStg"
335+ "StgStats"
336+ "StgCse"
337+ "StgLiftLams"
338+ "StgLiftLams/Analysis"
339+ "StgLiftLams/LiftM"
340+ "StgLiftLams/Transformation"
341+ "StgSubst"
342+ "UnariseStg"
343+ "RepType"
344+ "Rules"
345+ "SpecConstr"
346+ "Specialise"
347+ "CoreToStg"
348+ "StgLint"
349+ "StgSyn"
350+ "StgFVs"
351+ "CallArity"
352+ "DmdAnal"
353+ "Exitify"
354+ "WorkWrap"
355+ "WwLib"
356+ "FamInst"
357+ "ClsInst"
358+ "Inst"
359+ "TcAnnotations"
360+ "TcArrows"
361+ "TcBinds"
362+ "TcSigs"
363+ "TcClassDcl"
364+ "TcDefaults"
365+ "TcDeriv"
366+ "TcDerivInfer"
367+ "TcDerivUtils"
368+ "TcEnv"
369+ "TcExpr"
370+ "TcForeign"
371+ "TcGenDeriv"
372+ "TcGenFunctor"
373+ "TcGenGenerics"
374+ "TcHsSyn"
375+ "TcHsType"
376+ "TcInstDcls"
377+ "TcMType"
378+ "TcValidity"
379+ "TcMatches"
380+ "TcPat"
381+ "TcPatSyn"
382+ "TcRnDriver"
383+ "TcBackpack"
384+ "TcRnExports"
385+ "TcRnMonad"
386+ "TcRnTypes"
387+ "Constraint"
388+ "TcOrigin"
389+ "TcRules"
390+ "TcSimplify"
391+ "TcHoleErrors"
392+ "TcHoleFitTypes"
393+ "TcErrors"
394+ "TcTyClsDecls"
395+ "TcTyDecls"
396+ "TcTypeable"
397+ "TcType"
398+ "TcEvidence"
399+ "TcEvTerm"
400+ "TcUnify"
401+ "TcInteract"
402+ "TcCanonical"
403+ "TcFlatten"
404+ "TcSMonad"
405+ "TcTypeNats"
406+ "TcSplice"
407+ "Class"
408+ "Coercion"
409+ "DsMeta"
410+ "THNames"
411+ "FamInstEnv"
412+ "FunDeps"
413+ "InstEnv"
414+ "TyCon"
415+ "CoAxiom"
416+ "Type"
417+ "TyCoRep"
418+ "TyCoFVs"
419+ "TyCoSubst"
420+ "TyCoPpr"
421+ "TyCoTidy"
422+ "Unify"
423+ "Bag"
424+ "Binary"
425+ "BooleanFormula"
426+ "BufWrite"
427+ "Digraph"
428+ "Encoding"
429+ "FastFunctions"
430+ "FastMutInt"
431+ "FastString"
432+ "FastStringEnv"
433+ "Fingerprint"
434+ "FiniteMap"
435+ "FV"
436+ "GraphBase"
437+ "GraphColor"
438+ "GraphOps"
439+ "GraphPpr"
440+ "IOEnv"
441+ "Json"
442+ "ListSetOps"
443+ "Maybes"
444+ "MonadUtils"
445+ "OrdList"
446+ "Outputable"
447+ "Pair"
448+ "Panic"
449+ "PlainPanic"
450+ "PprColour"
451+ "Pretty"
452+ "State"
453+ "Stream"
454+ "StringBuffer"
455+ "UniqDFM"
456+ "UniqDSet"
457+ "UniqFM"
458+ "UniqMap"
459+ "UniqSet"
460+ "Util"
461+ "Hoopl/Block"
462+ "Hoopl/Collections"
463+ "Hoopl/Dataflow"
464+ "Hoopl/Graph"
465+ "Hoopl/Label"
466+ "AsmCodeGen"
467+ "TargetReg"
468+ "NCGMonad"
469+ "Instruction"
470+ "BlockLayout"
471+ "CFG"
472+ "Dominators"
473+ "Format"
474+ "Reg"
475+ "RegClass"
476+ "PIC"
477+ "CPrim"
478+ "X86/Regs"
479+ "X86/RegInfo"
480+ "X86/Instr"
481+ "X86/Cond"
482+ "X86/Ppr"
483+ "X86/CodeGen"
484+ "PPC/Regs"
485+ "PPC/RegInfo"
486+ "PPC/Instr"
487+ "PPC/Cond"
488+ "PPC/Ppr"
489+ "PPC/CodeGen"
490+ "SPARC/Base"
491+ "SPARC/Regs"
492+ "SPARC/Imm"
493+ "SPARC/AddrMode"
494+ "SPARC/Cond"
495+ "SPARC/Instr"
496+ "SPARC/Stack"
497+ "SPARC/ShortcutJump"
498+ "SPARC/Ppr"
499+ "SPARC/CodeGen"
500+ "SPARC/CodeGen/Amode"
501+ "SPARC/CodeGen/Base"
502+ "SPARC/CodeGen/CondCode"
503+ "SPARC/CodeGen/Gen32"
504+ "SPARC/CodeGen/Gen64"
505+ "SPARC/CodeGen/Sanity"
506+ "SPARC/CodeGen/Expand"
507+ "RegAlloc/Liveness"
508+ "RegAlloc/Graph/Main"
509+ "RegAlloc/Graph/Stats"
510+ "RegAlloc/Graph/ArchBase"
511+ "RegAlloc/Graph/ArchX86"
512+ "RegAlloc/Graph/Coalesce"
513+ "RegAlloc/Graph/Spill"
514+ "RegAlloc/Graph/SpillClean"
515+ "RegAlloc/Graph/SpillCost"
516+ "RegAlloc/Graph/TrivColorable"
517+ "RegAlloc/Linear/Main"
518+ "RegAlloc/Linear/JoinToTargets"
519+ "RegAlloc/Linear/State"
520+ "RegAlloc/Linear/Stats"
521+ "RegAlloc/Linear/FreeRegs"
522+ "RegAlloc/Linear/StackMap"
523+ "RegAlloc/Linear/Base"
524+ "RegAlloc/Linear/X86/FreeRegs"
525+ "RegAlloc/Linear/X86_64/FreeRegs"
526+ "RegAlloc/Linear/PPC/FreeRegs"
527+ "RegAlloc/Linear/SPARC/FreeRegs"
528+ "Dwarf"
529+ "Dwarf/Types"
530+ "Dwarf/Constants"
531+ "GHC/ThToHs"
532+ "ByteCodeTypes"
533+ "ByteCodeAsm"
534+ "ByteCodeGen"
535+ "ByteCodeInstr"
536+ "ByteCodeItbls"
537+ "ByteCodeLink"
538+ "Debugger"
539+ "LinkerTypes"
540+ "Linker"
541+ "RtClosureInspect"
542+ "GHCi"
543+ ];
544+ cSources = [
545+ "parser/cutils.c"
546+ "ghci/keepCAFsForGHCi.c"
547+ "cbits/genSym.c"
548+ ];
549+ hsSourceDirs = [
550+ "."
551+ "backpack"
552+ "basicTypes"
553+ "cmm"
554+ "coreSyn"
555+ "deSugar"
556+ "ghci"
557+ "iface"
558+ "llvmGen"
559+ "main"
560+ "nativeGen"
561+ "parser"
562+ "prelude"
563+ "profiling"
564+ "rename"
565+ "simplCore"
566+ "simplStg"
567+ "specialise"
568+ "stgSyn"
569+ "stranal"
570+ "typecheck"
571+ "types"
572+ "utils"
573+ "hieFile"
574+ ];
575+ includeDirs = ([
576+ "."
577+ "parser"
578+ "utils"
579+ ] ++ (pkgs.lib).optional (flags.ghci) "../rts/dist/build") ++ (if flags.stage1
580+ then [ "stage1" ]
581+ else if flags.stage2
582+ then [ "stage2" ]
583+ else (pkgs.lib).optional (flags.stage3) "stage2");
584+ };
585+ };
586+ } // rec { src = (pkgs.lib).mkDefault ../compiler; }
materialized/ghc-extra-projects/cross/ghc8102-experimental/.plan.nix/ghci.nixnew file+70
@@ -0,0 +1,70 @@
1+{ system
2+ , compiler
3+ , flags
4+ , pkgs
5+ , hsPkgs
6+ , pkgconfPkgs
7+ , errorHandler
8+ , config
9+ , ... }:
10+ {
11+ flags = { ghci = false; };
12+ package = {
13+ specVersion = "1.10";
14+ identifier = { name = "ghci"; version = "8.10.2"; };
15+ license = "BSD-3-Clause";
16+ copyright = "";
17+ maintainer = "ghc-devs@haskell.org";
18+ author = "";
19+ homepage = "";
20+ url = "";
21+ synopsis = "The library supporting GHC's interactive interpreter";
22+ description = "This library offers interfaces which mediate interactions between the\n@ghci@ interactive shell and @iserv@, GHC's out-of-process interpreter\nbackend.";
23+ buildType = "Simple";
24+ isLocal = true;
25+ detailLevel = "FullDetails";
26+ licenseFiles = [ "LICENSE" ];
27+ dataDir = "";
28+ dataFiles = [];
29+ extraSrcFiles = [ "changelog.md" ];
30+ extraTmpFiles = [];
31+ extraDocFiles = [];
32+ };
33+ components = {
34+ "library" = {
35+ depends = [
36+ (hsPkgs."array" or (errorHandler.buildDepError "array"))
37+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
38+ (hsPkgs."binary" or (errorHandler.buildDepError "binary"))
39+ (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring"))
40+ (hsPkgs."containers" or (errorHandler.buildDepError "containers"))
41+ (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq"))
42+ (hsPkgs."filepath" or (errorHandler.buildDepError "filepath"))
43+ (hsPkgs."ghc-boot" or (errorHandler.buildDepError "ghc-boot"))
44+ (hsPkgs."ghc-boot-th" or (errorHandler.buildDepError "ghc-boot-th"))
45+ (hsPkgs."ghc-heap" or (errorHandler.buildDepError "ghc-heap"))
46+ (hsPkgs."template-haskell" or (errorHandler.buildDepError "template-haskell"))
47+ (hsPkgs."transformers" or (errorHandler.buildDepError "transformers"))
48+ ] ++ (pkgs.lib).optional (!system.isWindows) (hsPkgs."unix" or (errorHandler.buildDepError "unix"));
49+ buildable = true;
50+ modules = [
51+ "GHCi/BreakArray"
52+ "GHCi/BinaryArray"
53+ "GHCi/Message"
54+ "GHCi/ResolvedBCO"
55+ "GHCi/RemoteTypes"
56+ "GHCi/FFI"
57+ "GHCi/InfoTable"
58+ "GHCi/StaticPtrTable"
59+ "GHCi/TH/Binary"
60+ "SizedSeq"
61+ ] ++ (pkgs.lib).optionals (flags.ghci) [
62+ "GHCi/Run"
63+ "GHCi/CreateBCO"
64+ "GHCi/ObjLink"
65+ "GHCi/Signals"
66+ "GHCi/TH"
67+ ];
68+ };
69+ };
70+ } // rec { src = (pkgs.lib).mkDefault ../libraries/ghci; }
materialized/ghc-extra-projects/cross/ghc8102-experimental/.plan.nix/hpc.nixnew file+52
@@ -0,0 +1,52 @@
1+{ system
2+ , compiler
3+ , flags
4+ , pkgs
5+ , hsPkgs
6+ , pkgconfPkgs
7+ , errorHandler
8+ , config
9+ , ... }:
10+ {
11+ flags = {};
12+ package = {
13+ specVersion = "1.10";
14+ identifier = { name = "hpc"; version = "0.6.1.0"; };
15+ license = "BSD-3-Clause";
16+ copyright = "";
17+ maintainer = "ghc-devs@haskell.org";
18+ author = "Andy Gill";
19+ homepage = "";
20+ url = "";
21+ synopsis = "Code Coverage Library for Haskell";
22+ description = "This package provides the code coverage library for Haskell.\n\nSee <http://www.haskell.org/haskellwiki/Haskell_program_coverage> for more\ninformation.";
23+ buildType = "Simple";
24+ isLocal = true;
25+ detailLevel = "FullDetails";
26+ licenseFiles = [ "LICENSE" ];
27+ dataDir = "";
28+ dataFiles = [];
29+ extraSrcFiles = [ "changelog.md" ];
30+ extraTmpFiles = [];
31+ extraDocFiles = [];
32+ };
33+ components = {
34+ "library" = {
35+ depends = [
36+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
37+ (hsPkgs."containers" or (errorHandler.buildDepError "containers"))
38+ (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq"))
39+ (hsPkgs."directory" or (errorHandler.buildDepError "directory"))
40+ (hsPkgs."filepath" or (errorHandler.buildDepError "filepath"))
41+ (hsPkgs."time" or (errorHandler.buildDepError "time"))
42+ ];
43+ buildable = true;
44+ modules = [
45+ "Trace/Hpc/Util"
46+ "Trace/Hpc/Mix"
47+ "Trace/Hpc/Tix"
48+ "Trace/Hpc/Reflect"
49+ ];
50+ };
51+ };
52+ } // rec { src = (pkgs.lib).mkDefault ../libraries/hpc; }
materialized/ghc-extra-projects/cross/ghc8102-experimental/.plan.nix/iserv-proxy.nixnew file+55
@@ -0,0 +1,55 @@
1+{ system
2+ , compiler
3+ , flags
4+ , pkgs
5+ , hsPkgs
6+ , pkgconfPkgs
7+ , errorHandler
8+ , config
9+ , ... }:
10+ {
11+ flags = {};
12+ package = {
13+ specVersion = "1.10";
14+ identifier = { name = "iserv-proxy"; version = "8.10.2"; };
15+ license = "BSD-3-Clause";
16+ copyright = "XXX";
17+ maintainer = "XXX";
18+ author = "XXX";
19+ homepage = "";
20+ url = "";
21+ synopsis = "iserv allows GHC to delegate Tempalte Haskell computations";
22+ description = "GHC can be provided with a path to the iserv binary with\n@-pgmi=/path/to/iserv-bin@, and will in combination with\n@-fexternal-interpreter@, compile Template Haskell though the\n@iserv-bin@ delegate. This is very similar to how ghcjs has been\ncompiling Template Haskell, by spawning a separate delegate (so\ncalled runner on the javascript vm) and evaluating the splices\nthere.\n\niserv can also be used in combination with cross compilation. For\nthis, the @iserv-proxy@ needs to be built on the host, targeting the\nhost (as it is running on the host). @cabal install -flibrary\n-fproxy@ will yield the proxy.\n\nUsing the cabal for the target @arch-platform-target-cabal install\n-flibrary@ will build the required library that contains the ffi\n@startSlave@ function, which needs to be invoked on the target\n(e.g. in an iOS application) to start the remote iserv slave.\n\ncalling the GHC cross compiler with @-fexternal-interpreter\n-pgmi=\$HOME/.cabal/bin/iserv-proxy -opti\\<ip address\\> -opti\\<port\\>@\nwill cause it to compile Template Haskell via the remote at \\<ip address\\>.\n\nThus to get cross compilation with Template Haskell follow the\nfollowing receipt:\n\n* compile the iserv library for your target\n\n> iserv \$ arch-platform-target-cabal install -flibrary\n\n* setup an application for your target that calls the\n* startSlave function. This could be either haskell or your\n* targets ffi capable language, if needed.\n\n> void startSlave(false /* verbose */, 5000 /* port */,\n> \"/path/to/storagelocation/on/target\");\n\n* build the iserv-proxy\n\n> iserv \$ cabal install -flibrary -fproxy\n* Start your iserv-slave app on your target running on say @10.0.0.1:5000@\n* compiler your sources with -fexternal-interpreter and the proxy\n\n> project \$ arch-platform-target-ghc ModuleContainingTH.hs \\\n> -fexternal-interpreter \\\n> -pgmi=\$HOME/.cabal/bin/iserv-proxy \\\n> -opti10.0.0.1 -opti5000\n\nShould something not work as expected, provide @-opti-v@ for verbose\nlogging of the @iserv-proxy@.";
23+ buildType = "Simple";
24+ isLocal = true;
25+ detailLevel = "FullDetails";
26+ licenseFiles = [];
27+ dataDir = "";
28+ dataFiles = [];
29+ extraSrcFiles = [];
30+ extraTmpFiles = [];
31+ extraDocFiles = [];
32+ };
33+ components = {
34+ exes = {
35+ "iserv-proxy" = {
36+ depends = [
37+ (hsPkgs."array" or (errorHandler.buildDepError "array"))
38+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
39+ (hsPkgs."binary" or (errorHandler.buildDepError "binary"))
40+ (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring"))
41+ (hsPkgs."containers" or (errorHandler.buildDepError "containers"))
42+ (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq"))
43+ (hsPkgs."directory" or (errorHandler.buildDepError "directory"))
44+ (hsPkgs."network" or (errorHandler.buildDepError "network"))
45+ (hsPkgs."filepath" or (errorHandler.buildDepError "filepath"))
46+ (hsPkgs."ghci" or (errorHandler.buildDepError "ghci"))
47+ (hsPkgs."libiserv" or (errorHandler.buildDepError "libiserv"))
48+ ];
49+ buildable = true;
50+ hsSourceDirs = [ "src" ];
51+ mainPath = [ "Main.hs" ];
52+ };
53+ };
54+ };
55+ } // rec { src = (pkgs.lib).mkDefault ../utils/iserv-proxy; }
materialized/ghc-extra-projects/cross/ghc8102-experimental/.plan.nix/iserv.nixnew file+54
@@ -0,0 +1,54 @@
1+{ system
2+ , compiler
3+ , flags
4+ , pkgs
5+ , hsPkgs
6+ , pkgconfPkgs
7+ , errorHandler
8+ , config
9+ , ... }:
10+ {
11+ flags = {};
12+ package = {
13+ specVersion = "1.10";
14+ identifier = { name = "iserv"; version = "8.10.2"; };
15+ license = "BSD-3-Clause";
16+ copyright = "XXX";
17+ maintainer = "XXX";
18+ author = "XXX";
19+ homepage = "";
20+ url = "";
21+ synopsis = "iserv allows GHC to delegate Template Haskell computations";
22+ description = "GHC can be provided with a path to the iserv binary with\n@-pgmi=/path/to/iserv-bin@, and will in combination with\n@-fexternal-interpreter@, compile Template Haskell though the\n@iserv-bin@ delegate. This is very similar to how ghcjs has been\ncompiling Template Haskell, by spawning a separate delegate (so\ncalled runner on the javascript vm) and evaluating the splices\nthere.\n\nTo use iserv with cross compilers, please see @libraries/libiserv@\nand @utils/iserv-proxy@.";
23+ buildType = "Simple";
24+ isLocal = true;
25+ detailLevel = "FullDetails";
26+ licenseFiles = [];
27+ dataDir = "";
28+ dataFiles = [];
29+ extraSrcFiles = [];
30+ extraTmpFiles = [];
31+ extraDocFiles = [];
32+ };
33+ components = {
34+ exes = {
35+ "iserv" = {
36+ depends = [
37+ (hsPkgs."array" or (errorHandler.buildDepError "array"))
38+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
39+ (hsPkgs."binary" or (errorHandler.buildDepError "binary"))
40+ (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring"))
41+ (hsPkgs."containers" or (errorHandler.buildDepError "containers"))
42+ (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq"))
43+ (hsPkgs."ghci" or (errorHandler.buildDepError "ghci"))
44+ (hsPkgs."libiserv" or (errorHandler.buildDepError "libiserv"))
45+ ] ++ (pkgs.lib).optional (!system.isWindows) (hsPkgs."unix" or (errorHandler.buildDepError "unix"));
46+ buildable = true;
47+ cSources = [ "cbits/iservmain.c" ];
48+ hsSourceDirs = [ "src" ];
49+ includeDirs = [ "." ];
50+ mainPath = [ "Main.hs" ] ++ [ "" ];
51+ };
52+ };
53+ };
54+ } // rec { src = (pkgs.lib).mkDefault ../utils/iserv; }
materialized/ghc-extra-projects/cross/ghc8102-experimental/.plan.nix/libiserv.nixnew file+58
@@ -0,0 +1,58 @@
1+{ system
2+ , compiler
3+ , flags
4+ , pkgs
5+ , hsPkgs
6+ , pkgconfPkgs
7+ , errorHandler
8+ , config
9+ , ... }:
10+ {
11+ flags = { network = false; };
12+ package = {
13+ specVersion = "1.10";
14+ identifier = { name = "libiserv"; version = "8.10.2"; };
15+ license = "BSD-3-Clause";
16+ copyright = "XXX";
17+ maintainer = "XXX";
18+ author = "XXX";
19+ homepage = "";
20+ url = "";
21+ synopsis = "Provides shared functionality between iserv and iserv-proxy";
22+ description = "";
23+ buildType = "Simple";
24+ isLocal = true;
25+ detailLevel = "FullDetails";
26+ licenseFiles = [ "LICENSE" ];
27+ dataDir = "";
28+ dataFiles = [];
29+ extraSrcFiles = [];
30+ extraTmpFiles = [];
31+ extraDocFiles = [];
32+ };
33+ components = {
34+ "library" = {
35+ depends = ([
36+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
37+ (hsPkgs."binary" or (errorHandler.buildDepError "binary"))
38+ (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring"))
39+ (hsPkgs."containers" or (errorHandler.buildDepError "containers"))
40+ (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq"))
41+ (hsPkgs."ghci" or (errorHandler.buildDepError "ghci"))
42+ ] ++ (pkgs.lib).optionals (flags.network) [
43+ (hsPkgs."network" or (errorHandler.buildDepError "network"))
44+ (hsPkgs."directory" or (errorHandler.buildDepError "directory"))
45+ (hsPkgs."filepath" or (errorHandler.buildDepError "filepath"))
46+ ]) ++ (pkgs.lib).optional (!system.isWindows) (hsPkgs."unix" or (errorHandler.buildDepError "unix"));
47+ buildable = true;
48+ modules = [
49+ "Lib"
50+ "GHCi/Utils"
51+ ] ++ (pkgs.lib).optionals (flags.network) [
52+ "Remote/Message"
53+ "Remote/Slave"
54+ ];
55+ hsSourceDirs = [ "src" ];
56+ };
57+ };
58+ } // rec { src = (pkgs.lib).mkDefault ../libraries/libiserv; }
materialized/ghc-extra-projects/cross/ghc8102-experimental/.plan.nix/remote-iserv.nixnew file+46
@@ -0,0 +1,46 @@
1+{ system
2+ , compiler
3+ , flags
4+ , pkgs
5+ , hsPkgs
6+ , pkgconfPkgs
7+ , errorHandler
8+ , config
9+ , ... }:
10+ {
11+ flags = {};
12+ package = {
13+ specVersion = "1.10";
14+ identifier = { name = "remote-iserv"; version = "8.10.2"; };
15+ license = "BSD-3-Clause";
16+ copyright = "XXX";
17+ maintainer = "Moritz Angermann <moritz.angermann@gmail.com>";
18+ author = "Moritz Angermann <moritz.angermann@gmail.com>";
19+ homepage = "";
20+ url = "";
21+ synopsis = "iserv allows GHC to delegate Tempalte Haskell computations";
22+ description = "This is a very simple remote runner for iserv, to be used together\nwith iserv-proxy. The foundamental idea is that this this wrapper\nstarts running libiserv on a given port to which iserv-proxy will\nthen connect.";
23+ buildType = "Simple";
24+ isLocal = true;
25+ detailLevel = "FullDetails";
26+ licenseFiles = [];
27+ dataDir = "";
28+ dataFiles = [];
29+ extraSrcFiles = [];
30+ extraTmpFiles = [];
31+ extraDocFiles = [];
32+ };
33+ components = {
34+ exes = {
35+ "remote-iserv" = {
36+ depends = [
37+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
38+ (hsPkgs."libiserv" or (errorHandler.buildDepError "libiserv"))
39+ ];
40+ buildable = true;
41+ hsSourceDirs = [ "src" ];
42+ mainPath = [ "Cli.hs" ];
43+ };
44+ };
45+ };
46+ } // rec { src = (pkgs.lib).mkDefault ../utils/remote-iserv; }
materialized/ghc-extra-projects/cross/ghc8102-experimental/default.nixnew file+90
@@ -0,0 +1,90 @@
1+{
2+ pkgs = hackage:
3+ {
4+ packages = {
5+ "binary".revision = (((hackage."binary")."0.8.8.0").revisions).default;
6+ "ghc-prim".revision = (((hackage."ghc-prim")."0.6.1").revisions).default;
7+ "unix".revision = (((hackage."unix")."2.7.2.2").revisions).default;
8+ "ghc-heap".revision = (((hackage."ghc-heap")."8.10.2").revisions).default;
9+ "rts".revision = (((hackage."rts")."1.0").revisions).default;
10+ "deepseq".revision = (((hackage."deepseq")."1.4.4.0").revisions).default;
11+ "network".revision = (((hackage."network")."2.8.0.1").revisions).default;
12+ "directory".revision = (((hackage."directory")."1.3.6.1").revisions).default;
13+ "template-haskell".revision = (((hackage."template-haskell")."2.16.0.0").revisions).default;
14+ "containers".revision = (((hackage."containers")."0.6.2.1").revisions).default;
15+ "base".revision = (((hackage."base")."4.14.1.0").revisions).default;
16+ "time".revision = (((hackage."time")."1.9.3").revisions).default;
17+ "terminfo".revision = (((hackage."terminfo")."0.4.1.4").revisions).default;
18+ "transformers".revision = (((hackage."transformers")."0.5.6.2").revisions).default;
19+ "filepath".revision = (((hackage."filepath")."1.4.2.1").revisions).default;
20+ "process".revision = (((hackage."process")."1.6.9.0").revisions).default;
21+ "pretty".revision = (((hackage."pretty")."1.1.3.6").revisions).default;
22+ "ghc-boot-th".revision = (((hackage."ghc-boot-th")."8.10.2").revisions).default;
23+ "array".revision = (((hackage."array")."0.5.4.0").revisions).default;
24+ "integer-gmp".revision = (((hackage."integer-gmp")."1.0.3.0").revisions).default;
25+ };
26+ compiler = {
27+ version = "8.10.2";
28+ nix-name = "ghc8102";
29+ packages = {
30+ "ghc-prim" = "0.6.1";
31+ "ghc-heap" = "8.10.2";
32+ "rts" = "1.0";
33+ "deepseq" = "1.4.4.0";
34+ "template-haskell" = "2.16.0.0";
35+ "containers" = "0.6.2.1";
36+ "base" = "4.14.1.0";
37+ "time" = "1.9.3";
38+ "transformers" = "0.5.6.2";
39+ "filepath" = "1.4.2.1";
40+ "pretty" = "1.1.3.6";
41+ "ghc-boot-th" = "8.10.2";
42+ "array" = "0.5.4.0";
43+ "integer-gmp" = "1.0.3.0";
44+ };
45+ };
46+ };
47+ extras = hackage:
48+ {
49+ packages = {
50+ ghc = ./.plan.nix/ghc.nix;
51+ bytestring = ./.plan.nix/bytestring.nix;
52+ remote-iserv = ./.plan.nix/remote-iserv.nix;
53+ iserv-proxy = ./.plan.nix/iserv-proxy.nix;
54+ hpc = ./.plan.nix/hpc.nix;
55+ libiserv = ./.plan.nix/libiserv.nix;
56+ ghc-boot = ./.plan.nix/ghc-boot.nix;
57+ ghci = ./.plan.nix/ghci.nix;
58+ iserv = ./.plan.nix/iserv.nix;
59+ };
60+ };
61+ modules = [
62+ ({ lib, ... }:
63+ {
64+ packages = {
65+ "ghc" = {
66+ flags = {
67+ "stage1" = lib.mkOverride 900 false;
68+ "stage2" = lib.mkOverride 900 false;
69+ "integer-gmp" = lib.mkOverride 900 false;
70+ "stage3" = lib.mkOverride 900 false;
71+ "dynamic-system-linker" = lib.mkOverride 900 true;
72+ "ghci" = lib.mkOverride 900 true;
73+ "integer-simple" = lib.mkOverride 900 false;
74+ "terminfo" = lib.mkOverride 900 true;
75+ };
76+ };
77+ "bytestring" = {
78+ flags = { "integer-simple" = lib.mkOverride 900 false; };
79+ };
80+ "remote-iserv" = { flags = {}; };
81+ "iserv-proxy" = { flags = {}; };
82+ "hpc" = { flags = {}; };
83+ "libiserv" = { flags = { "network" = lib.mkOverride 900 true; }; };
84+ "ghc-boot" = { flags = {}; };
85+ "ghci" = { flags = { "ghci" = lib.mkOverride 900 true; }; };
86+ "iserv" = { flags = {}; };
87+ };
88+ })
89+ ];
90+ }
materialized/ghc-extra-projects/default/ghc8102-experimental/.plan.nix/bytestring.nixnew file+136
@@ -0,0 +1,136 @@
1+{ system
2+ , compiler
3+ , flags
4+ , pkgs
5+ , hsPkgs
6+ , pkgconfPkgs
7+ , errorHandler
8+ , config
9+ , ... }:
10+ {
11+ flags = { integer-simple = false; };
12+ package = {
13+ specVersion = "1.10";
14+ identifier = { name = "bytestring"; version = "0.10.10.0"; };
15+ license = "BSD-3-Clause";
16+ copyright = "Copyright (c) Don Stewart 2005-2009,\n(c) Duncan Coutts 2006-2015,\n(c) David Roundy 2003-2005,\n(c) Jasper Van der Jeugt 2010,\n(c) Simon Meier 2010-2013.";
17+ maintainer = "Duncan Coutts <duncan@community.haskell.org>";
18+ author = "Don Stewart,\nDuncan Coutts";
19+ homepage = "https://github.com/haskell/bytestring";
20+ url = "";
21+ synopsis = "Fast, compact, strict and lazy byte strings with a list interface";
22+ description = "An efficient compact, immutable byte string type (both strict and lazy)\nsuitable for binary or 8-bit character data.\n\nThe 'ByteString' type represents sequences of bytes or 8-bit characters.\nIt is suitable for high performance use, both in terms of large data\nquantities, or high speed requirements. The 'ByteString' functions follow\nthe same style as Haskell\\'s ordinary lists, so it is easy to convert code\nfrom using 'String' to 'ByteString'.\n\nTwo 'ByteString' variants are provided:\n\n* Strict 'ByteString's keep the string as a single large array. This\nmakes them convenient for passing data between C and Haskell.\n\n* Lazy 'ByteString's use a lazy list of strict chunks which makes it\nsuitable for I\\/O streaming tasks.\n\nThe @Char8@ modules provide a character-based view of the same\nunderlying 'ByteString' types. This makes it convenient to handle mixed\nbinary and 8-bit character content (which is common in many file formats\nand network protocols).\n\nThe 'Builder' module provides an efficient way to build up 'ByteString's\nin an ad-hoc way by repeated concatenation. This is ideal for fast\nserialisation or pretty printing.\n\nThere is also a 'ShortByteString' type which has a lower memory overhead\nand can can be converted to or from a 'ByteString', but supports very few\nother operations. It is suitable for keeping many short strings in memory.\n\n'ByteString's are not designed for Unicode. For Unicode strings you should\nuse the 'Text' type from the @text@ package.\n\nThese modules are intended to be imported qualified, to avoid name clashes\nwith \"Prelude\" functions, e.g.\n\n> import qualified Data.ByteString as BS";
23+ buildType = "Simple";
24+ isLocal = true;
25+ detailLevel = "FullDetails";
26+ licenseFiles = [ "LICENSE" ];
27+ dataDir = "";
28+ dataFiles = [];
29+ extraSrcFiles = [ "README.md" "Changelog.md" ];
30+ extraTmpFiles = [];
31+ extraDocFiles = [];
32+ };
33+ components = {
34+ "library" = {
35+ depends = ([
36+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
37+ (hsPkgs."ghc-prim" or (errorHandler.buildDepError "ghc-prim"))
38+ (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq"))
39+ ] ++ (pkgs.lib).optionals (compiler.isGhc && (compiler.version).ge "6.11") ((pkgs.lib).optional (!flags.integer-simple) (hsPkgs."integer-gmp" or (errorHandler.buildDepError "integer-gmp")))) ++ (pkgs.lib).optional (compiler.isGhc && (compiler.version).ge "6.9" && (compiler.isGhc && (compiler.version).lt "6.11")) (hsPkgs."integer" or (errorHandler.buildDepError "integer"));
40+ buildable = true;
41+ modules = [
42+ "Data/ByteString/Builder/ASCII"
43+ "Data/ByteString/Builder/Prim/Binary"
44+ "Data/ByteString/Builder/Prim/ASCII"
45+ "Data/ByteString/Builder/Prim/Internal/Floating"
46+ "Data/ByteString/Builder/Prim/Internal/UncheckedShifts"
47+ "Data/ByteString/Builder/Prim/Internal/Base16"
48+ "Data/ByteString"
49+ "Data/ByteString/Char8"
50+ "Data/ByteString/Unsafe"
51+ "Data/ByteString/Internal"
52+ "Data/ByteString/Lazy"
53+ "Data/ByteString/Lazy/Char8"
54+ "Data/ByteString/Lazy/Internal"
55+ "Data/ByteString/Short"
56+ "Data/ByteString/Short/Internal"
57+ "Data/ByteString/Builder"
58+ "Data/ByteString/Builder/Extra"
59+ "Data/ByteString/Builder/Prim"
60+ "Data/ByteString/Builder/Internal"
61+ "Data/ByteString/Builder/Prim/Internal"
62+ "Data/ByteString/Lazy/Builder"
63+ "Data/ByteString/Lazy/Builder/Extras"
64+ "Data/ByteString/Lazy/Builder/ASCII"
65+ ];
66+ cSources = [ "cbits/fpstring.c" "cbits/itoa.c" ];
67+ includeDirs = [ "include" ];
68+ includes = [ "fpstring.h" ];
69+ };
70+ tests = {
71+ "prop-compiled" = {
72+ depends = [
73+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
74+ (hsPkgs."ghc-prim" or (errorHandler.buildDepError "ghc-prim"))
75+ (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq"))
76+ (hsPkgs."random" or (errorHandler.buildDepError "random"))
77+ (hsPkgs."directory" or (errorHandler.buildDepError "directory"))
78+ (hsPkgs."test-framework" or (errorHandler.buildDepError "test-framework"))
79+ (hsPkgs."test-framework-quickcheck2" or (errorHandler.buildDepError "test-framework-quickcheck2"))
80+ (hsPkgs."QuickCheck" or (errorHandler.buildDepError "QuickCheck"))
81+ ];
82+ buildable = true;
83+ modules = [ "Rules" "QuickCheckUtils" "TestFramework" ];
84+ cSources = [ "cbits/fpstring.c" ];
85+ hsSourceDirs = [ "." "tests" ];
86+ includeDirs = [ "include" ];
87+ mainPath = [ "Properties.hs" ];
88+ };
89+ "regressions" = {
90+ depends = [
91+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
92+ (hsPkgs."ghc-prim" or (errorHandler.buildDepError "ghc-prim"))
93+ (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq"))
94+ (hsPkgs."random" or (errorHandler.buildDepError "random"))
95+ (hsPkgs."directory" or (errorHandler.buildDepError "directory"))
96+ (hsPkgs."test-framework" or (errorHandler.buildDepError "test-framework"))
97+ (hsPkgs."test-framework-hunit" or (errorHandler.buildDepError "test-framework-hunit"))
98+ (hsPkgs."HUnit" or (errorHandler.buildDepError "HUnit"))
99+ ];
100+ buildable = false;
101+ cSources = [ "cbits/fpstring.c" ];
102+ hsSourceDirs = [ "." "tests" ];
103+ includeDirs = [ "include" ];
104+ mainPath = [ "Regressions.hs" ];
105+ };
106+ "test-builder" = {
107+ depends = [
108+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
109+ (hsPkgs."ghc-prim" or (errorHandler.buildDepError "ghc-prim"))
110+ (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq"))
111+ (hsPkgs."QuickCheck" or (errorHandler.buildDepError "QuickCheck"))
112+ (hsPkgs."byteorder" or (errorHandler.buildDepError "byteorder"))
113+ (hsPkgs."dlist" or (errorHandler.buildDepError "dlist"))
114+ (hsPkgs."directory" or (errorHandler.buildDepError "directory"))
115+ (hsPkgs."mtl" or (errorHandler.buildDepError "mtl"))
116+ (hsPkgs."HUnit" or (errorHandler.buildDepError "HUnit"))
117+ (hsPkgs."test-framework" or (errorHandler.buildDepError "test-framework"))
118+ (hsPkgs."test-framework-hunit" or (errorHandler.buildDepError "test-framework-hunit"))
119+ (hsPkgs."test-framework-quickcheck2" or (errorHandler.buildDepError "test-framework-quickcheck2"))
120+ ];
121+ buildable = true;
122+ modules = [
123+ "Data/ByteString/Builder/Tests"
124+ "Data/ByteString/Builder/Prim/Tests"
125+ "Data/ByteString/Builder/Prim/TestUtils"
126+ "TestFramework"
127+ ];
128+ cSources = [ "cbits/fpstring.c" "cbits/itoa.c" ];
129+ hsSourceDirs = [ "." "tests" "tests/builder" ];
130+ includeDirs = [ "include" ];
131+ includes = [ "fpstring.h" ];
132+ mainPath = [ "TestSuite.hs" ];
133+ };
134+ };
135+ };
136+ } // rec { src = (pkgs.lib).mkDefault ../libraries/bytestring; }
materialized/ghc-extra-projects/default/ghc8102-experimental/.plan.nix/ghc-boot.nixnew file+60
@@ -0,0 +1,60 @@
1+{ system
2+ , compiler
3+ , flags
4+ , pkgs
5+ , hsPkgs
6+ , pkgconfPkgs
7+ , errorHandler
8+ , config
9+ , ... }:
10+ {
11+ flags = {};
12+ package = {
13+ specVersion = "1.22";
14+ identifier = { name = "ghc-boot"; version = "8.10.2"; };
15+ license = "BSD-3-Clause";
16+ copyright = "";
17+ maintainer = "ghc-devs@haskell.org";
18+ author = "";
19+ homepage = "";
20+ url = "";
21+ synopsis = "Shared functionality between GHC and its boot libraries";
22+ description = "This library is shared between GHC, ghc-pkg, and other boot\nlibraries.\n\nA note about \"GHC.PackageDb\": it only deals with the subset of\nthe package database that the compiler cares about: modules\npaths etc and not package metadata like description, authors\netc. It is thus not a library interface to ghc-pkg and is *not*\nsuitable for modifying GHC package databases.\n\nThe package database format and this library are constructed in\nsuch a way that while ghc-pkg depends on Cabal, the GHC library\nand program do not have to depend on Cabal.";
23+ buildType = "Simple";
24+ isLocal = true;
25+ detailLevel = "FullDetails";
26+ licenseFiles = [ "LICENSE" ];
27+ dataDir = "";
28+ dataFiles = [];
29+ extraSrcFiles = [];
30+ extraTmpFiles = [];
31+ extraDocFiles = [];
32+ };
33+ components = {
34+ "library" = {
35+ depends = [
36+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
37+ (hsPkgs."binary" or (errorHandler.buildDepError "binary"))
38+ (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring"))
39+ (hsPkgs."containers" or (errorHandler.buildDepError "containers"))
40+ (hsPkgs."directory" or (errorHandler.buildDepError "directory"))
41+ (hsPkgs."filepath" or (errorHandler.buildDepError "filepath"))
42+ (hsPkgs."ghc-boot-th" or (errorHandler.buildDepError "ghc-boot-th"))
43+ ];
44+ buildable = true;
45+ modules = [
46+ "GHC/BaseDir"
47+ "GHC/LanguageExtensions"
48+ "GHC/PackageDb"
49+ "GHC/Serialized"
50+ "GHC/ForeignSrcLang"
51+ "GHC/HandleEncoding"
52+ "GHC/Platform"
53+ "GHC/Platform/Host"
54+ "GHC/Settings"
55+ "GHC/UniqueSubdir"
56+ "GHC/Version"
57+ ];
58+ };
59+ };
60+ } // rec { src = (pkgs.lib).mkDefault ../libraries/ghc-boot; }
materialized/ghc-extra-projects/default/ghc8102-experimental/.plan.nix/ghc.nixnew file+586
@@ -0,0 +1,586 @@
1+{ system
2+ , compiler
3+ , flags
4+ , pkgs
5+ , hsPkgs
6+ , pkgconfPkgs
7+ , errorHandler
8+ , config
9+ , ... }:
10+ {
11+ flags = {
12+ ghci = false;
13+ stage1 = false;
14+ stage2 = false;
15+ stage3 = false;
16+ terminfo = true;
17+ integer-simple = false;
18+ integer-gmp = false;
19+ dynamic-system-linker = true;
20+ };
21+ package = {
22+ specVersion = "1.10";
23+ identifier = { name = "ghc"; version = "8.10.2"; };
24+ license = "BSD-3-Clause";
25+ copyright = "";
26+ maintainer = "glasgow-haskell-users@haskell.org";
27+ author = "The GHC Team";
28+ homepage = "http://www.haskell.org/ghc/";
29+ url = "";
30+ synopsis = "The GHC API";
31+ description = "GHC's functionality can be useful for more things than just\ncompiling Haskell programs. Important use cases are programs\nthat analyse (and perhaps transform) Haskell code. Others\ninclude loading Haskell code dynamically in a GHCi-like manner.\nFor this reason, a lot of GHC's functionality is made available\nthrough this package.";
32+ buildType = "Simple";
33+ isLocal = true;
34+ detailLevel = "FullDetails";
35+ licenseFiles = [ "LICENSE" ];
36+ dataDir = "";
37+ dataFiles = [];
38+ extraSrcFiles = [];
39+ extraTmpFiles = [];
40+ extraDocFiles = [];
41+ };
42+ components = {
43+ "library" = {
44+ depends = ((([
45+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
46+ (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq"))
47+ (hsPkgs."directory" or (errorHandler.buildDepError "directory"))
48+ (hsPkgs."process" or (errorHandler.buildDepError "process"))
49+ (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring"))
50+ (hsPkgs."binary" or (errorHandler.buildDepError "binary"))
51+ (hsPkgs."time" or (errorHandler.buildDepError "time"))
52+ (hsPkgs."containers" or (errorHandler.buildDepError "containers"))
53+ (hsPkgs."array" or (errorHandler.buildDepError "array"))
54+ (hsPkgs."filepath" or (errorHandler.buildDepError "filepath"))
55+ (hsPkgs."template-haskell" or (errorHandler.buildDepError "template-haskell"))
56+ (hsPkgs."hpc" or (errorHandler.buildDepError "hpc"))
57+ (hsPkgs."transformers" or (errorHandler.buildDepError "transformers"))
58+ (hsPkgs."ghc-boot" or (errorHandler.buildDepError "ghc-boot"))
59+ (hsPkgs."ghc-boot-th" or (errorHandler.buildDepError "ghc-boot-th"))
60+ (hsPkgs."ghc-heap" or (errorHandler.buildDepError "ghc-heap"))
61+ (hsPkgs."ghci" or (errorHandler.buildDepError "ghci"))
62+ ] ++ (if system.isWindows
63+ then [ (hsPkgs."Win32" or (errorHandler.buildDepError "Win32")) ]
64+ else [
65+ (hsPkgs."unix" or (errorHandler.buildDepError "unix"))
66+ ] ++ (pkgs.lib).optional (flags.terminfo) (hsPkgs."terminfo" or (errorHandler.buildDepError "terminfo")))) ++ (pkgs.lib).optional (flags.integer-gmp && flags.integer-simple) (hsPkgs."invalid-cabal-flag-settings" or (errorHandler.buildDepError "invalid-cabal-flag-settings"))) ++ (pkgs.lib).optional (flags.integer-gmp) (hsPkgs."integer-gmp" or (errorHandler.buildDepError "integer-gmp"))) ++ (pkgs.lib).optional (flags.integer-simple) (hsPkgs."integer-simple" or (errorHandler.buildDepError "integer-simple"));
67+ buildable = true;
68+ modules = [
69+ "HieTypes"
70+ "HieDebug"
71+ "HieBin"
72+ "HieUtils"
73+ "HieAst"
74+ "Ar"
75+ "FileCleanup"
76+ "DriverBkp"
77+ "BkpSyn"
78+ "NameShape"
79+ "RnModIface"
80+ "Avail"
81+ "AsmUtils"
82+ "BasicTypes"
83+ "ConLike"
84+ "DataCon"
85+ "PatSyn"
86+ "Demand"
87+ "Debug"
88+ "Exception"
89+ "FieldLabel"
90+ "GhcMonad"
91+ "Hooks"
92+ "Id"
93+ "IdInfo"
94+ "Predicate"
95+ "Lexeme"
96+ "Literal"
97+ "Llvm"
98+ "Llvm/AbsSyn"
99+ "Llvm/MetaData"
100+ "Llvm/PpLlvm"
101+ "Llvm/Types"
102+ "LlvmCodeGen"
103+ "LlvmCodeGen/Base"
104+ "LlvmCodeGen/CodeGen"
105+ "LlvmCodeGen/Data"
106+ "LlvmCodeGen/Ppr"
107+ "LlvmCodeGen/Regs"
108+ "LlvmMangler"
109+ "MkId"
110+ "Module"
111+ "Name"
112+ "NameEnv"
113+ "NameSet"
114+ "OccName"
115+ "RdrName"
116+ "NameCache"
117+ "SrcLoc"
118+ "UniqSupply"
119+ "Unique"
120+ "Var"
121+ "VarEnv"
122+ "VarSet"
123+ "UnVarGraph"
124+ "BlockId"
125+ "CLabel"
126+ "Cmm"
127+ "CmmBuildInfoTables"
128+ "CmmPipeline"
129+ "CmmCallConv"
130+ "CmmCommonBlockElim"
131+ "CmmImplementSwitchPlans"
132+ "CmmContFlowOpt"
133+ "CmmExpr"
134+ "CmmInfo"
135+ "CmmLex"
136+ "CmmLint"
137+ "CmmLive"
138+ "CmmMachOp"
139+ "CmmMonad"
140+ "CmmSwitch"
141+ "CmmNode"
142+ "CmmOpt"
143+ "CmmParse"
144+ "CmmProcPoint"
145+ "CmmSink"
146+ "CmmType"
147+ "CmmUtils"
148+ "CmmLayoutStack"
149+ "CliOption"
150+ "EnumSet"
151+ "GhcNameVersion"
152+ "FileSettings"
153+ "MkGraph"
154+ "PprBase"
155+ "PprC"
156+ "PprCmm"
157+ "PprCmmDecl"
158+ "PprCmmExpr"
159+ "Bitmap"
160+ "GHC/Platform/Regs"
161+ "GHC/Platform/ARM"
162+ "GHC/Platform/ARM64"
163+ "GHC/Platform/NoRegs"
164+ "GHC/Platform/PPC"
165+ "GHC/Platform/S390X"
166+ "GHC/Platform/SPARC"
167+ "GHC/Platform/X86"
168+ "GHC/Platform/X86_64"
169+ "GHC/StgToCmm/CgUtils"
170+ "GHC/StgToCmm"
171+ "GHC/StgToCmm/Bind"
172+ "GHC/StgToCmm/Closure"
173+ "GHC/StgToCmm/DataCon"
174+ "GHC/StgToCmm/Env"
175+ "GHC/StgToCmm/Expr"
176+ "GHC/StgToCmm/Foreign"
177+ "GHC/StgToCmm/Heap"
178+ "GHC/StgToCmm/Hpc"
179+ "GHC/StgToCmm/ArgRep"
180+ "GHC/StgToCmm/Layout"
181+ "GHC/StgToCmm/Monad"
182+ "GHC/StgToCmm/Prim"
183+ "GHC/StgToCmm/Prof"
184+ "GHC/StgToCmm/Ticky"
185+ "GHC/StgToCmm/Utils"
186+ "GHC/StgToCmm/ExtCode"
187+ "SMRep"
188+ "CoreArity"
189+ "CoreFVs"
190+ "CoreLint"
191+ "CorePrep"
192+ "CoreSubst"
193+ "CoreOpt"
194+ "CoreSyn"
195+ "TrieMap"
196+ "CoreTidy"
197+ "CoreUnfold"
198+ "CoreUtils"
199+ "CoreMap"
200+ "CoreSeq"
201+ "CoreStats"
202+ "MkCore"
203+ "PprCore"
204+ "GHC/HsToCore/PmCheck/Oracle"
205+ "GHC/HsToCore/PmCheck/Ppr"
206+ "GHC/HsToCore/PmCheck/Types"
207+ "GHC/HsToCore/PmCheck"
208+ "Coverage"
209+ "Desugar"
210+ "DsArrows"
211+ "DsBinds"
212+ "DsCCall"
213+ "DsExpr"
214+ "DsForeign"
215+ "DsGRHSs"
216+ "DsListComp"
217+ "DsMonad"
218+ "DsUsage"
219+ "DsUtils"
220+ "ExtractDocs"
221+ "Match"
222+ "MatchCon"
223+ "MatchLit"
224+ "GHC/Hs"
225+ "GHC/Hs/Binds"
226+ "GHC/Hs/Decls"
227+ "GHC/Hs/Doc"
228+ "GHC/Hs/Expr"
229+ "GHC/Hs/ImpExp"
230+ "GHC/Hs/Lit"
231+ "GHC/Hs/PlaceHolder"
232+ "GHC/Hs/Extension"
233+ "GHC/Hs/Instances"
234+ "GHC/Hs/Pat"
235+ "GHC/Hs/Types"
236+ "GHC/Hs/Utils"
237+ "GHC/Hs/Dump"
238+ "BinIface"
239+ "BinFingerprint"
240+ "BuildTyCl"
241+ "IfaceEnv"
242+ "IfaceSyn"
243+ "IfaceType"
244+ "ToIface"
245+ "LoadIface"
246+ "MkIface"
247+ "TcIface"
248+ "FlagChecker"
249+ "Annotations"
250+ "CmdLineParser"
251+ "CodeOutput"
252+ "Config"
253+ "Constants"
254+ "DriverMkDepend"
255+ "DriverPhases"
256+ "PipelineMonad"
257+ "DriverPipeline"
258+ "DynFlags"
259+ "ErrUtils"
260+ "Finder"
261+ "GHC"
262+ "GhcMake"
263+ "GhcPlugins"
264+ "GhcPrelude"
265+ "DynamicLoading"
266+ "HeaderInfo"
267+ "HscMain"
268+ "HscStats"
269+ "HscTypes"
270+ "InteractiveEval"
271+ "InteractiveEvalTypes"
272+ "PackageConfig"
273+ "Packages"
274+ "PlatformConstants"
275+ "Plugins"
276+ "TcPluginM"
277+ "PprTyThing"
278+ "Settings"
279+ "StaticPtrTable"
280+ "SysTools"
281+ "SysTools/BaseDir"
282+ "SysTools/Terminal"
283+ "SysTools/ExtraObj"
284+ "SysTools/Info"
285+ "SysTools/Process"
286+ "SysTools/Tasks"
287+ "SysTools/Settings"
288+ "Elf"
289+ "TidyPgm"
290+ "Ctype"
291+ "HaddockUtils"
292+ "Lexer"
293+ "OptCoercion"
294+ "Parser"
295+ "RdrHsSyn"
296+ "ApiAnnotation"
297+ "ForeignCall"
298+ "KnownUniques"
299+ "PrelInfo"
300+ "PrelNames"
301+ "PrelRules"
302+ "PrimOp"
303+ "ToolSettings"
304+ "TysPrim"
305+ "TysWiredIn"
306+ "CostCentre"
307+ "CostCentreState"
308+ "ProfInit"
309+ "RnBinds"
310+ "RnEnv"
311+ "RnExpr"
312+ "RnHsDoc"
313+ "RnNames"
314+ "RnPat"
315+ "RnSource"
316+ "RnSplice"
317+ "RnTypes"
318+ "RnFixity"
319+ "RnUtils"
320+ "RnUnbound"
321+ "CoreMonad"
322+ "CSE"
323+ "FloatIn"
324+ "FloatOut"
325+ "LiberateCase"
326+ "OccurAnal"
327+ "SAT"
328+ "SetLevels"
329+ "SimplCore"
330+ "SimplEnv"
331+ "SimplMonad"
332+ "SimplUtils"
333+ "Simplify"
334+ "SimplStg"
335+ "StgStats"
336+ "StgCse"
337+ "StgLiftLams"
338+ "StgLiftLams/Analysis"
339+ "StgLiftLams/LiftM"
340+ "StgLiftLams/Transformation"
341+ "StgSubst"
342+ "UnariseStg"
343+ "RepType"
344+ "Rules"
345+ "SpecConstr"
346+ "Specialise"
347+ "CoreToStg"
348+ "StgLint"
349+ "StgSyn"
350+ "StgFVs"
351+ "CallArity"
352+ "DmdAnal"
353+ "Exitify"
354+ "WorkWrap"
355+ "WwLib"
356+ "FamInst"
357+ "ClsInst"
358+ "Inst"
359+ "TcAnnotations"
360+ "TcArrows"
361+ "TcBinds"
362+ "TcSigs"
363+ "TcClassDcl"
364+ "TcDefaults"
365+ "TcDeriv"
366+ "TcDerivInfer"
367+ "TcDerivUtils"
368+ "TcEnv"
369+ "TcExpr"
370+ "TcForeign"
371+ "TcGenDeriv"
372+ "TcGenFunctor"
373+ "TcGenGenerics"
374+ "TcHsSyn"
375+ "TcHsType"
376+ "TcInstDcls"
377+ "TcMType"
378+ "TcValidity"
379+ "TcMatches"
380+ "TcPat"
381+ "TcPatSyn"
382+ "TcRnDriver"
383+ "TcBackpack"
384+ "TcRnExports"
385+ "TcRnMonad"
386+ "TcRnTypes"
387+ "Constraint"
388+ "TcOrigin"
389+ "TcRules"
390+ "TcSimplify"
391+ "TcHoleErrors"
392+ "TcHoleFitTypes"
393+ "TcErrors"
394+ "TcTyClsDecls"
395+ "TcTyDecls"
396+ "TcTypeable"
397+ "TcType"
398+ "TcEvidence"
399+ "TcEvTerm"
400+ "TcUnify"
401+ "TcInteract"
402+ "TcCanonical"
403+ "TcFlatten"
404+ "TcSMonad"
405+ "TcTypeNats"
406+ "TcSplice"
407+ "Class"
408+ "Coercion"
409+ "DsMeta"
410+ "THNames"
411+ "FamInstEnv"
412+ "FunDeps"
413+ "InstEnv"
414+ "TyCon"
415+ "CoAxiom"
416+ "Type"
417+ "TyCoRep"
418+ "TyCoFVs"
419+ "TyCoSubst"
420+ "TyCoPpr"
421+ "TyCoTidy"
422+ "Unify"
423+ "Bag"
424+ "Binary"
425+ "BooleanFormula"
426+ "BufWrite"
427+ "Digraph"
428+ "Encoding"
429+ "FastFunctions"
430+ "FastMutInt"
431+ "FastString"
432+ "FastStringEnv"
433+ "Fingerprint"
434+ "FiniteMap"
435+ "FV"
436+ "GraphBase"
437+ "GraphColor"
438+ "GraphOps"
439+ "GraphPpr"
440+ "IOEnv"
441+ "Json"
442+ "ListSetOps"
443+ "Maybes"
444+ "MonadUtils"
445+ "OrdList"
446+ "Outputable"
447+ "Pair"
448+ "Panic"
449+ "PlainPanic"
450+ "PprColour"
451+ "Pretty"
452+ "State"
453+ "Stream"
454+ "StringBuffer"
455+ "UniqDFM"
456+ "UniqDSet"
457+ "UniqFM"
458+ "UniqMap"
459+ "UniqSet"
460+ "Util"
461+ "Hoopl/Block"
462+ "Hoopl/Collections"
463+ "Hoopl/Dataflow"
464+ "Hoopl/Graph"
465+ "Hoopl/Label"
466+ "AsmCodeGen"
467+ "TargetReg"
468+ "NCGMonad"
469+ "Instruction"
470+ "BlockLayout"
471+ "CFG"
472+ "Dominators"
473+ "Format"
474+ "Reg"
475+ "RegClass"
476+ "PIC"
477+ "CPrim"
478+ "X86/Regs"
479+ "X86/RegInfo"
480+ "X86/Instr"
481+ "X86/Cond"
482+ "X86/Ppr"
483+ "X86/CodeGen"
484+ "PPC/Regs"
485+ "PPC/RegInfo"
486+ "PPC/Instr"
487+ "PPC/Cond"
488+ "PPC/Ppr"
489+ "PPC/CodeGen"
490+ "SPARC/Base"
491+ "SPARC/Regs"
492+ "SPARC/Imm"
493+ "SPARC/AddrMode"
494+ "SPARC/Cond"
495+ "SPARC/Instr"
496+ "SPARC/Stack"
497+ "SPARC/ShortcutJump"
498+ "SPARC/Ppr"
499+ "SPARC/CodeGen"
500+ "SPARC/CodeGen/Amode"
501+ "SPARC/CodeGen/Base"
502+ "SPARC/CodeGen/CondCode"
503+ "SPARC/CodeGen/Gen32"
504+ "SPARC/CodeGen/Gen64"
505+ "SPARC/CodeGen/Sanity"
506+ "SPARC/CodeGen/Expand"
507+ "RegAlloc/Liveness"
508+ "RegAlloc/Graph/Main"
509+ "RegAlloc/Graph/Stats"
510+ "RegAlloc/Graph/ArchBase"
511+ "RegAlloc/Graph/ArchX86"
512+ "RegAlloc/Graph/Coalesce"
513+ "RegAlloc/Graph/Spill"
514+ "RegAlloc/Graph/SpillClean"
515+ "RegAlloc/Graph/SpillCost"
516+ "RegAlloc/Graph/TrivColorable"
517+ "RegAlloc/Linear/Main"
518+ "RegAlloc/Linear/JoinToTargets"
519+ "RegAlloc/Linear/State"
520+ "RegAlloc/Linear/Stats"
521+ "RegAlloc/Linear/FreeRegs"
522+ "RegAlloc/Linear/StackMap"
523+ "RegAlloc/Linear/Base"
524+ "RegAlloc/Linear/X86/FreeRegs"
525+ "RegAlloc/Linear/X86_64/FreeRegs"
526+ "RegAlloc/Linear/PPC/FreeRegs"
527+ "RegAlloc/Linear/SPARC/FreeRegs"
528+ "Dwarf"
529+ "Dwarf/Types"
530+ "Dwarf/Constants"
531+ "GHC/ThToHs"
532+ "ByteCodeTypes"
533+ "ByteCodeAsm"
534+ "ByteCodeGen"
535+ "ByteCodeInstr"
536+ "ByteCodeItbls"
537+ "ByteCodeLink"
538+ "Debugger"
539+ "LinkerTypes"
540+ "Linker"
541+ "RtClosureInspect"
542+ "GHCi"
543+ ];
544+ cSources = [
545+ "parser/cutils.c"
546+ "ghci/keepCAFsForGHCi.c"
547+ "cbits/genSym.c"
548+ ];
549+ hsSourceDirs = [
550+ "."
551+ "backpack"
552+ "basicTypes"
553+ "cmm"
554+ "coreSyn"
555+ "deSugar"
556+ "ghci"
557+ "iface"
558+ "llvmGen"
559+ "main"
560+ "nativeGen"
561+ "parser"
562+ "prelude"
563+ "profiling"
564+ "rename"
565+ "simplCore"
566+ "simplStg"
567+ "specialise"
568+ "stgSyn"
569+ "stranal"
570+ "typecheck"
571+ "types"
572+ "utils"
573+ "hieFile"
574+ ];
575+ includeDirs = ([
576+ "."
577+ "parser"
578+ "utils"
579+ ] ++ (pkgs.lib).optional (flags.ghci) "../rts/dist/build") ++ (if flags.stage1
580+ then [ "stage1" ]
581+ else if flags.stage2
582+ then [ "stage2" ]
583+ else (pkgs.lib).optional (flags.stage3) "stage2");
584+ };
585+ };
586+ } // rec { src = (pkgs.lib).mkDefault ../compiler; }
materialized/ghc-extra-projects/default/ghc8102-experimental/.plan.nix/ghci.nixnew file+70
@@ -0,0 +1,70 @@
1+{ system
2+ , compiler
3+ , flags
4+ , pkgs
5+ , hsPkgs
6+ , pkgconfPkgs
7+ , errorHandler
8+ , config
9+ , ... }:
10+ {
11+ flags = { ghci = false; };
12+ package = {
13+ specVersion = "1.10";
14+ identifier = { name = "ghci"; version = "8.10.2"; };
15+ license = "BSD-3-Clause";
16+ copyright = "";
17+ maintainer = "ghc-devs@haskell.org";
18+ author = "";
19+ homepage = "";
20+ url = "";
21+ synopsis = "The library supporting GHC's interactive interpreter";
22+ description = "This library offers interfaces which mediate interactions between the\n@ghci@ interactive shell and @iserv@, GHC's out-of-process interpreter\nbackend.";
23+ buildType = "Simple";
24+ isLocal = true;
25+ detailLevel = "FullDetails";
26+ licenseFiles = [ "LICENSE" ];
27+ dataDir = "";
28+ dataFiles = [];
29+ extraSrcFiles = [ "changelog.md" ];
30+ extraTmpFiles = [];
31+ extraDocFiles = [];
32+ };
33+ components = {
34+ "library" = {
35+ depends = [
36+ (hsPkgs."array" or (errorHandler.buildDepError "array"))
37+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
38+ (hsPkgs."binary" or (errorHandler.buildDepError "binary"))
39+ (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring"))
40+ (hsPkgs."containers" or (errorHandler.buildDepError "containers"))
41+ (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq"))
42+ (hsPkgs."filepath" or (errorHandler.buildDepError "filepath"))
43+ (hsPkgs."ghc-boot" or (errorHandler.buildDepError "ghc-boot"))
44+ (hsPkgs."ghc-boot-th" or (errorHandler.buildDepError "ghc-boot-th"))
45+ (hsPkgs."ghc-heap" or (errorHandler.buildDepError "ghc-heap"))
46+ (hsPkgs."template-haskell" or (errorHandler.buildDepError "template-haskell"))
47+ (hsPkgs."transformers" or (errorHandler.buildDepError "transformers"))
48+ ] ++ (pkgs.lib).optional (!system.isWindows) (hsPkgs."unix" or (errorHandler.buildDepError "unix"));
49+ buildable = true;
50+ modules = [
51+ "GHCi/BreakArray"
52+ "GHCi/BinaryArray"
53+ "GHCi/Message"
54+ "GHCi/ResolvedBCO"
55+ "GHCi/RemoteTypes"
56+ "GHCi/FFI"
57+ "GHCi/InfoTable"
58+ "GHCi/StaticPtrTable"
59+ "GHCi/TH/Binary"
60+ "SizedSeq"
61+ ] ++ (pkgs.lib).optionals (flags.ghci) [
62+ "GHCi/Run"
63+ "GHCi/CreateBCO"
64+ "GHCi/ObjLink"
65+ "GHCi/Signals"
66+ "GHCi/TH"
67+ ];
68+ };
69+ };
70+ } // rec { src = (pkgs.lib).mkDefault ../libraries/ghci; }
materialized/ghc-extra-projects/default/ghc8102-experimental/.plan.nix/hpc.nixnew file+52
@@ -0,0 +1,52 @@
1+{ system
2+ , compiler
3+ , flags
4+ , pkgs
5+ , hsPkgs
6+ , pkgconfPkgs
7+ , errorHandler
8+ , config
9+ , ... }:
10+ {
11+ flags = {};
12+ package = {
13+ specVersion = "1.10";
14+ identifier = { name = "hpc"; version = "0.6.1.0"; };
15+ license = "BSD-3-Clause";
16+ copyright = "";
17+ maintainer = "ghc-devs@haskell.org";
18+ author = "Andy Gill";
19+ homepage = "";
20+ url = "";
21+ synopsis = "Code Coverage Library for Haskell";
22+ description = "This package provides the code coverage library for Haskell.\n\nSee <http://www.haskell.org/haskellwiki/Haskell_program_coverage> for more\ninformation.";
23+ buildType = "Simple";
24+ isLocal = true;
25+ detailLevel = "FullDetails";
26+ licenseFiles = [ "LICENSE" ];
27+ dataDir = "";
28+ dataFiles = [];
29+ extraSrcFiles = [ "changelog.md" ];
30+ extraTmpFiles = [];
31+ extraDocFiles = [];
32+ };
33+ components = {
34+ "library" = {
35+ depends = [
36+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
37+ (hsPkgs."containers" or (errorHandler.buildDepError "containers"))
38+ (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq"))
39+ (hsPkgs."directory" or (errorHandler.buildDepError "directory"))
40+ (hsPkgs."filepath" or (errorHandler.buildDepError "filepath"))
41+ (hsPkgs."time" or (errorHandler.buildDepError "time"))
42+ ];
43+ buildable = true;
44+ modules = [
45+ "Trace/Hpc/Util"
46+ "Trace/Hpc/Mix"
47+ "Trace/Hpc/Tix"
48+ "Trace/Hpc/Reflect"
49+ ];
50+ };
51+ };
52+ } // rec { src = (pkgs.lib).mkDefault ../libraries/hpc; }
materialized/ghc-extra-projects/default/ghc8102-experimental/.plan.nix/iserv-proxy.nixnew file+55
@@ -0,0 +1,55 @@
1+{ system
2+ , compiler
3+ , flags
4+ , pkgs
5+ , hsPkgs
6+ , pkgconfPkgs
7+ , errorHandler
8+ , config
9+ , ... }:
10+ {
11+ flags = {};
12+ package = {
13+ specVersion = "1.10";
14+ identifier = { name = "iserv-proxy"; version = "8.10.2"; };
15+ license = "BSD-3-Clause";
16+ copyright = "XXX";
17+ maintainer = "XXX";
18+ author = "XXX";
19+ homepage = "";
20+ url = "";
21+ synopsis = "iserv allows GHC to delegate Tempalte Haskell computations";
22+ description = "GHC can be provided with a path to the iserv binary with\n@-pgmi=/path/to/iserv-bin@, and will in combination with\n@-fexternal-interpreter@, compile Template Haskell though the\n@iserv-bin@ delegate. This is very similar to how ghcjs has been\ncompiling Template Haskell, by spawning a separate delegate (so\ncalled runner on the javascript vm) and evaluating the splices\nthere.\n\niserv can also be used in combination with cross compilation. For\nthis, the @iserv-proxy@ needs to be built on the host, targeting the\nhost (as it is running on the host). @cabal install -flibrary\n-fproxy@ will yield the proxy.\n\nUsing the cabal for the target @arch-platform-target-cabal install\n-flibrary@ will build the required library that contains the ffi\n@startSlave@ function, which needs to be invoked on the target\n(e.g. in an iOS application) to start the remote iserv slave.\n\ncalling the GHC cross compiler with @-fexternal-interpreter\n-pgmi=\$HOME/.cabal/bin/iserv-proxy -opti\\<ip address\\> -opti\\<port\\>@\nwill cause it to compile Template Haskell via the remote at \\<ip address\\>.\n\nThus to get cross compilation with Template Haskell follow the\nfollowing receipt:\n\n* compile the iserv library for your target\n\n> iserv \$ arch-platform-target-cabal install -flibrary\n\n* setup an application for your target that calls the\n* startSlave function. This could be either haskell or your\n* targets ffi capable language, if needed.\n\n> void startSlave(false /* verbose */, 5000 /* port */,\n> \"/path/to/storagelocation/on/target\");\n\n* build the iserv-proxy\n\n> iserv \$ cabal install -flibrary -fproxy\n* Start your iserv-slave app on your target running on say @10.0.0.1:5000@\n* compiler your sources with -fexternal-interpreter and the proxy\n\n> project \$ arch-platform-target-ghc ModuleContainingTH.hs \\\n> -fexternal-interpreter \\\n> -pgmi=\$HOME/.cabal/bin/iserv-proxy \\\n> -opti10.0.0.1 -opti5000\n\nShould something not work as expected, provide @-opti-v@ for verbose\nlogging of the @iserv-proxy@.";
23+ buildType = "Simple";
24+ isLocal = true;
25+ detailLevel = "FullDetails";
26+ licenseFiles = [];
27+ dataDir = "";
28+ dataFiles = [];
29+ extraSrcFiles = [];
30+ extraTmpFiles = [];
31+ extraDocFiles = [];
32+ };
33+ components = {
34+ exes = {
35+ "iserv-proxy" = {
36+ depends = [
37+ (hsPkgs."array" or (errorHandler.buildDepError "array"))
38+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
39+ (hsPkgs."binary" or (errorHandler.buildDepError "binary"))
40+ (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring"))
41+ (hsPkgs."containers" or (errorHandler.buildDepError "containers"))
42+ (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq"))
43+ (hsPkgs."directory" or (errorHandler.buildDepError "directory"))
44+ (hsPkgs."network" or (errorHandler.buildDepError "network"))
45+ (hsPkgs."filepath" or (errorHandler.buildDepError "filepath"))
46+ (hsPkgs."ghci" or (errorHandler.buildDepError "ghci"))
47+ (hsPkgs."libiserv" or (errorHandler.buildDepError "libiserv"))
48+ ];
49+ buildable = true;
50+ hsSourceDirs = [ "src" ];
51+ mainPath = [ "Main.hs" ];
52+ };
53+ };
54+ };
55+ } // rec { src = (pkgs.lib).mkDefault ../utils/iserv-proxy; }
materialized/ghc-extra-projects/default/ghc8102-experimental/.plan.nix/iserv.nixnew file+54
@@ -0,0 +1,54 @@
1+{ system
2+ , compiler
3+ , flags
4+ , pkgs
5+ , hsPkgs
6+ , pkgconfPkgs
7+ , errorHandler
8+ , config
9+ , ... }:
10+ {
11+ flags = {};
12+ package = {
13+ specVersion = "1.10";
14+ identifier = { name = "iserv"; version = "8.10.2"; };
15+ license = "BSD-3-Clause";
16+ copyright = "XXX";
17+ maintainer = "XXX";
18+ author = "XXX";
19+ homepage = "";
20+ url = "";
21+ synopsis = "iserv allows GHC to delegate Template Haskell computations";
22+ description = "GHC can be provided with a path to the iserv binary with\n@-pgmi=/path/to/iserv-bin@, and will in combination with\n@-fexternal-interpreter@, compile Template Haskell though the\n@iserv-bin@ delegate. This is very similar to how ghcjs has been\ncompiling Template Haskell, by spawning a separate delegate (so\ncalled runner on the javascript vm) and evaluating the splices\nthere.\n\nTo use iserv with cross compilers, please see @libraries/libiserv@\nand @utils/iserv-proxy@.";
23+ buildType = "Simple";
24+ isLocal = true;
25+ detailLevel = "FullDetails";
26+ licenseFiles = [];
27+ dataDir = "";
28+ dataFiles = [];
29+ extraSrcFiles = [];
30+ extraTmpFiles = [];
31+ extraDocFiles = [];
32+ };
33+ components = {
34+ exes = {
35+ "iserv" = {
36+ depends = [
37+ (hsPkgs."array" or (errorHandler.buildDepError "array"))
38+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
39+ (hsPkgs."binary" or (errorHandler.buildDepError "binary"))
40+ (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring"))
41+ (hsPkgs."containers" or (errorHandler.buildDepError "containers"))
42+ (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq"))
43+ (hsPkgs."ghci" or (errorHandler.buildDepError "ghci"))
44+ (hsPkgs."libiserv" or (errorHandler.buildDepError "libiserv"))
45+ ] ++ (pkgs.lib).optional (!system.isWindows) (hsPkgs."unix" or (errorHandler.buildDepError "unix"));
46+ buildable = true;
47+ cSources = [ "cbits/iservmain.c" ];
48+ hsSourceDirs = [ "src" ];
49+ includeDirs = [ "." ];
50+ mainPath = [ "Main.hs" ] ++ [ "" ];
51+ };
52+ };
53+ };
54+ } // rec { src = (pkgs.lib).mkDefault ../utils/iserv; }
materialized/ghc-extra-projects/default/ghc8102-experimental/.plan.nix/libiserv.nixnew file+58
@@ -0,0 +1,58 @@
1+{ system
2+ , compiler
3+ , flags
4+ , pkgs
5+ , hsPkgs
6+ , pkgconfPkgs
7+ , errorHandler
8+ , config
9+ , ... }:
10+ {
11+ flags = { network = false; };
12+ package = {
13+ specVersion = "1.10";
14+ identifier = { name = "libiserv"; version = "8.10.2"; };
15+ license = "BSD-3-Clause";
16+ copyright = "XXX";
17+ maintainer = "XXX";
18+ author = "XXX";
19+ homepage = "";
20+ url = "";
21+ synopsis = "Provides shared functionality between iserv and iserv-proxy";
22+ description = "";
23+ buildType = "Simple";
24+ isLocal = true;
25+ detailLevel = "FullDetails";
26+ licenseFiles = [ "LICENSE" ];
27+ dataDir = "";
28+ dataFiles = [];
29+ extraSrcFiles = [];
30+ extraTmpFiles = [];
31+ extraDocFiles = [];
32+ };
33+ components = {
34+ "library" = {
35+ depends = ([
36+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
37+ (hsPkgs."binary" or (errorHandler.buildDepError "binary"))
38+ (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring"))
39+ (hsPkgs."containers" or (errorHandler.buildDepError "containers"))
40+ (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq"))
41+ (hsPkgs."ghci" or (errorHandler.buildDepError "ghci"))
42+ ] ++ (pkgs.lib).optionals (flags.network) [
43+ (hsPkgs."network" or (errorHandler.buildDepError "network"))
44+ (hsPkgs."directory" or (errorHandler.buildDepError "directory"))
45+ (hsPkgs."filepath" or (errorHandler.buildDepError "filepath"))
46+ ]) ++ (pkgs.lib).optional (!system.isWindows) (hsPkgs."unix" or (errorHandler.buildDepError "unix"));
47+ buildable = true;
48+ modules = [
49+ "Lib"
50+ "GHCi/Utils"
51+ ] ++ (pkgs.lib).optionals (flags.network) [
52+ "Remote/Message"
53+ "Remote/Slave"
54+ ];
55+ hsSourceDirs = [ "src" ];
56+ };
57+ };
58+ } // rec { src = (pkgs.lib).mkDefault ../libraries/libiserv; }
materialized/ghc-extra-projects/default/ghc8102-experimental/.plan.nix/remote-iserv.nixnew file+46
@@ -0,0 +1,46 @@
1+{ system
2+ , compiler
3+ , flags
4+ , pkgs
5+ , hsPkgs
6+ , pkgconfPkgs
7+ , errorHandler
8+ , config
9+ , ... }:
10+ {
11+ flags = {};
12+ package = {
13+ specVersion = "1.10";
14+ identifier = { name = "remote-iserv"; version = "8.10.2"; };
15+ license = "BSD-3-Clause";
16+ copyright = "XXX";
17+ maintainer = "Moritz Angermann <moritz.angermann@gmail.com>";
18+ author = "Moritz Angermann <moritz.angermann@gmail.com>";
19+ homepage = "";
20+ url = "";
21+ synopsis = "iserv allows GHC to delegate Tempalte Haskell computations";
22+ description = "This is a very simple remote runner for iserv, to be used together\nwith iserv-proxy. The foundamental idea is that this this wrapper\nstarts running libiserv on a given port to which iserv-proxy will\nthen connect.";
23+ buildType = "Simple";
24+ isLocal = true;
25+ detailLevel = "FullDetails";
26+ licenseFiles = [];
27+ dataDir = "";
28+ dataFiles = [];
29+ extraSrcFiles = [];
30+ extraTmpFiles = [];
31+ extraDocFiles = [];
32+ };
33+ components = {
34+ exes = {
35+ "remote-iserv" = {
36+ depends = [
37+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
38+ (hsPkgs."libiserv" or (errorHandler.buildDepError "libiserv"))
39+ ];
40+ buildable = true;
41+ hsSourceDirs = [ "src" ];
42+ mainPath = [ "Cli.hs" ];
43+ };
44+ };
45+ };
46+ } // rec { src = (pkgs.lib).mkDefault ../utils/remote-iserv; }
materialized/ghc-extra-projects/default/ghc8102-experimental/default.nixnew file+91
@@ -0,0 +1,91 @@
1+{
2+ pkgs = hackage:
3+ {
4+ packages = {
5+ "binary".revision = (((hackage."binary")."0.8.8.0").revisions).default;
6+ "ghc-prim".revision = (((hackage."ghc-prim")."0.6.1").revisions).default;
7+ "unix".revision = (((hackage."unix")."2.7.2.2").revisions).default;
8+ "ghc-heap".revision = (((hackage."ghc-heap")."8.10.2").revisions).default;
9+ "rts".revision = (((hackage."rts")."1.0").revisions).default;
10+ "deepseq".revision = (((hackage."deepseq")."1.4.4.0").revisions).default;
11+ "network".revision = (((hackage."network")."2.8.0.1").revisions).default;
12+ "directory".revision = (((hackage."directory")."1.3.6.1").revisions).default;
13+ "template-haskell".revision = (((hackage."template-haskell")."2.16.0.0").revisions).default;
14+ "containers".revision = (((hackage."containers")."0.6.2.1").revisions).default;
15+ "base".revision = (((hackage."base")."4.14.1.0").revisions).default;
16+ "time".revision = (((hackage."time")."1.9.3").revisions).default;
17+ "terminfo".revision = (((hackage."terminfo")."0.4.1.4").revisions).default;
18+ "transformers".revision = (((hackage."transformers")."0.5.6.2").revisions).default;
19+ "filepath".revision = (((hackage."filepath")."1.4.2.1").revisions).default;
20+ "process".revision = (((hackage."process")."1.6.9.0").revisions).default;
21+ "pretty".revision = (((hackage."pretty")."1.1.3.6").revisions).default;
22+ "ghc-boot-th".revision = (((hackage."ghc-boot-th")."8.10.2").revisions).default;
23+ "array".revision = (((hackage."array")."0.5.4.0").revisions).default;
24+ "integer-gmp".revision = (((hackage."integer-gmp")."1.0.3.0").revisions).default;
25+ };
26+ compiler = {
27+ version = "8.10.2";
28+ nix-name = "ghc8102";
29+ packages = {
30+ "ghc-prim" = "0.6.1";
31+ "ghc-heap" = "8.10.2";
32+ "rts" = "1.0";
33+ "deepseq" = "1.4.4.0";
34+ "template-haskell" = "2.16.0.0";
35+ "containers" = "0.6.2.1";
36+ "base" = "4.14.1.0";
37+ "time" = "1.9.3";
38+ "terminfo" = "0.4.1.4";
39+ "transformers" = "0.5.6.2";
40+ "filepath" = "1.4.2.1";
41+ "pretty" = "1.1.3.6";
42+ "ghc-boot-th" = "8.10.2";
43+ "array" = "0.5.4.0";
44+ "integer-gmp" = "1.0.3.0";
45+ };
46+ };
47+ };
48+ extras = hackage:
49+ {
50+ packages = {
51+ ghc = ./.plan.nix/ghc.nix;
52+ bytestring = ./.plan.nix/bytestring.nix;
53+ remote-iserv = ./.plan.nix/remote-iserv.nix;
54+ iserv-proxy = ./.plan.nix/iserv-proxy.nix;
55+ hpc = ./.plan.nix/hpc.nix;
56+ libiserv = ./.plan.nix/libiserv.nix;
57+ ghc-boot = ./.plan.nix/ghc-boot.nix;
58+ ghci = ./.plan.nix/ghci.nix;
59+ iserv = ./.plan.nix/iserv.nix;
60+ };
61+ };
62+ modules = [
63+ ({ lib, ... }:
64+ {
65+ packages = {
66+ "ghc" = {
67+ flags = {
68+ "stage1" = lib.mkOverride 900 false;
69+ "stage2" = lib.mkOverride 900 false;
70+ "integer-gmp" = lib.mkOverride 900 false;
71+ "stage3" = lib.mkOverride 900 false;
72+ "dynamic-system-linker" = lib.mkOverride 900 true;
73+ "ghci" = lib.mkOverride 900 true;
74+ "integer-simple" = lib.mkOverride 900 false;
75+ "terminfo" = lib.mkOverride 900 true;
76+ };
77+ };
78+ "bytestring" = {
79+ flags = { "integer-simple" = lib.mkOverride 900 false; };
80+ };
81+ "remote-iserv" = { flags = {}; };
82+ "iserv-proxy" = { flags = {}; };
83+ "hpc" = { flags = {}; };
84+ "libiserv" = { flags = { "network" = lib.mkOverride 900 true; }; };
85+ "ghc-boot" = { flags = {}; };
86+ "ghci" = { flags = { "ghci" = lib.mkOverride 900 true; }; };
87+ "iserv" = { flags = {}; };
88+ };
89+ })
90+ ];
91+ }
materialized/ghc8102-experimental/cabal-install/.plan.nix/cabal-install.nixnew file+340
@@ -0,0 +1,340 @@
1+{ system
2+ , compiler
3+ , flags
4+ , pkgs
5+ , hsPkgs
6+ , pkgconfPkgs
7+ , errorHandler
8+ , config
9+ , ... }:
10+ {
11+ flags = {
12+ native-dns = true;
13+ debug-expensive-assertions = false;
14+ debug-conflict-sets = false;
15+ debug-tracetree = false;
16+ lukko = true;
17+ };
18+ package = {
19+ specVersion = "1.10";
20+ identifier = { name = "cabal-install"; version = "3.2.0.0"; };
21+ license = "BSD-3-Clause";
22+ copyright = "2003-2020, Cabal Development Team";
23+ maintainer = "Cabal Development Team <cabal-devel@haskell.org>";
24+ author = "Cabal Development Team (see AUTHORS file)";
25+ homepage = "http://www.haskell.org/cabal/";
26+ url = "";
27+ synopsis = "The command-line interface for Cabal and Hackage.";
28+ description = "The \\'cabal\\' command-line program simplifies the process of managing\nHaskell software by automating the fetching, configuration, compilation\nand installation of Haskell libraries and programs.";
29+ buildType = "Custom";
30+ isLocal = true;
31+ setup-depends = [
32+ (hsPkgs.buildPackages.Cabal or (pkgs.buildPackages.Cabal or (errorHandler.buildToolDepError "Cabal")))
33+ (hsPkgs.buildPackages.base or (pkgs.buildPackages.base or (errorHandler.buildToolDepError "base")))
34+ (hsPkgs.buildPackages.process or (pkgs.buildPackages.process or (errorHandler.buildToolDepError "process")))
35+ (hsPkgs.buildPackages.filepath or (pkgs.buildPackages.filepath or (errorHandler.buildToolDepError "filepath")))
36+ ];
37+ detailLevel = "FullDetails";
38+ licenseFiles = [ "LICENSE" ];
39+ dataDir = "";
40+ dataFiles = [];
41+ extraSrcFiles = [
42+ "README.md"
43+ "bash-completion/cabal"
44+ "bootstrap.sh"
45+ "changelog"
46+ "tests/IntegrationTests2/build/keep-going/cabal.project"
47+ "tests/IntegrationTests2/build/keep-going/p/P.hs"
48+ "tests/IntegrationTests2/build/keep-going/p/p.cabal"
49+ "tests/IntegrationTests2/build/keep-going/q/Q.hs"
50+ "tests/IntegrationTests2/build/keep-going/q/q.cabal"
51+ "tests/IntegrationTests2/build/local-tarball/cabal.project"
52+ "tests/IntegrationTests2/build/local-tarball/q/Q.hs"
53+ "tests/IntegrationTests2/build/local-tarball/q/q.cabal"
54+ "tests/IntegrationTests2/build/setup-custom1/A.hs"
55+ "tests/IntegrationTests2/build/setup-custom1/Setup.hs"
56+ "tests/IntegrationTests2/build/setup-custom1/a.cabal"
57+ "tests/IntegrationTests2/build/setup-custom2/A.hs"
58+ "tests/IntegrationTests2/build/setup-custom2/Setup.hs"
59+ "tests/IntegrationTests2/build/setup-custom2/a.cabal"
60+ "tests/IntegrationTests2/build/setup-simple/A.hs"
61+ "tests/IntegrationTests2/build/setup-simple/Setup.hs"
62+ "tests/IntegrationTests2/build/setup-simple/a.cabal"
63+ "tests/IntegrationTests2/exception/bad-config/cabal.project"
64+ "tests/IntegrationTests2/exception/build/Main.hs"
65+ "tests/IntegrationTests2/exception/build/a.cabal"
66+ "tests/IntegrationTests2/exception/configure/a.cabal"
67+ "tests/IntegrationTests2/exception/no-pkg/empty.in"
68+ "tests/IntegrationTests2/exception/no-pkg2/cabal.project"
69+ "tests/IntegrationTests2/regression/3324/cabal.project"
70+ "tests/IntegrationTests2/regression/3324/p/P.hs"
71+ "tests/IntegrationTests2/regression/3324/p/p.cabal"
72+ "tests/IntegrationTests2/regression/3324/q/Q.hs"
73+ "tests/IntegrationTests2/regression/3324/q/q.cabal"
74+ "tests/IntegrationTests2/targets/all-disabled/cabal.project"
75+ "tests/IntegrationTests2/targets/all-disabled/p.cabal"
76+ "tests/IntegrationTests2/targets/benchmarks-disabled/cabal.project"
77+ "tests/IntegrationTests2/targets/benchmarks-disabled/p.cabal"
78+ "tests/IntegrationTests2/targets/benchmarks-disabled/q/q.cabal"
79+ "tests/IntegrationTests2/targets/complex/cabal.project"
80+ "tests/IntegrationTests2/targets/complex/q/Q.hs"
81+ "tests/IntegrationTests2/targets/complex/q/q.cabal"
82+ "tests/IntegrationTests2/targets/empty-pkg/cabal.project"
83+ "tests/IntegrationTests2/targets/empty-pkg/p.cabal"
84+ "tests/IntegrationTests2/targets/empty/cabal.project"
85+ "tests/IntegrationTests2/targets/empty/foo.hs"
86+ "tests/IntegrationTests2/targets/exes-disabled/cabal.project"
87+ "tests/IntegrationTests2/targets/exes-disabled/p/p.cabal"
88+ "tests/IntegrationTests2/targets/exes-disabled/q/q.cabal"
89+ "tests/IntegrationTests2/targets/lib-only/p.cabal"
90+ "tests/IntegrationTests2/targets/libs-disabled/cabal.project"
91+ "tests/IntegrationTests2/targets/libs-disabled/p/p.cabal"
92+ "tests/IntegrationTests2/targets/libs-disabled/q/q.cabal"
93+ "tests/IntegrationTests2/targets/multiple-exes/cabal.project"
94+ "tests/IntegrationTests2/targets/multiple-exes/p.cabal"
95+ "tests/IntegrationTests2/targets/multiple-libs/cabal.project"
96+ "tests/IntegrationTests2/targets/multiple-libs/p/p.cabal"
97+ "tests/IntegrationTests2/targets/multiple-libs/q/q.cabal"
98+ "tests/IntegrationTests2/targets/multiple-tests/cabal.project"
99+ "tests/IntegrationTests2/targets/multiple-tests/p.cabal"
100+ "tests/IntegrationTests2/targets/simple/P.hs"
101+ "tests/IntegrationTests2/targets/simple/cabal.project"
102+ "tests/IntegrationTests2/targets/simple/p.cabal"
103+ "tests/IntegrationTests2/targets/simple/q/QQ.hs"
104+ "tests/IntegrationTests2/targets/simple/q/q.cabal"
105+ "tests/IntegrationTests2/targets/test-only/p.cabal"
106+ "tests/IntegrationTests2/targets/tests-disabled/cabal.project"
107+ "tests/IntegrationTests2/targets/tests-disabled/p.cabal"
108+ "tests/IntegrationTests2/targets/tests-disabled/q/q.cabal"
109+ "tests/IntegrationTests2/targets/variety/cabal.project"
110+ "tests/IntegrationTests2/targets/variety/p.cabal"
111+ "tests/IntegrationTests2/build/local-tarball/p-0.1.tar.gz"
112+ ];
113+ extraTmpFiles = [];
114+ extraDocFiles = [];
115+ };
116+ components = {
117+ exes = {
118+ "cabal" = {
119+ depends = ((((([
120+ (hsPkgs."async" or (errorHandler.buildDepError "async"))
121+ (hsPkgs."array" or (errorHandler.buildDepError "array"))
122+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
123+ (hsPkgs."base16-bytestring" or (errorHandler.buildDepError "base16-bytestring"))
124+ (hsPkgs."binary" or (errorHandler.buildDepError "binary"))
125+ (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring"))
126+ (hsPkgs."Cabal" or (errorHandler.buildDepError "Cabal"))
127+ (hsPkgs."containers" or (errorHandler.buildDepError "containers"))
128+ (hsPkgs."cryptohash-sha256" or (errorHandler.buildDepError "cryptohash-sha256"))
129+ (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq"))
130+ (hsPkgs."directory" or (errorHandler.buildDepError "directory"))
131+ (hsPkgs."echo" or (errorHandler.buildDepError "echo"))
132+ (hsPkgs."edit-distance" or (errorHandler.buildDepError "edit-distance"))
133+ (hsPkgs."filepath" or (errorHandler.buildDepError "filepath"))
134+ (hsPkgs."hashable" or (errorHandler.buildDepError "hashable"))
135+ (hsPkgs."HTTP" or (errorHandler.buildDepError "HTTP"))
136+ (hsPkgs."mtl" or (errorHandler.buildDepError "mtl"))
137+ (hsPkgs."network-uri" or (errorHandler.buildDepError "network-uri"))
138+ (hsPkgs."network" or (errorHandler.buildDepError "network"))
139+ (hsPkgs."pretty" or (errorHandler.buildDepError "pretty"))
140+ (hsPkgs."process" or (errorHandler.buildDepError "process"))
141+ (hsPkgs."random" or (errorHandler.buildDepError "random"))
142+ (hsPkgs."stm" or (errorHandler.buildDepError "stm"))
143+ (hsPkgs."tar" or (errorHandler.buildDepError "tar"))
144+ (hsPkgs."time" or (errorHandler.buildDepError "time"))
145+ (hsPkgs."transformers" or (errorHandler.buildDepError "transformers"))
146+ (hsPkgs."zlib" or (errorHandler.buildDepError "zlib"))
147+ (hsPkgs."hackage-security" or (errorHandler.buildDepError "hackage-security"))
148+ (hsPkgs."text" or (errorHandler.buildDepError "text"))
149+ (hsPkgs."parsec" or (errorHandler.buildDepError "parsec"))
150+ ] ++ (pkgs.lib).optionals (!(compiler.isGhc && (compiler.version).ge "8.0")) [
151+ (hsPkgs."fail" or (errorHandler.buildDepError "fail"))
152+ (hsPkgs."semigroups" or (errorHandler.buildDepError "semigroups"))
153+ ]) ++ (pkgs.lib).optionals (flags.native-dns) (if system.isWindows
154+ then [ (hsPkgs."windns" or (errorHandler.buildDepError "windns")) ]
155+ else [
156+ (hsPkgs."resolv" or (errorHandler.buildDepError "resolv"))
157+ ])) ++ (if system.isWindows
158+ then [ (hsPkgs."Win32" or (errorHandler.buildDepError "Win32")) ]
159+ else [
160+ (hsPkgs."unix" or (errorHandler.buildDepError "unix"))
161+ ])) ++ (if flags.lukko
162+ then [ (hsPkgs."lukko" or (errorHandler.buildDepError "lukko")) ]
163+ else [
164+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
165+ ])) ++ (pkgs.lib).optional (flags.debug-conflict-sets) (hsPkgs."base" or (errorHandler.buildDepError "base"))) ++ (pkgs.lib).optional (flags.debug-tracetree) (hsPkgs."tracetree" or (errorHandler.buildDepError "tracetree"));
166+ libs = (pkgs.lib).optional (system.isAix) (pkgs."bsd" or (errorHandler.sysDepError "bsd"));
167+ buildable = true;
168+ modules = [
169+ "Distribution/Deprecated/ParseUtils"
170+ "Distribution/Deprecated/ReadP"
171+ "Distribution/Deprecated/Text"
172+ "Distribution/Deprecated/ViewAsFieldDescr"
173+ "Distribution/Client/BuildReports/Anonymous"
174+ "Distribution/Client/BuildReports/Storage"
175+ "Distribution/Client/BuildReports/Types"
176+ "Distribution/Client/BuildReports/Upload"
177+ "Distribution/Client/Check"
178+ "Distribution/Client/CmdBench"
179+ "Distribution/Client/CmdBuild"
180+ "Distribution/Client/CmdClean"
181+ "Distribution/Client/CmdConfigure"
182+ "Distribution/Client/CmdUpdate"
183+ "Distribution/Client/CmdErrorMessages"
184+ "Distribution/Client/CmdExec"
185+ "Distribution/Client/CmdFreeze"
186+ "Distribution/Client/CmdHaddock"
187+ "Distribution/Client/CmdInstall"
188+ "Distribution/Client/CmdInstall/ClientInstallFlags"
189+ "Distribution/Client/CmdRepl"
190+ "Distribution/Client/CmdRun"
191+ "Distribution/Client/CmdRun/ClientRunFlags"
192+ "Distribution/Client/CmdTest"
193+ "Distribution/Client/CmdLegacy"
194+ "Distribution/Client/CmdSdist"
195+ "Distribution/Client/Compat/Directory"
196+ "Distribution/Client/Compat/ExecutablePath"
197+ "Distribution/Client/Compat/FilePerms"
198+ "Distribution/Client/Compat/Orphans"
199+ "Distribution/Client/Compat/Prelude"
200+ "Distribution/Client/Compat/Process"
201+ "Distribution/Client/Compat/Semaphore"
202+ "Distribution/Client/Config"
203+ "Distribution/Client/Configure"
204+ "Distribution/Client/Dependency"
205+ "Distribution/Client/Dependency/Types"
206+ "Distribution/Client/DistDirLayout"
207+ "Distribution/Client/Exec"
208+ "Distribution/Client/Fetch"
209+ "Distribution/Client/FetchUtils"
210+ "Distribution/Client/FileMonitor"
211+ "Distribution/Client/Freeze"
212+ "Distribution/Client/GZipUtils"
213+ "Distribution/Client/GenBounds"
214+ "Distribution/Client/Get"
215+ "Distribution/Client/Glob"
216+ "Distribution/Client/GlobalFlags"
217+ "Distribution/Client/Haddock"
218+ "Distribution/Client/HashValue"
219+ "Distribution/Client/HttpUtils"
220+ "Distribution/Client/IndexUtils"
221+ "Distribution/Client/IndexUtils/Timestamp"
222+ "Distribution/Client/Init"
223+ "Distribution/Client/Init/Heuristics"
224+ "Distribution/Client/Init/Licenses"
225+ "Distribution/Client/Init/Types"
226+ "Distribution/Client/Install"
227+ "Distribution/Client/InstallPlan"
228+ "Distribution/Client/InstallSymlink"
229+ "Distribution/Client/JobControl"
230+ "Distribution/Client/List"
231+ "Distribution/Client/Manpage"
232+ "Distribution/Client/Nix"
233+ "Distribution/Client/Outdated"
234+ "Distribution/Client/PackageHash"
235+ "Distribution/Client/PackageUtils"
236+ "Distribution/Client/ParseUtils"
237+ "Distribution/Client/ProjectBuilding"
238+ "Distribution/Client/ProjectBuilding/Types"
239+ "Distribution/Client/ProjectConfig"
240+ "Distribution/Client/ProjectConfig/Legacy"
241+ "Distribution/Client/ProjectConfig/Types"
242+ "Distribution/Client/ProjectOrchestration"
243+ "Distribution/Client/ProjectPlanOutput"
244+ "Distribution/Client/ProjectPlanning"
245+ "Distribution/Client/ProjectPlanning/Types"
246+ "Distribution/Client/RebuildMonad"
247+ "Distribution/Client/Reconfigure"
248+ "Distribution/Client/Run"
249+ "Distribution/Client/Sandbox"
250+ "Distribution/Client/Sandbox/Index"
251+ "Distribution/Client/Sandbox/PackageEnvironment"
252+ "Distribution/Client/Sandbox/Timestamp"
253+ "Distribution/Client/Sandbox/Types"
254+ "Distribution/Client/SavedFlags"
255+ "Distribution/Client/Security/DNS"
256+ "Distribution/Client/Security/HTTP"
257+ "Distribution/Client/Setup"
258+ "Distribution/Client/SetupWrapper"
259+ "Distribution/Client/SolverInstallPlan"
260+ "Distribution/Client/SourceFiles"
261+ "Distribution/Client/SourceRepo"
262+ "Distribution/Client/SrcDist"
263+ "Distribution/Client/Store"
264+ "Distribution/Client/Tar"
265+ "Distribution/Client/TargetSelector"
266+ "Distribution/Client/Targets"
267+ "Distribution/Client/Types"
268+ "Distribution/Client/Update"
269+ "Distribution/Client/Upload"
270+ "Distribution/Client/Utils"
271+ "Distribution/Client/Utils/Assertion"
272+ "Distribution/Client/Utils/Json"
273+ "Distribution/Client/Utils/Parsec"
274+ "Distribution/Client/VCS"
275+ "Distribution/Client/Win32SelfUpgrade"
276+ "Distribution/Client/World"
277+ "Distribution/Solver/Compat/Prelude"
278+ "Distribution/Solver/Modular"
279+ "Distribution/Solver/Modular/Assignment"
280+ "Distribution/Solver/Modular/Builder"
281+ "Distribution/Solver/Modular/Configured"
282+ "Distribution/Solver/Modular/ConfiguredConversion"
283+ "Distribution/Solver/Modular/ConflictSet"
284+ "Distribution/Solver/Modular/Cycles"
285+ "Distribution/Solver/Modular/Dependency"
286+ "Distribution/Solver/Modular/Explore"
287+ "Distribution/Solver/Modular/Flag"
288+ "Distribution/Solver/Modular/Index"
289+ "Distribution/Solver/Modular/IndexConversion"
290+ "Distribution/Solver/Modular/LabeledGraph"
291+ "Distribution/Solver/Modular/Linking"
292+ "Distribution/Solver/Modular/Log"
293+ "Distribution/Solver/Modular/Message"
294+ "Distribution/Solver/Modular/PSQ"
295+ "Distribution/Solver/Modular/Package"
296+ "Distribution/Solver/Modular/Preference"
297+ "Distribution/Solver/Modular/RetryLog"
298+ "Distribution/Solver/Modular/Solver"
299+ "Distribution/Solver/Modular/Tree"
300+ "Distribution/Solver/Modular/Validate"
301+ "Distribution/Solver/Modular/Var"
302+ "Distribution/Solver/Modular/Version"
303+ "Distribution/Solver/Modular/WeightedPSQ"
304+ "Distribution/Solver/Types/ComponentDeps"
305+ "Distribution/Solver/Types/ConstraintSource"
306+ "Distribution/Solver/Types/DependencyResolver"
307+ "Distribution/Solver/Types/Flag"
308+ "Distribution/Solver/Types/InstSolverPackage"
309+ "Distribution/Solver/Types/InstalledPreference"
310+ "Distribution/Solver/Types/LabeledPackageConstraint"
311+ "Distribution/Solver/Types/OptionalStanza"
312+ "Distribution/Solver/Types/PackageConstraint"
313+ "Distribution/Solver/Types/PackageFixedDeps"
314+ "Distribution/Solver/Types/PackageIndex"
315+ "Distribution/Solver/Types/PackagePath"
316+ "Distribution/Solver/Types/PackagePreferences"
317+ "Distribution/Solver/Types/PkgConfigDb"
318+ "Distribution/Solver/Types/Progress"
319+ "Distribution/Solver/Types/ResolverPackage"
320+ "Distribution/Solver/Types/Settings"
321+ "Distribution/Solver/Types/SolverId"
322+ "Distribution/Solver/Types/SolverPackage"
323+ "Distribution/Solver/Types/SourcePackage"
324+ "Distribution/Solver/Types/Variable"
325+ "Paths_cabal_install"
326+ ];
327+ hsSourceDirs = [ "main" "." ];
328+ mainPath = (((((((([
329+ "Main.hs"
330+ ] ++ (pkgs.lib).optionals (compiler.isGhc && (compiler.version).ge "8.0") ([
331+ ""
332+ ] ++ (pkgs.lib).optional (compiler.isGhc && (compiler.version).lt "8.8") "")) ++ (pkgs.lib).optional (system.isAix) "") ++ (pkgs.lib).optional (!(compiler.isGhc && (compiler.version).ge "8.0")) "") ++ (pkgs.lib).optionals (flags.native-dns) ([
333+ ""
334+ ] ++ [ "" ])) ++ [ "" ]) ++ [
335+ ""
336+ ]) ++ (pkgs.lib).optional (flags.debug-expensive-assertions) "") ++ (pkgs.lib).optional (flags.debug-conflict-sets) "") ++ (pkgs.lib).optional (flags.debug-tracetree) "";
337+ };
338+ };
339+ };
340+ } // rec { src = (pkgs.lib).mkDefault ../.; }
materialized/ghc8102-experimental/cabal-install/default.nixnew file+122
@@ -0,0 +1,122 @@
1+{
2+ pkgs = hackage:
3+ {
4+ packages = {
5+ "cryptohash-sha256".revision = (((hackage."cryptohash-sha256")."0.11.101.0").revisions).default;
6+ "cryptohash-sha256".flags.exe = false;
7+ "binary".revision = (((hackage."binary")."0.8.8.0").revisions).default;
8+ "tar".revision = (((hackage."tar")."0.5.1.1").revisions).default;
9+ "tar".flags.old-time = false;
10+ "tar".flags.old-bytestring = false;
11+ "ghc-prim".revision = (((hackage."ghc-prim")."0.6.1").revisions).default;
12+ "edit-distance".revision = (((hackage."edit-distance")."0.2.2.1").revisions).default;
13+ "stm".revision = (((hackage."stm")."2.5.0.0").revisions).default;
14+ "unix".revision = (((hackage."unix")."2.7.2.2").revisions).default;
15+ "mtl".revision = (((hackage."mtl")."2.2.2").revisions).default;
16+ "network-uri".revision = (((hackage."network-uri")."2.6.3.0").revisions).default;
17+ "zlib".revision = (((hackage."zlib")."0.6.2.1").revisions).default;
18+ "zlib".flags.non-blocking-ffi = false;
19+ "zlib".flags.pkg-config = false;
20+ "rts".revision = (((hackage."rts")."1.0").revisions).default;
21+ "deepseq".revision = (((hackage."deepseq")."1.4.4.0").revisions).default;
22+ "random".revision = (((hackage."random")."1.1").revisions).default;
23+ "network".revision = (((hackage."network")."3.1.1.1").revisions).default;
24+ "async".revision = (((hackage."async")."2.2.2").revisions).default;
25+ "async".flags.bench = false;
26+ "parsec".revision = (((hackage."parsec")."3.1.14.0").revisions).default;
27+ "echo".revision = (((hackage."echo")."0.1.3").revisions).default;
28+ "echo".flags.example = false;
29+ "hsc2hs".revision = (((hackage."hsc2hs")."0.68.7").revisions).default;
30+ "hsc2hs".flags.in-ghc-tree = false;
31+ "resolv".revision = (((hackage."resolv")."0.1.2.0").revisions).default;
32+ "directory".revision = (((hackage."directory")."1.3.6.0").revisions).default;
33+ "template-haskell".revision = (((hackage."template-haskell")."2.16.0.0").revisions).default;
34+ "containers".revision = (((hackage."containers")."0.6.2.1").revisions).default;
35+ "bytestring".revision = (((hackage."bytestring")."0.10.10.0").revisions).default;
36+ "text".revision = (((hackage."text")."1.2.3.2").revisions).default;
37+ "Cabal".revision = (((hackage."Cabal")."3.2.0.0").revisions).default;
38+ "base64-bytestring".revision = (((hackage."base64-bytestring")."1.0.0.3").revisions).default;
39+ "base".revision = (((hackage."base")."4.14.1.0").revisions).default;
40+ "time".revision = (((hackage."time")."1.9.3").revisions).default;
41+ "base16-bytestring".revision = (((hackage."base16-bytestring")."0.1.1.6").revisions).default;
42+ "transformers".revision = (((hackage."transformers")."0.5.6.2").revisions).default;
43+ "hashable".revision = (((hackage."hashable")."1.3.0.0").revisions).default;
44+ "hashable".flags.sse2 = true;
45+ "hashable".flags.integer-gmp = true;
46+ "hashable".flags.sse41 = false;
47+ "hashable".flags.examples = false;
48+ "HTTP".revision = (((hackage."HTTP")."4000.3.14").revisions).default;
49+ "HTTP".flags.mtl1 = false;
50+ "HTTP".flags.conduit10 = false;
51+ "HTTP".flags.warn-as-error = false;
52+ "HTTP".flags.warp-tests = false;
53+ "HTTP".flags.network-uri = true;
54+ "filepath".revision = (((hackage."filepath")."1.4.2.1").revisions).default;
55+ "ed25519".revision = (((hackage."ed25519")."0.0.5.0").revisions).default;
56+ "ed25519".flags.test-hlint = true;
57+ "ed25519".flags.test-properties = true;
58+ "ed25519".flags.test-doctests = true;
59+ "ed25519".flags.no-donna = true;
60+ "process".revision = (((hackage."process")."1.6.9.0").revisions).default;
61+ "pretty".revision = (((hackage."pretty")."1.1.3.6").revisions).default;
62+ "lukko".revision = (((hackage."lukko")."0.1.1.2").revisions).default;
63+ "lukko".flags.ofd-locking = true;
64+ "ghc-boot-th".revision = (((hackage."ghc-boot-th")."8.10.2").revisions).default;
65+ "array".revision = (((hackage."array")."0.5.4.0").revisions).default;
66+ "hackage-security".revision = (((hackage."hackage-security")."0.6.0.1").revisions).default;
67+ "hackage-security".flags.old-directory = false;
68+ "hackage-security".flags.use-network-uri = true;
69+ "hackage-security".flags.base48 = true;
70+ "hackage-security".flags.lukko = true;
71+ "hackage-security".flags.mtl21 = false;
72+ "integer-gmp".revision = (((hackage."integer-gmp")."1.0.3.0").revisions).default;
73+ };
74+ compiler = {
75+ version = "8.10.2";
76+ nix-name = "ghc8102";
77+ packages = {
78+ "binary" = "0.8.8.0";
79+ "ghc-prim" = "0.6.1";
80+ "stm" = "2.5.0.0";
81+ "unix" = "2.7.2.2";
82+ "mtl" = "2.2.2";
83+ "rts" = "1.0";
84+ "deepseq" = "1.4.4.0";
85+ "parsec" = "3.1.14.0";
86+ "directory" = "1.3.6.0";
87+ "template-haskell" = "2.16.0.0";
88+ "containers" = "0.6.2.1";
89+ "bytestring" = "0.10.10.0";
90+ "text" = "1.2.3.2";
91+ "Cabal" = "3.2.0.0";
92+ "base" = "4.14.1.0";
93+ "time" = "1.9.3";
94+ "transformers" = "0.5.6.2";
95+ "filepath" = "1.4.2.1";
96+ "process" = "1.6.9.0";
97+ "pretty" = "1.1.3.6";
98+ "ghc-boot-th" = "8.10.2";
99+ "array" = "0.5.4.0";
100+ "integer-gmp" = "1.0.3.0";
101+ };
102+ };
103+ };
104+ extras = hackage:
105+ { packages = { cabal-install = ./.plan.nix/cabal-install.nix; }; };
106+ modules = [
107+ ({ lib, ... }:
108+ {
109+ packages = {
110+ "cabal-install" = {
111+ flags = {
112+ "native-dns" = lib.mkOverride 900 true;
113+ "debug-expensive-assertions" = lib.mkOverride 900 false;
114+ "debug-tracetree" = lib.mkOverride 900 false;
115+ "lukko" = lib.mkOverride 900 true;
116+ "debug-conflict-sets" = lib.mkOverride 900 false;
117+ };
118+ };
119+ };
120+ })
121+ ];
122+ }
materialized/ghc8102-experimental/nix-tools/.plan.nix/hackage-db.nixnew file+100
@@ -0,0 +1,100 @@
1+{ system
2+ , compiler
3+ , flags
4+ , pkgs
5+ , hsPkgs
6+ , pkgconfPkgs
7+ , errorHandler
8+ , config
9+ , ... }:
10+ {
11+ flags = { install-examples = false; };
12+ package = {
13+ specVersion = "1.10";
14+ identifier = { name = "hackage-db"; version = "2.1.0"; };
15+ license = "BSD-3-Clause";
16+ copyright = "";
17+ maintainer = "Peter Simons <simons@cryp.to>";
18+ author = "Peter Simons, Alexander Altman, Ben James";
19+ homepage = "https://github.com/peti/hackage-db#readme";
20+ url = "";
21+ synopsis = "Access cabal-install's Hackage database via Data.Map";
22+ description = "This library provides convenient access to the local copy of the Hackage\ndatabase that \\\"cabal update\\\" creates. Check out\n<https://github.com/peti/hackage-db/tree/master/example/> for a collection\nof simple example programs that demonstrate how to use this code.";
23+ buildType = "Simple";
24+ isLocal = true;
25+ detailLevel = "FullDetails";
26+ licenseFiles = [ "LICENSE" ];
27+ dataDir = "";
28+ dataFiles = [];
29+ extraSrcFiles = [];
30+ extraTmpFiles = [];
31+ extraDocFiles = [];
32+ };
33+ components = {
34+ "library" = {
35+ depends = [
36+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
37+ (hsPkgs."Cabal" or (errorHandler.buildDepError "Cabal"))
38+ (hsPkgs."aeson" or (errorHandler.buildDepError "aeson"))
39+ (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring"))
40+ (hsPkgs."containers" or (errorHandler.buildDepError "containers"))
41+ (hsPkgs."directory" or (errorHandler.buildDepError "directory"))
42+ (hsPkgs."exceptions" or (errorHandler.buildDepError "exceptions"))
43+ (hsPkgs."filepath" or (errorHandler.buildDepError "filepath"))
44+ (hsPkgs."tar" or (errorHandler.buildDepError "tar"))
45+ (hsPkgs."time" or (errorHandler.buildDepError "time"))
46+ (hsPkgs."utf8-string" or (errorHandler.buildDepError "utf8-string"))
47+ ];
48+ buildable = true;
49+ modules = [
50+ "Paths_hackage_db"
51+ "Distribution/Hackage/DB"
52+ "Distribution/Hackage/DB/Builder"
53+ "Distribution/Hackage/DB/Errors"
54+ "Distribution/Hackage/DB/MetaData"
55+ "Distribution/Hackage/DB/Parsed"
56+ "Distribution/Hackage/DB/Path"
57+ "Distribution/Hackage/DB/Unparsed"
58+ "Distribution/Hackage/DB/Utility"
59+ ];
60+ hsSourceDirs = [ "src" ];
61+ };
62+ exes = {
63+ "list-known-versions" = {
64+ depends = (pkgs.lib).optionals (flags.install-examples) [
65+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
66+ (hsPkgs."Cabal" or (errorHandler.buildDepError "Cabal"))
67+ (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring"))
68+ (hsPkgs."containers" or (errorHandler.buildDepError "containers"))
69+ (hsPkgs."hackage-db" or (errorHandler.buildDepError "hackage-db"))
70+ ];
71+ buildable = if flags.install-examples then true else false;
72+ hsSourceDirs = [ "example" ];
73+ mainPath = [ "list-known-versions.hs" ] ++ [ "" ];
74+ };
75+ "show-meta-data" = {
76+ depends = (pkgs.lib).optionals (flags.install-examples) [
77+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
78+ (hsPkgs."Cabal" or (errorHandler.buildDepError "Cabal"))
79+ (hsPkgs."containers" or (errorHandler.buildDepError "containers"))
80+ (hsPkgs."hackage-db" or (errorHandler.buildDepError "hackage-db"))
81+ (hsPkgs."utf8-string" or (errorHandler.buildDepError "utf8-string"))
82+ ];
83+ buildable = if flags.install-examples then true else false;
84+ hsSourceDirs = [ "example" ];
85+ mainPath = [ "show-meta-data.hs" ] ++ [ "" ];
86+ };
87+ "show-package-versions" = {
88+ depends = (pkgs.lib).optionals (flags.install-examples) [
89+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
90+ (hsPkgs."Cabal" or (errorHandler.buildDepError "Cabal"))
91+ (hsPkgs."containers" or (errorHandler.buildDepError "containers"))
92+ (hsPkgs."hackage-db" or (errorHandler.buildDepError "hackage-db"))
93+ ];
94+ buildable = if flags.install-examples then true else false;
95+ hsSourceDirs = [ "example" ];
96+ mainPath = [ "show-package-versions.hs" ] ++ [ "" ];
97+ };
98+ };
99+ };
100+ } // rec { src = (pkgs.lib).mkDefault .././.source-repository-packages/0; }
materialized/ghc8102-experimental/nix-tools/.plan.nix/nix-tools.nixnew file+233
@@ -0,0 +1,233 @@
1+{ system
2+ , compiler
3+ , flags
4+ , pkgs
5+ , hsPkgs
6+ , pkgconfPkgs
7+ , errorHandler
8+ , config
9+ , ... }:
10+ {
11+ flags = {};
12+ package = {
13+ specVersion = "1.10";
14+ identifier = { name = "nix-tools"; version = "0.1.0.0"; };
15+ license = "BSD-3-Clause";
16+ copyright = "";
17+ maintainer = "moritz.angermann@gmail.com";
18+ author = "Moritz Angermann";
19+ homepage = "";
20+ url = "";
21+ synopsis = "cabal/stack to nix translation tools";
22+ description = "A set of tools to aid in trating stack and cabal projects into nix expressions.";
23+ buildType = "Simple";
24+ isLocal = true;
25+ detailLevel = "FullDetails";
26+ licenseFiles = [ "LICENSE" ];
27+ dataDir = "";
28+ dataFiles = [];
29+ extraSrcFiles = [ "ChangeLog.md" ];
30+ extraTmpFiles = [];
31+ extraDocFiles = [];
32+ };
33+ components = {
34+ "library" = {
35+ depends = [
36+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
37+ (hsPkgs."Cabal" or (errorHandler.buildDepError "Cabal"))
38+ (hsPkgs."aeson" or (errorHandler.buildDepError "aeson"))
39+ (hsPkgs."aeson-pretty" or (errorHandler.buildDepError "aeson-pretty"))
40+ (hsPkgs."base16-bytestring" or (errorHandler.buildDepError "base16-bytestring"))
41+ (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring"))
42+ (hsPkgs."cryptohash-sha256" or (errorHandler.buildDepError "cryptohash-sha256"))
43+ (hsPkgs."containers" or (errorHandler.buildDepError "containers"))
44+ (hsPkgs."data-fix" or (errorHandler.buildDepError "data-fix"))
45+ (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq"))
46+ (hsPkgs."directory" or (errorHandler.buildDepError "directory"))
47+ (hsPkgs."extra" or (errorHandler.buildDepError "extra"))
48+ (hsPkgs."filepath" or (errorHandler.buildDepError "filepath"))
49+ (hsPkgs."hnix" or (errorHandler.buildDepError "hnix"))
50+ (hsPkgs."hpack" or (errorHandler.buildDepError "hpack"))
51+ (hsPkgs."http-client" or (errorHandler.buildDepError "http-client"))
52+ (hsPkgs."http-client-tls" or (errorHandler.buildDepError "http-client-tls"))
53+ (hsPkgs."http-types" or (errorHandler.buildDepError "http-types"))
54+ (hsPkgs."optparse-applicative" or (errorHandler.buildDepError "optparse-applicative"))
55+ (hsPkgs."prettyprinter" or (errorHandler.buildDepError "prettyprinter"))
56+ (hsPkgs."process" or (errorHandler.buildDepError "process"))
57+ (hsPkgs."text" or (errorHandler.buildDepError "text"))
58+ (hsPkgs."transformers" or (errorHandler.buildDepError "transformers"))
59+ (hsPkgs."unordered-containers" or (errorHandler.buildDepError "unordered-containers"))
60+ (hsPkgs."yaml" or (errorHandler.buildDepError "yaml"))
61+ ];
62+ buildable = true;
63+ modules = [
64+ "Cabal2Nix"
65+ "Cabal2Nix/Util"
66+ "Cabal2Nix/Plan"
67+ "CabalName"
68+ "CabalName/CLI"
69+ "Distribution/Nixpkgs/Fetch"
70+ "StackRepos"
71+ "StackRepos/CLI"
72+ "Stack2nix"
73+ "Stack2nix/Cache"
74+ "Stack2nix/CLI"
75+ "Stack2nix/External/Resolve"
76+ "Stack2nix/Project"
77+ "Stack2nix/Stack"
78+ ];
79+ hsSourceDirs = [ "lib" ];
80+ };
81+ exes = {
82+ "cabal-to-nix" = {
83+ depends = [
84+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
85+ (hsPkgs."transformers" or (errorHandler.buildDepError "transformers"))
86+ (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring"))
87+ (hsPkgs."hpack" or (errorHandler.buildDepError "hpack"))
88+ (hsPkgs."hnix" or (errorHandler.buildDepError "hnix"))
89+ (hsPkgs."text" or (errorHandler.buildDepError "text"))
90+ (hsPkgs."nix-tools" or (errorHandler.buildDepError "nix-tools"))
91+ (hsPkgs."filepath" or (errorHandler.buildDepError "filepath"))
92+ (hsPkgs."directory" or (errorHandler.buildDepError "directory"))
93+ (hsPkgs."prettyprinter" or (errorHandler.buildDepError "prettyprinter"))
94+ ];
95+ buildable = true;
96+ hsSourceDirs = [ "cabal2nix" ];
97+ mainPath = [ "Main.hs" ];
98+ };
99+ "hashes-to-nix" = {
100+ depends = [
101+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
102+ (hsPkgs."hnix" or (errorHandler.buildDepError "hnix"))
103+ (hsPkgs."nix-tools" or (errorHandler.buildDepError "nix-tools"))
104+ (hsPkgs."data-fix" or (errorHandler.buildDepError "data-fix"))
105+ (hsPkgs."aeson" or (errorHandler.buildDepError "aeson"))
106+ (hsPkgs."microlens" or (errorHandler.buildDepError "microlens"))
107+ (hsPkgs."microlens-aeson" or (errorHandler.buildDepError "microlens-aeson"))
108+ (hsPkgs."text" or (errorHandler.buildDepError "text"))
109+ (hsPkgs."filepath" or (errorHandler.buildDepError "filepath"))
110+ (hsPkgs."directory" or (errorHandler.buildDepError "directory"))
111+ ];
112+ buildable = true;
113+ hsSourceDirs = [ "hashes2nix" ];
114+ mainPath = [ "Main.hs" ];
115+ };
116+ "plan-to-nix" = {
117+ depends = [
118+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
119+ (hsPkgs."nix-tools" or (errorHandler.buildDepError "nix-tools"))
120+ (hsPkgs."hnix" or (errorHandler.buildDepError "hnix"))
121+ (hsPkgs."Cabal" or (errorHandler.buildDepError "Cabal"))
122+ (hsPkgs."text" or (errorHandler.buildDepError "text"))
123+ (hsPkgs."hpack" or (errorHandler.buildDepError "hpack"))
124+ (hsPkgs."unordered-containers" or (errorHandler.buildDepError "unordered-containers"))
125+ (hsPkgs."vector" or (errorHandler.buildDepError "vector"))
126+ (hsPkgs."aeson" or (errorHandler.buildDepError "aeson"))
127+ (hsPkgs."microlens" or (errorHandler.buildDepError "microlens"))
128+ (hsPkgs."microlens-aeson" or (errorHandler.buildDepError "microlens-aeson"))
129+ (hsPkgs."optparse-applicative" or (errorHandler.buildDepError "optparse-applicative"))
130+ (hsPkgs."prettyprinter" or (errorHandler.buildDepError "prettyprinter"))
131+ (hsPkgs."filepath" or (errorHandler.buildDepError "filepath"))
132+ (hsPkgs."directory" or (errorHandler.buildDepError "directory"))
133+ (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring"))
134+ (hsPkgs."transformers" or (errorHandler.buildDepError "transformers"))
135+ (hsPkgs."extra" or (errorHandler.buildDepError "extra"))
136+ ];
137+ buildable = true;
138+ modules = [
139+ "Plan2Nix"
140+ "Plan2Nix/Cache"
141+ "Plan2Nix/CLI"
142+ "Plan2Nix/Project"
143+ "Plan2Nix/Plan"
144+ ];
145+ hsSourceDirs = [ "plan2nix" ];
146+ mainPath = [ "Main.hs" ];
147+ };
148+ "hackage-to-nix" = {
149+ depends = [
150+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
151+ (hsPkgs."nix-tools" or (errorHandler.buildDepError "nix-tools"))
152+ (hsPkgs."hackage-db" or (errorHandler.buildDepError "hackage-db"))
153+ (hsPkgs."hnix" or (errorHandler.buildDepError "hnix"))
154+ (hsPkgs."Cabal" or (errorHandler.buildDepError "Cabal"))
155+ (hsPkgs."aeson" or (errorHandler.buildDepError "aeson"))
156+ (hsPkgs."aeson-pretty" or (errorHandler.buildDepError "aeson-pretty"))
157+ (hsPkgs."containers" or (errorHandler.buildDepError "containers"))
158+ (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring"))
159+ (hsPkgs."text" or (errorHandler.buildDepError "text"))
160+ (hsPkgs."cryptohash-sha256" or (errorHandler.buildDepError "cryptohash-sha256"))
161+ (hsPkgs."base16-bytestring" or (errorHandler.buildDepError "base16-bytestring"))
162+ (hsPkgs."base64-bytestring" or (errorHandler.buildDepError "base64-bytestring"))
163+ (hsPkgs."filepath" or (errorHandler.buildDepError "filepath"))
164+ (hsPkgs."directory" or (errorHandler.buildDepError "directory"))
165+ (hsPkgs."transformers" or (errorHandler.buildDepError "transformers"))
166+ ];
167+ buildable = true;
168+ hsSourceDirs = [ "hackage2nix" ];
169+ mainPath = [ "Main.hs" ];
170+ };
171+ "lts-to-nix" = {
172+ depends = [
173+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
174+ (hsPkgs."nix-tools" or (errorHandler.buildDepError "nix-tools"))
175+ (hsPkgs."hnix" or (errorHandler.buildDepError "hnix"))
176+ (hsPkgs."yaml" or (errorHandler.buildDepError "yaml"))
177+ (hsPkgs."aeson" or (errorHandler.buildDepError "aeson"))
178+ (hsPkgs."microlens" or (errorHandler.buildDepError "microlens"))
179+ (hsPkgs."microlens-aeson" or (errorHandler.buildDepError "microlens-aeson"))
180+ (hsPkgs."text" or (errorHandler.buildDepError "text"))
181+ (hsPkgs."filepath" or (errorHandler.buildDepError "filepath"))
182+ (hsPkgs."directory" or (errorHandler.buildDepError "directory"))
183+ (hsPkgs."unordered-containers" or (errorHandler.buildDepError "unordered-containers"))
184+ (hsPkgs."vector" or (errorHandler.buildDepError "vector"))
185+ (hsPkgs."Cabal" or (errorHandler.buildDepError "Cabal"))
186+ ];
187+ buildable = true;
188+ hsSourceDirs = [ "lts2nix" ];
189+ mainPath = [ "Main.hs" ];
190+ };
191+ "stack-to-nix" = {
192+ depends = [
193+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
194+ (hsPkgs."nix-tools" or (errorHandler.buildDepError "nix-tools"))
195+ ];
196+ buildable = true;
197+ hsSourceDirs = [ "stack2nix" ];
198+ mainPath = [ "Main.hs" ];
199+ };
200+ "truncate-index" = {
201+ depends = [
202+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
203+ (hsPkgs."optparse-applicative" or (errorHandler.buildDepError "optparse-applicative"))
204+ (hsPkgs."zlib" or (errorHandler.buildDepError "zlib"))
205+ (hsPkgs."tar" or (errorHandler.buildDepError "tar"))
206+ (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring"))
207+ (hsPkgs."time" or (errorHandler.buildDepError "time"))
208+ ];
209+ buildable = true;
210+ hsSourceDirs = [ "truncate-index" ];
211+ mainPath = [ "Main.hs" ];
212+ };
213+ "stack-repos" = {
214+ depends = [
215+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
216+ (hsPkgs."nix-tools" or (errorHandler.buildDepError "nix-tools"))
217+ ];
218+ buildable = true;
219+ hsSourceDirs = [ "stack-repos" ];
220+ mainPath = [ "Main.hs" ];
221+ };
222+ "cabal-name" = {
223+ depends = [
224+ (hsPkgs."base" or (errorHandler.buildDepError "base"))
225+ (hsPkgs."nix-tools" or (errorHandler.buildDepError "nix-tools"))
226+ ];
227+ buildable = true;
228+ hsSourceDirs = [ "cabal-name" ];
229+ mainPath = [ "Main.hs" ];
230+ };
231+ };
232+ };
233+ } // rec { src = (pkgs.lib).mkDefault ../.; }
materialized/ghc8102-experimental/nix-tools/default.nixnew file+355
@@ -0,0 +1,355 @@
1+{
2+ pkgs = hackage:
3+ {
4+ packages = {
5+ "http-client".revision = (((hackage."http-client")."0.7.0").revisions).default;
6+ "http-client".flags.network-uri = true;
7+ "cookie".revision = (((hackage."cookie")."0.4.5").revisions).default;
8+ "void".revision = (((hackage."void")."0.7.3").revisions).default;
9+ "void".flags.safe = false;
10+ "semigroupoids".revision = (((hackage."semigroupoids")."5.3.4").revisions).default;
11+ "semigroupoids".flags.comonad = true;
12+ "semigroupoids".flags.doctests = true;
13+ "semigroupoids".flags.unordered-containers = true;
14+ "semigroupoids".flags.distributive = true;
15+ "semigroupoids".flags.tagged = true;
16+ "semigroupoids".flags.containers = true;
17+ "semigroupoids".flags.contravariant = true;
18+ "free".revision = (((hackage."free")."5.1.3").revisions).default;
19+ "cereal".revision = (((hackage."cereal")."0.5.8.1").revisions).default;
20+ "cereal".flags.bytestring-builder = false;
21+ "exceptions".revision = (((hackage."exceptions")."0.10.4").revisions).default;
22+ "cryptohash-sha256".revision = (((hackage."cryptohash-sha256")."0.11.101.0").revisions).default;
23+ "cryptohash-sha256".flags.exe = false;
24+ "binary".revision = (((hackage."binary")."0.8.8.0").revisions).default;
25+ "interpolate".revision = (((hackage."interpolate")."0.2.0").revisions).default;
26+ "hnix".revision = (((hackage."hnix")."0.8.0").revisions).default;
27+ "hnix".flags.profiling = false;
28+ "hnix".flags.optimize = false;
29+ "tar".revision = (((hackage."tar")."0.5.1.1").revisions).default;
30+ "tar".flags.old-time = false;
31+ "tar".flags.old-bytestring = false;
32+ "regex-tdfa".revision = (((hackage."regex-tdfa")."1.3.1.0").revisions).default;
33+ "regex-tdfa".flags.force-o2 = false;
34+ "ghc-prim".revision = (((hackage."ghc-prim")."0.6.1").revisions).default;
35+ "text-metrics".revision = (((hackage."text-metrics")."0.3.0").revisions).default;
36+ "text-metrics".flags.dev = false;
37+ "utf8-string".revision = (((hackage."utf8-string")."1.0.1.1").revisions).default;
38+ "bifunctors".revision = (((hackage."bifunctors")."5.5.7").revisions).default;
39+ "bifunctors".flags.semigroups = true;
40+ "bifunctors".flags.tagged = true;
41+ "hashing".revision = (((hackage."hashing")."0.1.0.1").revisions).default;
42+ "extra".revision = (((hackage."extra")."1.7.3").revisions).default;
43+ "haskeline".revision = (((hackage."haskeline")."0.7.5.0").revisions).default;
44+ "haskeline".flags.terminfo = true;
45+ "logict".revision = (((hackage."logict")."0.7.0.2").revisions).default;
46+ "x509-validation".revision = (((hackage."x509-validation")."1.6.11").revisions).default;
47+ "split".revision = (((hackage."split")."0.2.3.4").revisions).default;
48+ "data-fix".revision = (((hackage."data-fix")."0.2.1").revisions).default;
49+ "stm".revision = (((hackage."stm")."2.5.0.0").revisions).default;
50+ "base-compat-batteries".revision = (((hackage."base-compat-batteries")."0.11.1").revisions).default;
51+ "hourglass".revision = (((hackage."hourglass")."0.2.12").revisions).default;
52+ "case-insensitive".revision = (((hackage."case-insensitive")."1.2.1.0").revisions).default;
53+ "unix".revision = (((hackage."unix")."2.7.2.2").revisions).default;
54+ "mtl".revision = (((hackage."mtl")."2.2.2").revisions).default;
55+ "network-uri".revision = (((hackage."network-uri")."2.6.3.0").revisions).default;
56+ "asn1-parse".revision = (((hackage."asn1-parse")."0.9.5").revisions).default;
57+ "regex-base".revision = (((hackage."regex-base")."0.94.0.0").revisions).default;
58+ "zlib".revision = (((hackage."zlib")."0.6.2.1").revisions).default;
59+ "zlib".flags.non-blocking-ffi = false;
60+ "zlib".flags.pkg-config = false;
61+ "rts".revision = (((hackage."rts")."1.0").revisions).default;
62+ "cmdargs".revision = (((hackage."cmdargs")."0.10.20").revisions).default;
63+ "cmdargs".flags.testprog = false;
64+ "cmdargs".flags.quotation = true;
65+ "th-expand-syns".revision = (((hackage."th-expand-syns")."0.4.6.0").revisions).default;
66+ "cryptonite".revision = (((hackage."cryptonite")."0.26").revisions).default;
67+ "cryptonite".flags.support_sse = false;
68+ "cryptonite".flags.integer-gmp = true;
69+ "cryptonite".flags.support_rdrand = true;
70+ "cryptonite".flags.support_aesni = true;
71+ "cryptonite".flags.support_deepseq = true;
72+ "cryptonite".flags.support_pclmuldq = false;
73+ "cryptonite".flags.check_alignment = false;
74+ "cryptonite".flags.old_toolchain_inliner = false;
75+ "microlens-aeson".revision = (((hackage."microlens-aeson")."2.3.0.4").revisions).default;
76+ "clock".revision = (((hackage."clock")."0.8").revisions).default;
77+ "clock".flags.llvm = false;
78+ "saltine".revision = (((hackage."saltine")."0.1.1.0").revisions).default;
79+ "adjunctions".revision = (((hackage."adjunctions")."4.4").revisions).default;
80+ "cryptohash-md5".revision = (((hackage."cryptohash-md5")."0.11.100.1").revisions).default;
81+ "invariant".revision = (((hackage."invariant")."0.5.3").revisions).default;
82+ "th-orphans".revision = (((hackage."th-orphans")."0.13.10").revisions).default;
83+ "pem".revision = (((hackage."pem")."0.2.4").revisions).default;
84+ "megaparsec".revision = (((hackage."megaparsec")."8.0.0").revisions).default;
85+ "megaparsec".flags.dev = false;
86+ "syb".revision = (((hackage."syb")."0.7.1").revisions).default;
87+ "distributive".revision = (((hackage."distributive")."0.6.2").revisions).default;
88+ "distributive".flags.semigroups = true;
89+ "distributive".flags.tagged = true;
90+ "asn1-encoding".revision = (((hackage."asn1-encoding")."0.9.6").revisions).default;
91+ "QuickCheck".revision = (((hackage."QuickCheck")."2.14").revisions).default;
92+ "QuickCheck".flags.templatehaskell = true;
93+ "scientific".revision = (((hackage."scientific")."0.3.6.2").revisions).default;
94+ "scientific".flags.integer-simple = false;
95+ "scientific".flags.bytestring-builder = false;
96+ "monadlist".revision = (((hackage."monadlist")."0.0.2").revisions).default;
97+ "half".revision = (((hackage."half")."0.3").revisions).default;
98+ "parallel".revision = (((hackage."parallel")."3.2.2.0").revisions).default;
99+ "deepseq".revision = (((hackage."deepseq")."1.4.4.0").revisions).default;
100+ "hnix-store-core".revision = (((hackage."hnix-store-core")."0.2.0.0").revisions).default;
101+ "hnix-store-core".flags.bounded_memory = false;
102+ "haskell-src-meta".revision = (((hackage."haskell-src-meta")."0.8.5").revisions).default;
103+ "random".revision = (((hackage."random")."1.1").revisions).default;
104+ "uuid-types".revision = (((hackage."uuid-types")."1.0.3").revisions).default;
105+ "optparse-applicative".revision = (((hackage."optparse-applicative")."0.15.1.0").revisions).default;
106+ "network".revision = (((hackage."network")."3.1.1.1").revisions).default;
107+ "connection".revision = (((hackage."connection")."0.3.1").revisions).default;
108+ "splitmix".revision = (((hackage."splitmix")."0.0.5").revisions).default;
109+ "splitmix".flags.optimised-mixer = false;
110+ "splitmix".flags.random = true;
111+ "async".revision = (((hackage."async")."2.2.2").revisions).default;
112+ "async".flags.bench = false;
113+ "dlist".revision = (((hackage."dlist")."0.8.0.8").revisions).default;
114+ "conduit".revision = (((hackage."conduit")."1.3.2").revisions).default;
115+ "ref-tf".revision = (((hackage."ref-tf")."0.4.0.2").revisions).default;
116+ "x509-store".revision = (((hackage."x509-store")."1.6.7").revisions).default;
117+ "lens-family-th".revision = (((hackage."lens-family-th")."0.5.1.0").revisions).default;
118+ "semigroups".revision = (((hackage."semigroups")."0.19.1").revisions).default;
119+ "semigroups".flags.bytestring = true;
120+ "semigroups".flags.unordered-containers = true;
121+ "semigroups".flags.text = true;
122+ "semigroups".flags.tagged = true;
123+ "semigroups".flags.containers = true;
124+ "semigroups".flags.binary = true;
125+ "semigroups".flags.hashable = true;
126+ "semigroups".flags.transformers = true;
127+ "semigroups".flags.deepseq = true;
128+ "semigroups".flags.bytestring-builder = false;
129+ "semigroups".flags.template-haskell = true;
130+ "parsec".revision = (((hackage."parsec")."3.1.14.0").revisions).default;
131+ "th-reify-many".revision = (((hackage."th-reify-many")."0.1.9").revisions).default;
132+ "hsc2hs".revision = (((hackage."hsc2hs")."0.68.7").revisions).default;
133+ "hsc2hs".flags.in-ghc-tree = false;
134+ "directory".revision = (((hackage."directory")."1.3.6.0").revisions).default;
135+ "yaml".revision = (((hackage."yaml")."0.11.4.0").revisions).default;
136+ "yaml".flags.no-exe = true;
137+ "yaml".flags.no-examples = true;
138+ "transformers-compat".revision = (((hackage."transformers-compat")."0.6.5").revisions).default;
139+ "transformers-compat".flags.five = false;
140+ "transformers-compat".flags.generic-deriving = true;
141+ "transformers-compat".flags.two = false;
142+ "transformers-compat".flags.five-three = true;
143+ "transformers-compat".flags.mtl = true;
144+ "transformers-compat".flags.four = false;
145+ "transformers-compat".flags.three = false;
146+ "hpack".revision = (((hackage."hpack")."0.34.1").revisions).default;
147+ "template-haskell".revision = (((hackage."template-haskell")."2.16.0.0").revisions).default;
148+ "mono-traversable".revision = (((hackage."mono-traversable")."1.0.15.1").revisions).default;
149+ "vector".revision = (((hackage."vector")."0.12.1.2").revisions).default;
150+ "vector".flags.unsafechecks = false;
151+ "vector".flags.internalchecks = false;
152+ "vector".flags.wall = false;
153+ "vector".flags.boundschecks = true;
154+ "call-stack".revision = (((hackage."call-stack")."0.2.0").revisions).default;
155+ "primitive".revision = (((hackage."primitive")."0.7.0.1").revisions).default;
156+ "profunctors".revision = (((hackage."profunctors")."5.5.2").revisions).default;
157+ "safe".revision = (((hackage."safe")."0.3.19").revisions).default;
158+ "blaze-builder".revision = (((hackage."blaze-builder")."0.4.1.0").revisions).default;
159+ "base-compat".revision = (((hackage."base-compat")."0.11.1").revisions).default;
160+ "time-compat".revision = (((hackage."time-compat")."1.9.3").revisions).default;
161+ "time-compat".flags.old-locale = false;
162+ "x509-system".revision = (((hackage."x509-system")."1.6.6").revisions).default;
163+ "ansi-terminal".revision = (((hackage."ansi-terminal")."0.10.3").revisions).default;
164+ "ansi-terminal".flags.example = false;
165+ "tagged".revision = (((hackage."tagged")."0.8.6").revisions).default;
166+ "tagged".flags.transformers = true;
167+ "tagged".flags.deepseq = true;
168+ "x509".revision = (((hackage."x509")."1.7.5").revisions).default;
169+ "haskell-src-exts".revision = (((hackage."haskell-src-exts")."1.23.0").revisions).default;
170+ "lens".revision = (((hackage."lens")."4.19.2").revisions).default;
171+ "lens".flags.j = false;
172+ "lens".flags.test-properties = true;
173+ "lens".flags.old-inline-pragmas = false;
174+ "lens".flags.test-templates = true;
175+ "lens".flags.trustworthy = true;
176+ "lens".flags.test-doctests = true;
177+ "lens".flags.benchmark-uniplate = false;
178+ "lens".flags.inlining = true;
179+ "lens".flags.dump-splices = false;
180+ "lens".flags.test-hunit = true;
181+ "lens".flags.safe = false;
182+ "unliftio-core".revision = (((hackage."unliftio-core")."0.2.0.1").revisions).default;
183+ "containers".revision = (((hackage."containers")."0.6.2.1").revisions).default;
184+ "some".revision = (((hackage."some")."1.0.1").revisions).default;
185+ "some".flags.newtype-unsafe = true;
186+ "integer-logarithms".revision = (((hackage."integer-logarithms")."1.0.3").revisions).default;
187+ "integer-logarithms".flags.check-bounds = false;
188+ "integer-logarithms".flags.integer-gmp = true;
189+ "semialign".revision = (((hackage."semialign")."1.1").revisions).default;
190+ "semialign".flags.semigroupoids = true;
191+ "reflection".revision = (((hackage."reflection")."2.1.6").revisions).default;
192+ "reflection".flags.slow = false;
193+ "reflection".flags.template-haskell = true;
194+ "these".revision = (((hackage."these")."1.1").revisions).default;
195+ "these".flags.assoc = true;
196+ "socks".revision = (((hackage."socks")."0.6.1").revisions).default;
197+ "streaming-commons".revision = (((hackage."streaming-commons")."0.2.1.2").revisions).default;
198+ "streaming-commons".flags.use-bytestring-builder = false;
199+ "haskell-lexer".revision = (((hackage."haskell-lexer")."1.1").revisions).default;
200+ "lens-family".revision = (((hackage."lens-family")."2.1.0").revisions).default;
201+ "bytestring".revision = (((hackage."bytestring")."0.10.10.0").revisions).default;
202+ "ansi-wl-pprint".revision = (((hackage."ansi-wl-pprint")."0.6.9").revisions).default;
203+ "ansi-wl-pprint".flags.example = false;
204+ "basement".revision = (((hackage."basement")."0.0.11").revisions).default;
205+ "cryptohash-sha1".revision = (((hackage."cryptohash-sha1")."0.11.100.1").revisions).default;
206+ "serialise".revision = (((hackage."serialise")."0.2.3.0").revisions).default;
207+ "serialise".flags.newtime15 = true;
208+ "StateVar".revision = (((hackage."StateVar")."1.2").revisions).default;
209+ "mime-types".revision = (((hackage."mime-types")."0.1.0.9").revisions).default;
210+ "http-client-tls".revision = (((hackage."http-client-tls")."0.3.5.3").revisions).default;
211+ "contravariant".revision = (((hackage."contravariant")."1.5.2").revisions).default;
212+ "contravariant".flags.semigroups = true;
213+ "contravariant".flags.tagged = true;
214+ "contravariant".flags.statevar = true;
215+ "parser-combinators".revision = (((hackage."parser-combinators")."1.2.1").revisions).default;
216+ "parser-combinators".flags.dev = false;
217+ "semialign-indexed".revision = (((hackage."semialign-indexed")."1.1").revisions).default;
218+ "deriving-compat".revision = (((hackage."deriving-compat")."0.5.8").revisions).default;
219+ "deriving-compat".flags.base-4-9 = true;
220+ "deriving-compat".flags.template-haskell-2-11 = true;
221+ "deriving-compat".flags.new-functor-classes = true;
222+ "text".revision = (((hackage."text")."1.2.3.2").revisions).default;
223+ "Cabal".revision = (((hackage."Cabal")."3.2.0.0").revisions).default;
224+ "assoc".revision = (((hackage."assoc")."1.0.1").revisions).default;
225+ "unordered-containers".revision = (((hackage."unordered-containers")."0.2.10.0").revisions).default;
226+ "unordered-containers".flags.debug = false;
227+ "base64-bytestring".revision = (((hackage."base64-bytestring")."1.1.0.0").revisions).default;
228+ "aeson-pretty".revision = (((hackage."aeson-pretty")."0.8.8").revisions).default;
229+ "aeson-pretty".flags.lib-only = false;
230+ "base".revision = (((hackage."base")."4.14.1.0").revisions).default;
231+ "comonad".revision = (((hackage."comonad")."5.0.6").revisions).default;
232+ "comonad".flags.distributive = true;
233+ "comonad".flags.test-doctests = true;
234+ "comonad".flags.containers = true;
235+ "time".revision = (((hackage."time")."1.9.3").revisions).default;
236+ "data-default-class".revision = (((hackage."data-default-class")."0.1.2.0").revisions).default;
237+ "terminfo".revision = (((hackage."terminfo")."0.4.1.4").revisions).default;
238+ "base16-bytestring".revision = (((hackage."base16-bytestring")."0.1.1.6").revisions).default;
239+ "vector-algorithms".revision = (((hackage."vector-algorithms")."0.8.0.3").revisions).default;
240+ "vector-algorithms".flags.unsafechecks = false;
241+ "vector-algorithms".flags.internalchecks = false;
242+ "vector-algorithms".flags.llvm = false;
243+ "vector-algorithms".flags.boundschecks = true;
244+ "vector-algorithms".flags.bench = true;
245+ "vector-algorithms".flags.properties = true;
246+ "prettyprinter".revision = (((hackage."prettyprinter")."1.6.1").revisions).default;
247+ "prettyprinter".flags.buildreadme = false;
248+ "cryptohash-sha512".revision = (((hackage."cryptohash-sha512")."0.11.100.1").revisions).default;
249+ "pretty-show".revision = (((hackage."pretty-show")."1.10").revisions).default;
250+ "transformers".revision = (((hackage."transformers")."0.5.6.2").revisions).default;
251+ "hashable".revision = (((hackage."hashable")."1.3.0.0").revisions).default;
252+ "hashable".flags.sse2 = true;
253+ "hashable".flags.integer-gmp = true;
254+ "hashable".flags.sse41 = false;
255+ "hashable".flags.examples = false;
256+ "attoparsec".revision = (((hackage."attoparsec")."0.13.2.4").revisions).default;
257+ "attoparsec".flags.developer = false;
258+ "infer-license".revision = (((hackage."infer-license")."0.2.0").revisions).default;
259+ "colour".revision = (((hackage."colour")."2.3.5").revisions).default;
260+ "transformers-base".revision = (((hackage."transformers-base")."0.4.5.2").revisions).default;
261+ "transformers-base".flags.orphaninstances = true;
262+ "happy".revision = (((hackage."happy")."1.19.12").revisions).default;
263+ "happy".flags.small_base = true;
264+ "filepath".revision = (((hackage."filepath")."1.4.2.1").revisions).default;
265+ "asn1-types".revision = (((hackage."asn1-types")."0.3.4").revisions).default;
266+ "cborg".revision = (((hackage."cborg")."0.2.3.0").revisions).default;
267+ "cborg".flags.optimize-gmp = true;
268+ "monad-control".revision = (((hackage."monad-control")."1.0.2.3").revisions).default;
269+ "process".revision = (((hackage."process")."1.6.9.0").revisions).default;
270+ "tls".revision = (((hackage."tls")."1.5.4").revisions).default;
271+ "tls".flags.compat = true;
272+ "tls".flags.network = true;
273+ "tls".flags.hans = false;
274+ "kan-extensions".revision = (((hackage."kan-extensions")."5.2").revisions).default;
275+ "th-lift".revision = (((hackage."th-lift")."0.8.1").revisions).default;
276+ "libyaml".revision = (((hackage."libyaml")."0.1.2").revisions).default;
277+ "libyaml".flags.system-libyaml = false;
278+ "libyaml".flags.no-unicode = false;
279+ "resourcet".revision = (((hackage."resourcet")."1.2.4").revisions).default;
280+ "pretty".revision = (((hackage."pretty")."1.1.3.6").revisions).default;
281+ "cabal-doctest".revision = (((hackage."cabal-doctest")."1.0.8").revisions).default;
282+ "Glob".revision = (((hackage."Glob")."0.10.0").revisions).default;
283+ "microlens".revision = (((hackage."microlens")."0.4.11.2").revisions).default;
284+ "aeson".revision = (((hackage."aeson")."1.5.1.0").revisions).default;
285+ "aeson".flags.cffi = false;
286+ "aeson".flags.fast = false;
287+ "aeson".flags.bytestring-builder = false;
288+ "aeson".flags.developer = false;
289+ "http-types".revision = (((hackage."http-types")."0.12.3").revisions).default;
290+ "ghc-boot-th".revision = (((hackage."ghc-boot-th")."8.10.2").revisions).default;
291+ "th-lift-instances".revision = (((hackage."th-lift-instances")."0.1.16").revisions).default;
292+ "base-orphans".revision = (((hackage."base-orphans")."0.8.2").revisions).default;
293+ "th-abstraction".revision = (((hackage."th-abstraction")."0.3.2.0").revisions).default;
294+ "memory".revision = (((hackage."memory")."0.15.0").revisions).default;
295+ "memory".flags.support_bytestring = true;
296+ "memory".flags.support_basement = true;
297+ "memory".flags.support_foundation = true;
298+ "memory".flags.support_deepseq = true;
299+ "array".revision = (((hackage."array")."0.5.4.0").revisions).default;
300+ "repline".revision = (((hackage."repline")."0.2.2.0").revisions).default;
301+ "xml".revision = (((hackage."xml")."1.3.14").revisions).default;
302+ "lens-family-core".revision = (((hackage."lens-family-core")."2.1.0").revisions).default;
303+ "integer-gmp".revision = (((hackage."integer-gmp")."1.0.3.0").revisions).default;
304+ };
305+ compiler = {
306+ version = "8.10.2";
307+ nix-name = "ghc8102";
308+ packages = {
309+ "exceptions" = "0.10.4";
310+ "binary" = "0.8.8.0";
311+ "ghc-prim" = "0.6.1";
312+ "stm" = "2.5.0.0";
313+ "unix" = "2.7.2.2";
314+ "mtl" = "2.2.2";
315+ "rts" = "1.0";
316+ "deepseq" = "1.4.4.0";
317+ "parsec" = "3.1.14.0";
318+ "directory" = "1.3.6.0";
319+ "template-haskell" = "2.16.0.0";
320+ "containers" = "0.6.2.1";
321+ "bytestring" = "0.10.10.0";
322+ "text" = "1.2.3.2";
323+ "Cabal" = "3.2.0.0";
324+ "base" = "4.14.1.0";
325+ "time" = "1.9.3";
326+ "terminfo" = "0.4.1.4";
327+ "transformers" = "0.5.6.2";
328+ "filepath" = "1.4.2.1";
329+ "process" = "1.6.9.0";
330+ "pretty" = "1.1.3.6";
331+ "ghc-boot-th" = "8.10.2";
332+ "array" = "0.5.4.0";
333+ "integer-gmp" = "1.0.3.0";
334+ };
335+ };
336+ };
337+ extras = hackage:
338+ {
339+ packages = {
340+ nix-tools = ./.plan.nix/nix-tools.nix;
341+ hackage-db = ./.plan.nix/hackage-db.nix;
342+ };
343+ };
344+ modules = [
345+ ({ lib, ... }:
346+ {
347+ packages = {
348+ "nix-tools" = { flags = {}; };
349+ "hackage-db" = {
350+ flags = { "install-examples" = lib.mkOverride 900 false; };
351+ };
352+ };
353+ })
354+ ];
355+ }
overlays/bootstrap.nix+21
@@ -371,6 +371,27 @@ in {
371
371
372 ghc-patches = ghc-patches "8.10.2";
372 ghc-patches = ghc-patches "8.10.2";
373 };
373 };
374+ # ghc 8.10.2 with patches needed by plutus
375+ ghc8102-experimental = final.callPackage ../compiler/ghc {
376+ extra-passthru = { buildGHC = final.buildPackages.haskell-nix.compiler.ghc8102-experimental; };
377+
378+ bootPkgs = bootPkgs // {
379+ ghc = final.buildPackages.buildPackages.haskell-nix.compiler.ghc884;
380+ };
381+ inherit sphinx installDeps;
382+
383+ buildLlvmPackages = final.buildPackages.llvmPackages_9;
384+ llvmPackages = final.llvmPackages_9;
385+
386+ src-spec = rec {
387+ version = "8.10.2";
388+ url = "https://downloads.haskell.org/~ghc/${version}/ghc-${version}-src.tar.xz";
389+ sha256 = "02w8n085bw38vyp694j0lfk5wcnwkdaj7hhp0saj71x74533lmww";
390+ };
391+
392+ ghc-patches = ghc-patches "8.10.2"
393+ ++ [ ./patches/ghc/core-field.patch ];
394+ };
374 } // final.lib.optionalAttrs (final.targetPlatform.isGhcjs or false)
395 } // final.lib.optionalAttrs (final.targetPlatform.isGhcjs or false)
375 # This will inject `exactDeps` and `envDeps` into the ghcjs
396 # This will inject `exactDeps` and `envDeps` into the ghcjs
376 # compiler defined below. This is crucial to build packages
397 # compiler defined below. This is crucial to build packages
overlays/ghc-packages.nix+1−1
@@ -129,7 +129,7 @@ in rec {
129 (ghcName: value: builtins.mapAttrs
129 (ghcName: value: builtins.mapAttrs
130 (pkgName: srcAndNix: importSrcAndNix {
130 (pkgName: srcAndNix: importSrcAndNix {
131 inherit (srcAndNix) src;
131 inherit (srcAndNix) src;
132− nix = ghc-boot-packages-nix."${ghcName}" + "/${pkgName}.nix";
132+ nix = ghc-boot-packages-nix.${ghcName} + "/${pkgName}.nix";
133 }) value)
133 }) value)
134 ghc-boot-packages-src-and-nix;
134 ghc-boot-packages-src-and-nix;
135
135
overlays/haskell.nix+25−12
@@ -100,10 +100,15 @@ final: prev: {
100 # Some boot packages (libiserv) are in lts, but not in hackage,
100 # Some boot packages (libiserv) are in lts, but not in hackage,
101 # so we should not try to get it from hackage based on the stackage
101 # so we should not try to get it from hackage based on the stackage
102 # info. Instead we can add ghc-boot-packages to `pkg-def-extras`.
102 # info. Instead we can add ghc-boot-packages to `pkg-def-extras`.
103+ # The compiler-nix-name allows non default values (like
104+ # "ghc8102-experimental").
103− excludeBootPackages = pkg-def: hackage:
105+ excludeBootPackages = compiler-nix-name: pkg-def: hackage:
104 let original = pkg-def hackage;
106 let original = pkg-def hackage;
105 bootPkgNames = final.lib.attrNames
107 bootPkgNames = final.lib.attrNames
108+ final.ghc-boot-packages.${
109+ if compiler-nix-name != null
110+ then compiler-nix-name
106− final.ghc-boot-packages.${(pkg-def hackage).compiler.nix-name};
111+ else (pkg-def hackage).compiler.nix-name};
107 in original // {
112 in original // {
108 packages = final.lib.filterAttrs (n: _: final.lib.all (b: n != b) bootPkgNames)
113 packages = final.lib.filterAttrs (n: _: final.lib.all (b: n != b) bootPkgNames)
109 original.packages;
114 original.packages;
@@ -130,7 +135,7 @@ final: prev: {
130 else module;
135 else module;
131 removeSpecialPackages = ps: removeAttrs ps [ "$locals" "$targets" "$everything" ];
136 removeSpecialPackages = ps: removeAttrs ps [ "$locals" "$targets" "$everything" ];
132 in mkPkgSet {
137 in mkPkgSet {
133− pkg-def = excludeBootPackages pkg-def;
138+ pkg-def = excludeBootPackages null pkg-def;
134 pkg-def-extras = [ stack-pkgs.extras
139 pkg-def-extras = [ stack-pkgs.extras
135 final.ghc-boot-packages.${compiler.nix-name}
140 final.ghc-boot-packages.${compiler.nix-name}
136 ]
141 ]
@@ -148,17 +153,24 @@ final: prev: {
148 , pkg-def-extras ? []
153 , pkg-def-extras ? []
149 , modules ? []
154 , modules ? []
150 , extra-hackages ? []
155 , extra-hackages ? []
156+ , compiler-nix-name ? null
151− }@args:
157+ }:
152
158
153 let
159 let
160+ compiler-nix-name' =
161+ if compiler-nix-name != null
162+ then compiler-nix-name
163+ else ((plan-pkgs.extras hackage).compiler or (plan-pkgs.pkgs hackage).compiler).nix-name;
154− pkg-def = excludeBootPackages plan-pkgs.pkgs;
164+ pkg-def = excludeBootPackages compiler-nix-name plan-pkgs.pkgs;
155− # The compiler referenced in the stack config
156− compiler = (plan-pkgs.extras hackage).compiler or (pkg-def hackage).compiler;
157− patchesModule = ghcHackagePatches.${compiler.nix-name} or {};
165+ patchesModule = ghcHackagePatches.${compiler-nix-name'} or {};
166+ in
167+ # Check that the GHC version of the selected compiler matches the one of the plan
168+ assert (final.haskell-nix.compiler.${compiler-nix-name'}.version
169+ == final.haskell-nix.compiler.${(plan-pkgs.pkgs hackage).compiler.nix-name}.version);
158− in mkPkgSet {
170+ mkPkgSet {
159 inherit pkg-def;
171 inherit pkg-def;
160 pkg-def-extras = [ plan-pkgs.extras
172 pkg-def-extras = [ plan-pkgs.extras
161− final.ghc-boot-packages.${compiler.nix-name}
173+ final.ghc-boot-packages.${compiler-nix-name'}
162 ]
174 ]
163 ++ pkg-def-extras;
175 ++ pkg-def-extras;
164 # set doExactConfig = true, as we trust cabals resolution for
176 # set doExactConfig = true, as we trust cabals resolution for
@@ -471,7 +483,8 @@ final: prev: {
471 args = { caller = "cabalProject'"; } // args';
483 args = { caller = "cabalProject'"; } // args';
472 callProjectResults = callCabalProjectToNix args;
484 callProjectResults = callCabalProjectToNix args;
473 in let pkg-set = mkCabalProjectPkgSet
485 in let pkg-set = mkCabalProjectPkgSet
486+ { inherit compiler-nix-name;
474− { plan-pkgs = importAndFilterProject {
487+ plan-pkgs = importAndFilterProject {
475 inherit (callProjectResults) projectNix sourceRepos src;
488 inherit (callProjectResults) projectNix sourceRepos src;
476 };
489 };
477 pkg-def-extras = args.pkg-def-extras or [];
490 pkg-def-extras = args.pkg-def-extras or [];
@@ -479,7 +492,7 @@ final: prev: {
479 ++ final.lib.optional (args ? ghcOverride || args ? ghc)
492 ++ final.lib.optional (args ? ghcOverride || args ? ghc)
480 { ghc.package = args.ghcOverride or args.ghc; }
493 { ghc.package = args.ghcOverride or args.ghc; }
481 ++ final.lib.optional (args ? compiler-nix-name)
494 ++ final.lib.optional (args ? compiler-nix-name)
482− { compiler.nix-name = args.compiler-nix-name; };
495+ { compiler.nix-name = final.lib.mkForce args.compiler-nix-name; };
483 extra-hackages = args.extra-hackages or [];
496 extra-hackages = args.extra-hackages or [];
484 };
497 };
485
498
overlays/patches/ghc/core-field.patchnew file+958
@@ -0,0 +1,958 @@
1+diff --git a/compiler/basicTypes/RdrName.hs b/compiler/basicTypes/RdrName.hs
2+index d730538b88..597c8eb909 100644
3+--- a/compiler/basicTypes/RdrName.hs
4++++ b/compiler/basicTypes/RdrName.hs
5+@@ -71,6 +71,7 @@ module RdrName (
6+ #include "HsVersions.h"
7+
8+ import GhcPrelude
9++import Binary
10+
11+ import Module
12+ import Name
13+@@ -466,6 +467,11 @@ data GlobalRdrElt
14+ -- INVARIANT: either gre_lcl = True or gre_imp is non-empty
15+ -- See Note [GlobalRdrElt provenance]
16+
17++instance Binary GlobalRdrElt where
18++ put_ bh (GRE f1 f2 f3 f4) = put_ bh f1 >> put_ bh f2 >> put_ bh f3 >> put_ bh f4
19++ get bh = GRE <$> get bh <*> get bh <*> get bh <*> get bh
20++
21++
22+ -- | The children of a Name are the things that are abbreviated by the ".."
23+ -- notation in export lists. See Note [Parents]
24+ data Parent = NoParent
25+@@ -474,6 +480,18 @@ data Parent = NoParent
26+ -- ^ See Note [Parents for record fields]
27+ deriving (Eq, Data)
28+
29++instance Binary Parent where
30++ put_ bh NoParent = putByte bh 0
31++ put_ bh (ParentIs f1) = putByte bh 1 >> put_ bh f1
32++ put_ bh (FldParent f1 f2) = putByte bh 2 >> put_ bh f1 >> put_ bh f2
33++ get bh = do
34++ i <- getByte bh
35++ case i of
36++ 0 -> return NoParent
37++ 1 -> ParentIs <$> get bh
38++ _ -> FldParent <$> get bh <*> get bh
39++
40++
41+ instance Outputable Parent where
42+ ppr NoParent = empty
43+ ppr (ParentIs n) = text "parent:" <> ppr n
44+@@ -1136,6 +1154,11 @@ data ImportSpec = ImpSpec { is_decl :: ImpDeclSpec,
45+ is_item :: ImpItemSpec }
46+ deriving( Eq, Ord, Data )
47+
48++instance Binary ImportSpec where
49++ put_ bh (ImpSpec f1 f2) = put_ bh f1 >> put_ bh f2
50++ get bh = ImpSpec <$> get bh <*> get bh
51++
52++
53+ -- | Import Declaration Specification
54+ --
55+ -- Describes a particular import declaration and is
56+@@ -1153,6 +1176,11 @@ data ImpDeclSpec
57+ is_dloc :: SrcSpan -- ^ The location of the entire import declaration
58+ } deriving Data
59+
60++instance Binary ImpDeclSpec where
61++ put_ bh (ImpDeclSpec f1 f2 f3 f4) = put_ bh f1 >> put_ bh f2 >> put_ bh f3 >> put_ bh f4
62++ get bh = ImpDeclSpec <$> get bh <*> get bh <*> get bh <*> get bh
63++
64++
65+ -- | Import Item Specification
66+ --
67+ -- Describes import info a particular Name
68+@@ -1192,6 +1220,14 @@ instance Ord ImpItemSpec where
69+ (_, ImpAll) -> LT
70+ (ImpSome _ l1, ImpSome _ l2) -> l1 `compare` l2
71+
72++instance Binary ImpItemSpec where
73++ put_ bh ImpAll = putByte bh 0
74++ put_ bh (ImpSome f1 f2) = putByte bh 1 >> put_ bh f1 >> put_ bh f2
75++ get bh = do
76++ i <- getByte bh
77++ case i of
78++ 0 -> return ImpAll
79++ _ -> ImpSome <$> get bh <*> get bh
80+
81+ bestImport :: [ImportSpec] -> ImportSpec
82+ -- See Note [Choosing the best import declaration]
83+diff --git a/compiler/iface/BinIface.hs b/compiler/iface/BinIface.hs
84+index faee723bd2..0f7073f15c 100644
85+--- a/compiler/iface/BinIface.hs
86++++ b/compiler/iface/BinIface.hs
87+@@ -148,7 +148,15 @@ readBinIface_ dflags checkHiWay traceBinIFaceReading hi_path ncu = do
88+ wantedGot "Way" way_descr check_way ppr
89+ when (checkHiWay == CheckHiWay) $
90+ errorOnMismatch "mismatched interface file ways" way_descr check_way
91+- getWithUserData ncu bh
92++
93++ extFields_p <- get bh
94++
95++ mod_iface <- getWithUserData ncu bh
96++
97++ seekBin bh extFields_p
98++ extFields <- get bh
99++
100++ return mod_iface{mi_ext_fields = extFields}
101+
102+
103+ -- | This performs a get action after reading the dictionary and symbol
104+@@ -200,8 +208,16 @@ writeBinIface dflags hi_path mod_iface = do
105+ let way_descr = getWayDescr dflags
106+ put_ bh way_descr
107+
108++ extFields_p_p <- tellBin bh
109++ put_ bh extFields_p_p
110+
111+ putWithUserData (debugTraceMsg dflags 3) bh mod_iface
112++
113++ extFields_p <- tellBin bh
114++ putAt bh extFields_p_p extFields_p
115++ seekBin bh extFields_p
116++ put_ bh (mi_ext_fields mod_iface)
117++
118+ -- And send the result to the file
119+ writeBinMem bh hi_path
120+
121+diff --git a/compiler/iface/IfaceSyn.hs b/compiler/iface/IfaceSyn.hs
122+index f691300157..9662667172 100644
123+--- a/compiler/iface/IfaceSyn.hs
124++++ b/compiler/iface/IfaceSyn.hs
125+@@ -22,6 +22,7 @@ module IfaceSyn (
126+ IfaceAxBranch(..),
127+ IfaceTyConParent(..),
128+ IfaceCompleteMatch(..),
129++ IfaceModGuts(..),
130+
131+ -- * Binding names
132+ IfaceTopBndr,
133+@@ -57,7 +58,7 @@ import Name
134+ import CostCentre
135+ import Literal
136+ import ForeignCall
137+-import Annotations( AnnPayload, AnnTarget )
138++import Annotations( AnnPayload, AnnTarget, Annotation )
139+ import BasicTypes
140+ import Outputable
141+ import Module
142+@@ -73,6 +74,16 @@ import Lexeme (isLexSym)
143+ import TysWiredIn ( constraintKindTyConName )
144+ import Util (seqList)
145+
146++import ByteCodeTypes
147++import DriverPhases
148++import GHC.ForeignSrcLang.Type
149++import GHC.Hs.Doc ( ArgDocMap, DeclDocMap, HsDocString )
150++import Avail
151++import RdrName
152++import {-# SOURCE #-} HscTypes
153++import NameEnv
154++import DynFlags
155++
156+ import Control.Monad
157+ import System.IO.Unsafe
158+ import Control.DeepSeq
159+@@ -571,7 +582,50 @@ type family (==) (a :: k) (b :: k) :: Bool
160+ -- incompatible with: #1, #0
161+ The comment after an equation refers to all previous equations (0-indexed)
162+ that are incompatible with it.
163+++-}
164++
165++{-
166+++************************************************************************
167+++* *
168+++ Phases
169+++* *
170+++************************************************************************
171+++-}
172++
173++data IfaceModGuts = IfaceModGuts {
174++ img_module :: !Module,
175++ img_hsc_src :: HscSource,
176++ img_loc :: SrcSpan,
177++ img_exports :: ![AvailInfo],
178++ img_deps :: !Dependencies,
179++ img_usages :: ![Usage],
180++ img_used_th :: !Bool,
181++ img_rdr_env :: !GlobalRdrEnv,
182++ img_fix_env :: !FixityEnv,
183++ img_tcs :: ![IfaceTyCon],
184++ img_insts :: ![IfaceClsInst],
185++ img_fam_insts :: ![IfaceFamInst],
186++ img_patsyns :: ![IfaceDecl],
187++ img_rules :: ![IfaceRule],
188++ img_binds :: ![IfaceBinding],
189++ img_foreign :: !ForeignStubs,
190++ img_foreign_files :: ![(ForeignSrcLang, FilePath)],
191++ img_warns :: !Warnings,
192++ img_anns :: [Annotation],
193++ img_complete_sigs :: [CompleteMatch],
194++ img_hpc_info :: !HpcInfo,
195++ img_modBreaks :: !(Maybe ModBreaks),
196++ img_inst_env :: [IfaceClsInst],
197++ img_fam_inst_env :: [IfaceFamInst],
198++ img_safe_haskell :: SafeHaskellMode,
199++ img_trust_pkg :: Bool,
200++ img_doc_hdr :: !(Maybe HsDocString),
201++ img_decl_docs :: !DeclDocMap,
202++ img_arg_docs :: !ArgDocMap
203++ }
204++
205+
206++{-
207+ ************************************************************************
208+ * *
209+ Printing IfaceDecl
210+@@ -2418,6 +2472,43 @@ instance Binary IfaceCompleteMatch where
211+ put_ bh (IfaceCompleteMatch cs ts) = put_ bh cs >> put_ bh ts
212+ get bh = IfaceCompleteMatch <$> get bh <*> get bh
213+
214++instance Binary IfaceModGuts where
215++ put_ bh (IfaceModGuts f1 f2 f3 f4 f5 f6 f7 _f8 _f9 f10 f11 f12 f13 f14 f15 f16 f17 f18
216++ f19 f20 f21 _f22 f23 f24 f25 f26 f27 f28 f29) = do
217++ put_ bh f1
218++ put_ bh f2
219++ put_ bh f3
220++ put_ bh f4
221++ put_ bh f5
222++ put_ bh f6
223++ put_ bh f7
224++ -- put_ bh f8
225++ -- put_ bh f9
226++ put_ bh f10
227++ put_ bh f11
228++ put_ bh f12
229++ put_ bh f13
230++ put_ bh f14
231++ put_ bh f15
232++ put_ bh f16
233++ put_ bh f17
234++ put_ bh f18
235++ put_ bh f19
236++ put_ bh f20
237++ put_ bh f21
238++ put_ bh f23
239++ put_ bh f24
240++ put_ bh f25
241++ put_ bh f26
242++ put_ bh f27
243++ put_ bh f28
244++ put_ bh f29
245++
246++ get bh = IfaceModGuts <$> get bh <*> get bh <*> get bh <*> get bh <*> get bh <*> get bh
247++ <*> get bh <*> return emptyOccEnv <*> return emptyNameEnv <*> get bh <*> get bh <*> get bh
248++ <*> get bh <*> get bh <*> get bh <*> get bh <*> get bh <*> get bh
249++ <*> get bh <*> get bh <*> get bh <*> return Nothing <*> get bh <*> get bh
250++ <*> get bh <*> get bh <*> get bh <*> get bh <*> get bh
251+
252+ {-
253+ ************************************************************************
254+diff --git a/compiler/iface/LoadIface.hs b/compiler/iface/LoadIface.hs
255+index 8d327e528d..06cdb90800 100644
256+--- a/compiler/iface/LoadIface.hs
257++++ b/compiler/iface/LoadIface.hs
258+@@ -48,6 +48,7 @@ import HscTypes
259+ import BasicTypes hiding (SuccessFlag(..))
260+ import TcRnMonad
261+
262++import Binary ( BinData(..) )
263+ import Constants
264+ import PrelNames
265+ import PrelInfo
266+@@ -83,6 +84,7 @@ import Plugins
267+ import Control.Monad
268+ import Control.Exception
269+ import Data.IORef
270++import Data.Map ( toList )
271+ import System.FilePath
272+
273+ {-
274+@@ -1155,6 +1157,7 @@ pprModIface iface@ModIface{ mi_final_exts = exts }
275+ , text "module header:" $$ nest 2 (ppr (mi_doc_hdr iface))
276+ , text "declaration docs:" $$ nest 2 (ppr (mi_decl_docs iface))
277+ , text "arg docs:" $$ nest 2 (ppr (mi_arg_docs iface))
278++ , text "extensible fields:" $$ nest 2 (pprExtensibleFields (mi_ext_fields iface))
279+ ]
280+ where
281+ pp_hsc_src HsBootFile = text "[boot]"
282+@@ -1244,6 +1247,11 @@ pprIfaceAnnotation :: IfaceAnnotation -> SDoc
283+ pprIfaceAnnotation (IfaceAnnotation { ifAnnotatedTarget = target, ifAnnotatedValue = serialized })
284+ = ppr target <+> text "annotated by" <+> ppr serialized
285+
286++pprExtensibleFields :: ExtensibleFields -> SDoc
287++pprExtensibleFields (ExtensibleFields fs) = vcat . map pprField $ toList fs
288++ where
289++ pprField (name, (BinData size _data)) = text name <+> text "-" <+> ppr size <+> text "bytes"
290++
291+ {-
292+ *********************************************************
293+ * *
294+diff --git a/compiler/iface/MkIface.hs b/compiler/iface/MkIface.hs
295+index 8e66a67f58..5c472526c5 100644
296+--- a/compiler/iface/MkIface.hs
297++++ b/compiler/iface/MkIface.hs
298+@@ -23,7 +23,8 @@ module MkIface (
299+ mkIfaceExports,
300+
301+ coAxiomToIfaceDecl,
302+- tyThingToIfaceDecl -- Converting things to their Iface equivalents
303++ tyThingToIfaceDecl, -- Converting things to their Iface equivalents
304++ toIfaceModGuts
305+ ) where
306+
307+ {-
308+@@ -67,6 +68,7 @@ import BinFingerprint
309+ import LoadIface
310+ import ToIface
311+ import FlagChecker
312++import Binary
313+
314+ import DsUsage ( mkUsageInfo, mkUsedNames, mkDependencies )
315+ import Id
316+@@ -104,7 +106,6 @@ import Unique
317+ import Util hiding ( eqListBy )
318+ import FastString
319+ import Maybes
320+-import Binary
321+ import Fingerprint
322+ import Exception
323+ import UniqSet
324+@@ -138,25 +139,28 @@ import qualified Data.Semigroup
325+ mkPartialIface :: HscEnv
326+ -> ModDetails
327+ -> ModGuts
328+- -> PartialModIface
329++ -> IO PartialModIface
330+ mkPartialIface hsc_env mod_details
331+- ModGuts{ mg_module = this_mod
332+- , mg_hsc_src = hsc_src
333+- , mg_usages = usages
334+- , mg_used_th = used_th
335+- , mg_deps = deps
336+- , mg_rdr_env = rdr_env
337+- , mg_fix_env = fix_env
338+- , mg_warns = warns
339+- , mg_hpc_info = hpc_info
340+- , mg_safe_haskell = safe_mode
341+- , mg_trust_pkg = self_trust
342+- , mg_doc_hdr = doc_hdr
343+- , mg_decl_docs = decl_docs
344+- , mg_arg_docs = arg_docs
345+- }
346+- = mkIface_ hsc_env this_mod hsc_src used_th deps rdr_env fix_env warns hpc_info self_trust
347+- safe_mode usages doc_hdr decl_docs arg_docs mod_details
348++ guts@ModGuts{ mg_module = this_mod
349++ , mg_hsc_src = hsc_src
350++ , mg_usages = usages
351++ , mg_used_th = used_th
352++ , mg_deps = deps
353++ , mg_rdr_env = rdr_env
354++ , mg_fix_env = fix_env
355++ , mg_warns = warns
356++ , mg_hpc_info = hpc_info
357++ , mg_safe_haskell = safe_mode
358++ , mg_trust_pkg = self_trust
359++ , mg_doc_hdr = doc_hdr
360++ , mg_decl_docs = decl_docs
361++ , mg_arg_docs = arg_docs
362++ }
363++ = do ext_fs <- readIORef $ hsc_ext_fields hsc_env
364++ return iface{mi_ext_fields = ext_fs}
365++ where
366++ iface = mkIface_ hsc_env this_mod hsc_src used_th deps rdr_env fix_env warns hpc_info self_trust
367++ safe_mode usages doc_hdr decl_docs arg_docs mod_details
368+
369+ -- | Fully instantiate a interface
370+ -- Adds fingerprints and potentially code generator produced information.
371+@@ -311,7 +315,8 @@ mkIface_ hsc_env
372+ mi_doc_hdr = doc_hdr,
373+ mi_decl_docs = decl_docs,
374+ mi_arg_docs = arg_docs,
375+- mi_final_exts = () }
376++ mi_final_exts = (),
377++ mi_ext_fields = emptyExtensibleFields }
378+ where
379+ cmp_rule = comparing ifRuleName
380+ -- Compare these lexicographically by OccName, *not* by unique,
381+@@ -2076,3 +2081,39 @@ bogusIfaceRule id_name
382+ ifRuleBndrs = [], ifRuleHead = id_name, ifRuleArgs = [],
383+ ifRuleRhs = IfaceExt id_name, ifRuleOrph = IsOrphan,
384+ ifRuleAuto = True }
385++
386++--------------------------
387++
388++toIfaceModGuts :: ModGuts -> IfaceModGuts
389++toIfaceModGuts (ModGuts f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18
390++ f19 f20 f21 f22 f23 f24 f25 f26 f27 f28 f29) =
391++ IfaceModGuts
392++ f1
393++ f2
394++ f3
395++ f4
396++ f5
397++ f6
398++ f7
399++ f8
400++ f9
401++ (map toIfaceTyCon f10)
402++ (map instanceToIfaceInst f11)
403++ (map famInstToIfaceFamInst f12)
404++ (map patSynToIfaceDecl f13)
405++ (map coreRuleToIfaceRule f14)
406++ (map toIfaceBind f15)
407++ f16
408++ f17
409++ f18
410++ f19
411++ f20
412++ f21
413++ f22
414++ (map instanceToIfaceInst $ instEnvElts f23)
415++ (map famInstToIfaceFamInst $ famInstEnvElts f24)
416++ f25
417++ f26
418++ f27
419++ f28
420++ f29
421+diff --git a/compiler/iface/TcIface.hs b/compiler/iface/TcIface.hs
422+index 077c66371e..3d9882f624 100644
423+--- a/compiler/iface/TcIface.hs
424++++ b/compiler/iface/TcIface.hs
425+@@ -17,7 +17,9 @@ module TcIface (
426+ tcIfaceDecl, tcIfaceInst, tcIfaceFamInst, tcIfaceRules,
427+ tcIfaceAnnotations, tcIfaceCompleteSigs,
428+ tcIfaceExpr, -- Desired by HERMIT (#7683)
429+- tcIfaceGlobal
430++ tcIfaceGlobal,
431++ tcIfaceType,
432++ tcJoinInfo,
433+ ) where
434+
435+ #include "HsVersions.h"
436+diff --git a/compiler/main/Annotations.hs b/compiler/main/Annotations.hs
437+index 82d80aae43..4088d93565 100644
438+--- a/compiler/main/Annotations.hs
439++++ b/compiler/main/Annotations.hs
440+@@ -41,6 +41,10 @@ data Annotation = Annotation {
441+ ann_value :: AnnPayload
442+ }
443+
444++instance Binary Annotation where
445++ put_ bh (Annotation f1 f2) = put_ bh f1 >> put_ bh f2
446++ get bh = Annotation <$> get bh <*> get bh
447++
448+ type AnnPayload = Serialized -- ^ The "payload" of an annotation
449+ -- allows recovery of its value at a given type,
450+ -- and can be persisted to an interface file
451+diff --git a/compiler/main/DynFlags.hs b/compiler/main/DynFlags.hs
452+index 03bb5292da..65048a7860 100644
453+--- a/compiler/main/DynFlags.hs
454++++ b/compiler/main/DynFlags.hs
455+@@ -250,6 +250,7 @@ module DynFlags (
456+
457+ import GhcPrelude
458+
459++import Binary
460+ import GHC.Platform
461+ import GHC.UniqueSubdir (uniqueSubdir)
462+ import PlatformConstants
463+@@ -594,6 +595,9 @@ data GeneralFlag
464+ | Opt_WriteInterface -- forces .hi files to be written even with -fno-code
465+ | Opt_WriteHie -- generate .hie files
466+
467++ -- Writing phase outputs
468++ | Opt_Write_Phase_Core
469++
470+ -- profiling opts
471+ | Opt_AutoSccsOnIndividualCafs
472+ | Opt_ProfCountEntries
473+@@ -945,6 +949,24 @@ data SafeHaskellMode
474+ | Sf_Ignore -- ^ @-fno-safe-haskell@ state
475+ deriving (Eq)
476+
477++instance Binary SafeHaskellMode where
478++ put_ bh Sf_None = putByte bh 0
479++ put_ bh Sf_Unsafe = putByte bh 1
480++ put_ bh Sf_Trustworthy = putByte bh 2
481++ put_ bh Sf_Safe = putByte bh 3
482++ put_ bh Sf_SafeInferred = putByte bh 4
483++ put_ bh Sf_Ignore = putByte bh 5
484++ get bh = do
485++ i <- getByte bh
486++ case i of
487++ 0 -> return Sf_None
488++ 1 -> return Sf_Unsafe
489++ 2 -> return Sf_Trustworthy
490++ 3 -> return Sf_Safe
491++ 4 -> return Sf_SafeInferred
492++ _ -> return Sf_Ignore
493++
494++
495+ instance Show SafeHaskellMode where
496+ show Sf_None = "None"
497+ show Sf_Unsafe = "Unsafe"
498+@@ -3183,6 +3205,10 @@ dynamic_flags_deps = [
499+ , make_ord_flag defGhcFlag "dynamic-too"
500+ (NoArg (setGeneralFlag Opt_BuildDynamicToo))
501+
502++ ------- Phase outputs -----------------------------------------------
503++ , make_ord_flag defGhcFlag "write-phase-core"
504++ (NoArg (setGeneralFlag Opt_Write_Phase_Core))
505++
506+ ------- Keeping temporary files -------------------------------------
507+ -- These can be singular (think ghc -c) or plural (think ghc --make)
508+ , make_ord_flag defGhcFlag "keep-hc-file"
509+@@ -4593,6 +4619,9 @@ defaultFlags settings
510+ Opt_SharedImplib,
511+ Opt_SimplPreInlining,
512+ Opt_VersionMacros
513++#if GHC_STAGE > 1
514++ , Opt_Write_Phase_Core
515++#endif
516+ ]
517+
518+ ++ [f | (ns,f) <- optLevelFlags, 0 `elem` ns]
519+diff --git a/compiler/main/HscMain.hs b/compiler/main/HscMain.hs
520+index 9bb6b4e391..25265aa67d 100644
521+--- a/compiler/main/HscMain.hs
522++++ b/compiler/main/HscMain.hs
523+@@ -180,6 +180,9 @@ import HieTypes ( getAsts, hie_asts, hie_module )
524+ import HieBin ( readHieFile, writeHieFile , hie_file_result)
525+ import HieDebug ( diffFile, validateScopes )
526+
527++import ToIface ( toIfaceBind )
528++import BinIface ( putWithUserData )
529++
530+ #include "HsVersions.h"
531+
532+
533+@@ -195,6 +198,7 @@ newHscEnv dflags = do
534+ us <- mkSplitUniqSupply 'r'
535+ nc_var <- newIORef (initNameCache us knownKeyNames)
536+ fc_var <- newIORef emptyInstalledModuleEnv
537++ ext_fs <- newIORef emptyExtensibleFields
538+ iserv_mvar <- newMVar Nothing
539+ emptyDynLinker <- uninitializedLinker
540+ return HscEnv { hsc_dflags = dflags
541+@@ -205,6 +209,7 @@ newHscEnv dflags = do
542+ , hsc_EPS = eps_var
543+ , hsc_NC = nc_var
544+ , hsc_FC = fc_var
545++ , hsc_ext_fields = ext_fs
546+ , hsc_type_env_var = Nothing
547+ , hsc_iserv = iserv_mvar
548+ , hsc_dynLinker = emptyDynLinker
549+@@ -833,11 +838,14 @@ finish summary tc_result mb_old_hash = do
550+ (cg_guts, details) <- {-# SCC "CoreTidy" #-}
551+ liftIO $ tidyProgram hsc_env desugared_guts
552+
553+- let !partial_iface =
554+- {-# SCC "HscMain.mkPartialIface" #-}
555++ when (gopt Opt_Write_Phase_Core (hsc_dflags hsc_env)) $
556++ liftIO $ registerInterfaceDataWith "ghc/phase/core" hsc_env $ \bh ->
557++ putWithUserData (const $ return ()) bh (map toIfaceBind $ cg_binds cg_guts)
558++
559++ !partial_iface <- {-# SCC "HscMain.mkPartialIface" #-}
560+ -- This `force` saves 2M residency in test T10370
561+ -- See Note [Avoiding space leaks in toIface*] for details.
562+- force (mkPartialIface hsc_env details desugared_guts)
563++ liftIO $ force <$> (mkPartialIface hsc_env details desugared_guts)
564+
565+ return ( HscRecomp { hscs_guts = cg_guts,
566+ hscs_mod_location = ms_location summary,
567+diff --git a/compiler/main/HscTypes.hs b/compiler/main/HscTypes.hs
568+index 6bc090499f..fdc4e06aad 100644
569+--- a/compiler/main/HscTypes.hs
570++++ b/compiler/main/HscTypes.hs
571+@@ -148,7 +148,17 @@ module HscTypes (
572+
573+ -- * COMPLETE signature
574+ CompleteMatch(..), CompleteMatchMap,
575+- mkCompleteMatchMap, extendCompleteMatchMap
576++ mkCompleteMatchMap, extendCompleteMatchMap,
577++
578++
579++ -- * Exstensible Iface fields
580++ ExtensibleFields(..), FieldName,
581++ emptyExtensibleFields,
582++ readField, readIfaceField, readIfaceFieldWith,
583++ writeField, writeIfaceField, writeIfaceFieldWith,
584++ deleteField, deleteIfaceField,
585++ registerInterfaceData, registerInterfaceDataWith,
586++ unregisterInterfaceData,
587+ ) where
588+
589+ #include "HsVersions.h"
590+@@ -216,7 +226,7 @@ import GHC.Serialized ( Serialized )
591+ import qualified GHC.LanguageExtensions as LangExt
592+
593+ import Foreign
594+-import Control.Monad ( guard, liftM, ap )
595++import Control.Monad ( guard, liftM, ap, forM, forM_, replicateM )
596+ import Data.IORef
597+ import Data.Time
598+ import Exception
599+@@ -224,6 +234,8 @@ import System.FilePath
600+ import Control.Concurrent
601+ import System.Process ( ProcessHandle )
602+ import Control.DeepSeq
603++import qualified Data.Map as Map
604++import Data.Map (Map)
605+
606+ -- -----------------------------------------------------------------------------
607+ -- Compilation state
608+@@ -465,6 +477,10 @@ data HscEnv
609+ hsc_FC :: {-# UNPACK #-} !(IORef FinderCache),
610+ -- ^ The cached result of performing finding in the file system
611+
612++ hsc_ext_fields :: {-# UNPACK #-} !(IORef ExtensibleFields),
613++ -- ^ Extensible interface field data stored by plugins to be later
614++ -- output in the `.hi` file.
615++
616+ hsc_type_env_var :: Maybe (Module, IORef TypeEnv)
617+ -- ^ Used for one-shot compilation only, to initialise
618+ -- the 'IfGblEnv'. See 'TcRnTypes.tcg_type_env_var' for
619+@@ -1070,9 +1086,17 @@ data ModIface_ (phase :: ModIfacePhase)
620+ mi_arg_docs :: ArgDocMap,
621+ -- ^ Docs on arguments.
622+
623+- mi_final_exts :: !(IfaceBackendExts phase)
624++ mi_final_exts :: !(IfaceBackendExts phase),
625+ -- ^ Either `()` or `ModIfaceBackend` for
626+ -- a fully instantiated interface.
627++
628++ mi_ext_fields :: ExtensibleFields
629++ -- ^ Additional optional fields, where the Map key represents
630++ -- the field name, resulting in a (size, serialized data) pair.
631++ -- Because the data is intended to be serialized through the
632++ -- internal `Binary` class (increasing compatibility with types
633++ -- using `Name` and `FastString`, such as HIE), this format is
634++ -- chosen over `ByteString`s.
635+ }
636+
637+ -- | Old-style accessor for whether or not the ModIface came from an hs-boot
638+@@ -1144,6 +1168,9 @@ instance Binary ModIface where
639+ mi_doc_hdr = doc_hdr,
640+ mi_decl_docs = decl_docs,
641+ mi_arg_docs = arg_docs,
642++ mi_ext_fields = _ext_fields, -- Don't `put_` this in the instance so we
643++ -- can deal with its pointer in the header
644++ -- when we write the actual file
645+ mi_final_exts = ModIfaceBackend {
646+ mi_iface_hash = iface_hash,
647+ mi_mod_hash = mod_hash,
648+@@ -1244,6 +1271,8 @@ instance Binary ModIface where
649+ mi_doc_hdr = doc_hdr,
650+ mi_decl_docs = decl_docs,
651+ mi_arg_docs = arg_docs,
652++ mi_ext_fields = emptyExtensibleFields, -- placeholder because this is dealt
653++ -- with specially when the file is read
654+ mi_final_exts = ModIfaceBackend {
655+ mi_iface_hash = iface_hash,
656+ mi_mod_hash = mod_hash,
657+@@ -1287,7 +1316,9 @@ emptyPartialModIface mod
658+ mi_doc_hdr = Nothing,
659+ mi_decl_docs = emptyDeclDocMap,
660+ mi_arg_docs = emptyArgDocMap,
661+- mi_final_exts = () }
662++ mi_final_exts = (),
663++ mi_ext_fields = emptyExtensibleFields
664++ }
665+
666+ emptyFullModIface :: Module -> ModIface
667+ emptyFullModIface mod =
668+@@ -1496,6 +1527,16 @@ data ForeignStubs
669+ -- 2) C stubs to use when calling
670+ -- "foreign exported" functions
671+
672++instance Binary ForeignStubs where
673++ put_ bh NoStubs = putByte bh 0
674++ put_ bh (ForeignStubs _f1 _f2) = put_ bh NoStubs --putByte bh 1 >> put_ bh f1 >> put_ bh f2
675++ get bh = do
676++ i <- getByte bh
677++ case i of
678++ 0 -> return NoStubs
679++ _ -> return NoStubs --ForeignStubs <$> get bh <*> get bh
680++
681++
682+ appendStubC :: ForeignStubs -> SDoc -> ForeignStubs
683+ appendStubC NoStubs c_code = ForeignStubs empty c_code
684+ appendStubC (ForeignStubs h c) c_code = ForeignStubs h (c $$ c_code)
685+@@ -2413,6 +2454,10 @@ type FixityEnv = NameEnv FixItem
686+ -- so that we can generate an interface from it
687+ data FixItem = FixItem OccName Fixity
688+
689++instance Binary FixItem where
690++ put_ bh (FixItem f1 f2) = put_ bh f1 >> put_ bh f2
691++ get bh = FixItem <$> get bh <*> get bh
692++
693+ instance Outputable FixItem where
694+ ppr (FixItem occ fix) = ppr fix <+> ppr occ
695+
696+@@ -3022,6 +3067,15 @@ data HpcInfo
697+ -- even if there is no module-local HPC usage
698+ type AnyHpcUsage = Bool
699+
700++instance Binary HpcInfo where
701++ put_ bh (HpcInfo f1 f2) = putByte bh 0 >> put_ bh f1 >> put_ bh f2
702++ put_ bh (NoHpcInfo f1) = putByte bh 1 >> put_ bh f1
703++ get bh = do
704++ i <- getByte bh
705++ case i of
706++ 0 -> HpcInfo <$> get bh <*> get bh
707++ _ -> NoHpcInfo <$> get bh
708++
709+ emptyHpcInfo :: AnyHpcUsage -> HpcInfo
710+ emptyHpcInfo = NoHpcInfo
711+
712+@@ -3170,6 +3224,10 @@ data CompleteMatch = CompleteMatch {
713+ -- ^ The TyCon that they cover (e.g. Maybe)
714+ }
715+
716++instance Binary CompleteMatch where
717++ put_ bh (CompleteMatch f1 f2) = put_ bh f1 >> put_ bh f2
718++ get bh = CompleteMatch <$> get bh <*> get bh
719++
720+ instance Outputable CompleteMatch where
721+ ppr (CompleteMatch cl ty) = text "CompleteMatch:" <+> ppr cl
722+ <+> dcolon <+> ppr ty
723+@@ -3254,7 +3312,119 @@ phaseForeignLanguage phase = case phase of
724+ -- avoid major space leaks.
725+ instance (NFData (IfaceBackendExts (phase :: ModIfacePhase)), NFData (IfaceDeclExts (phase :: ModIfacePhase))) => NFData (ModIface_ phase) where
726+ rnf (ModIface f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12
727+- f13 f14 f15 f16 f17 f18 f19 f20 f21 f22 f23) =
728++ f13 f14 f15 f16 f17 f18 f19 f20 f21 f22 f23 f24) =
729+ rnf f1 `seq` rnf f2 `seq` f3 `seq` f4 `seq` f5 `seq` f6 `seq` rnf f7 `seq` f8 `seq`
730+ f9 `seq` rnf f10 `seq` rnf f11 `seq` f12 `seq` rnf f13 `seq` rnf f14 `seq` rnf f15 `seq`
731+ rnf f16 `seq` f17 `seq` rnf f18 `seq` rnf f19 `seq` f20 `seq` f21 `seq` f22 `seq` rnf f23
732++ `seq` rnf f24
733++
734++{-
735++************************************************************************
736++* *
737++\subsection{Extensible Iface Fields}
738++* *
739++************************************************************************
740++-}
741++
742++type FieldName = String
743++
744++newtype ExtensibleFields = ExtensibleFields { getExtensibleFields :: (Map FieldName BinData) }
745++
746++instance Binary ExtensibleFields where
747++ put_ bh (ExtensibleFields fs) = do
748++ put_ bh (Map.size fs :: Int)
749++
750++ -- Put the names of each field, and reserve a space
751++ -- for a payload pointer after each name:
752++ header_entries <- forM (Map.toList fs) $ \(name, dat) -> do
753++ put_ bh name
754++ field_p_p <- tellBin bh
755++ put_ bh field_p_p
756++ return (field_p_p, dat)
757++
758++ -- Now put the payloads and use the reserved space
759++ -- to point to the start of each payload:
760++ forM_ header_entries $ \(field_p_p, dat) -> do
761++ field_p <- tellBin bh
762++ putAt bh field_p_p field_p
763++ seekBin bh field_p
764++ put_ bh dat
765++
766++ get bh = do
767++ n <- get bh :: IO Int
768++
769++ -- Get the names and field pointers:
770++ header_entries <- replicateM n $ do
771++ (,) <$> get bh <*> get bh
772++
773++ -- Seek to and get each field's payload:
774++ fields <- forM header_entries $ \(name, field_p) -> do
775++ seekBin bh field_p
776++ dat <- get bh
777++ return (name, dat)
778++
779++ return . ExtensibleFields . Map.fromList $ fields
780++
781++instance NFData ExtensibleFields where
782++ rnf (ExtensibleFields fs) = rnf fs
783++
784++emptyExtensibleFields :: ExtensibleFields
785++emptyExtensibleFields = ExtensibleFields Map.empty
786++
787++--------------------------------------------------------------------------------
788++-- | Reading
789++
790++readIfaceField :: Binary a => FieldName -> ModIface -> IO (Maybe a)
791++readIfaceField name = readIfaceFieldWith name get
792++
793++readField :: Binary a => FieldName -> ExtensibleFields -> IO (Maybe a)
794++readField name = readFieldWith name get
795++
796++readIfaceFieldWith :: FieldName -> (BinHandle -> IO a) -> ModIface -> IO (Maybe a)
797++readIfaceFieldWith name read iface = readFieldWith name read (mi_ext_fields iface)
798++
799++readFieldWith :: FieldName -> (BinHandle -> IO a) -> ExtensibleFields -> IO (Maybe a)
800++readFieldWith name read fields = sequence $ ((read =<<) . dataHandle) <$>
801++ Map.lookup name (getExtensibleFields fields)
802++
803++--------------------------------------------------------------------------------
804++-- | Writing
805++
806++writeIfaceField :: Binary a => FieldName -> a -> ModIface -> IO ModIface
807++writeIfaceField name x = writeIfaceFieldWith name (`put_` x)
808++
809++writeField :: Binary a => FieldName -> a -> ExtensibleFields -> IO ExtensibleFields
810++writeField name x = writeFieldWith name (`put_` x)
811++
812++writeIfaceFieldWith :: FieldName -> (BinHandle -> IO ()) -> ModIface -> IO ModIface
813++writeIfaceFieldWith name write iface = do
814++ fields <- writeFieldWith name write (mi_ext_fields iface)
815++ return iface{ mi_ext_fields = fields }
816++
817++writeFieldWith :: FieldName -> (BinHandle -> IO ()) -> ExtensibleFields -> IO ExtensibleFields
818++writeFieldWith name write fields = do
819++ bh <- openBinMem (1024 * 1024)
820++ write bh
821++ --
822++ bd <- handleData bh
823++ return $ ExtensibleFields (Map.insert name bd $ getExtensibleFields fields)
824++
825++deleteField :: FieldName -> ExtensibleFields -> ExtensibleFields
826++deleteField name (ExtensibleFields fs) = ExtensibleFields $ Map.delete name fs
827++
828++deleteIfaceField :: FieldName -> ModIface -> ModIface
829++deleteIfaceField name iface = iface { mi_ext_fields = deleteField name (mi_ext_fields iface) }
830++
831++registerInterfaceData :: Binary a => FieldName -> HscEnv -> a -> IO ()
832++registerInterfaceData name env x = registerInterfaceDataWith name env (`put_` x)
833++
834++registerInterfaceDataWith :: FieldName -> HscEnv -> (BinHandle -> IO ()) -> IO ()
835++registerInterfaceDataWith name env write = do
836++ ext_fs <- readIORef (hsc_ext_fields env)
837++ ext_fs' <- writeFieldWith name write ext_fs
838++ writeIORef (hsc_ext_fields env) ext_fs'
839++
840++unregisterInterfaceData :: FieldName -> HscEnv -> IO ()
841++unregisterInterfaceData name env = do
842++ ext_fs <- readIORef (hsc_ext_fields env)
843++ writeIORef (hsc_ext_fields env) (deleteField name ext_fs)
844+diff --git a/compiler/main/HscTypes.hs-boot b/compiler/main/HscTypes.hs-boot
845+new file mode 100755
846+index 0000000000..584381b60b
847+--- /dev/null
848++++ b/compiler/main/HscTypes.hs-boot
849+@@ -0,0 +1,21 @@
850++module HscTypes where
851++
852++import NameEnv
853++import Binary
854++
855++data Dependencies
856++data Usage
857++type FixityEnv = NameEnv FixItem
858++data FixItem
859++data ForeignStubs
860++data Warnings
861++data CompleteMatch
862++data HpcInfo
863++
864++instance Binary Dependencies
865++instance Binary Usage
866++instance Binary ForeignStubs
867++instance Binary Warnings
868++instance Binary CompleteMatch
869++instance Binary HpcInfo
870++instance Binary FixItem
871+diff --git a/compiler/utils/Binary.hs b/compiler/utils/Binary.hs
872+index 503dd31690..61a9dd159e 100644
873+--- a/compiler/utils/Binary.hs
874++++ b/compiler/utils/Binary.hs
875+@@ -27,6 +27,8 @@ module Binary
876+ {-type-} BinHandle,
877+ SymbolTable, Dictionary,
878+
879++ BinData(..), dataHandle, handleData,
880++
881+ openBinMem,
882+ -- closeBin,
883+
884+@@ -74,7 +76,9 @@ import FastMutInt
885+ import Fingerprint
886+ import BasicTypes
887+ import SrcLoc
888++import GHC.ForeignSrcLang.Type
889+
890++import Control.DeepSeq
891+ import Foreign
892+ import Data.Array
893+ import Data.ByteString (ByteString)
894+@@ -97,6 +101,43 @@ import GHC.Serialized
895+
896+ type BinArray = ForeignPtr Word8
897+
898++---------------------------------------------------------------
899++-- BinData
900++---------------------------------------------------------------
901++
902++data BinData = BinData Int BinArray
903++
904++instance NFData BinData where
905++ rnf (BinData sz _) = rnf sz
906++
907++instance Binary BinData where
908++ put_ bh (BinData sz dat) = do
909++ put_ bh sz
910++ putPrim bh sz $ \dest ->
911++ withForeignPtr dat $ \orig ->
912++ copyBytes dest orig sz
913++ --
914++ get bh = do
915++ sz <- get bh
916++ dat <- mallocForeignPtrBytes sz
917++ getPrim bh sz $ \orig ->
918++ withForeignPtr dat $ \dest ->
919++ copyBytes dest orig sz
920++ return (BinData sz dat)
921++
922++dataHandle :: BinData -> IO BinHandle
923++dataHandle (BinData size bin) = do
924++ ixr <- newFastMutInt
925++ szr <- newFastMutInt
926++ writeFastMutInt ixr 0
927++ writeFastMutInt szr size
928++ binr <- newIORef bin
929++ return (BinMem noUserData ixr szr binr)
930++
931++handleData :: BinHandle -> IO BinData
932++handleData (BinMem _ ixr _ binr) = BinData <$> readFastMutInt ixr <*> readIORef binr
933++
934++
935+ ---------------------------------------------------------------
936+ -- BinHandle
937+ ---------------------------------------------------------------
938+@@ -1420,3 +1461,20 @@ instance Binary SourceText where
939+ s <- get bh
940+ return (SourceText s)
941+ _ -> panic $ "Binary SourceText:" ++ show h
942++
943++instance Binary ForeignSrcLang where
944++ put_ bh LangC = putByte bh 0
945++ put_ bh LangCxx = putByte bh 1
946++ put_ bh LangObjc = putByte bh 2
947++ put_ bh LangObjcxx = putByte bh 3
948++ put_ bh LangAsm = putByte bh 4
949++ put_ bh RawObject = putByte bh 5
950++ get bh = do
951++ i <- getByte bh
952++ case i of
953++ 0 -> return LangC
954++ 1 -> return LangCxx
955++ 2 -> return LangObjc
956++ 3 -> return LangObjcxx
957++ 4 -> return LangAsm
958++ _ -> return RawObject
overlays/patches/ghc/ghc-8.8-ubxt.patchnew file+1127
@@ -0,0 +1,1127 @@
1+diff --git a/compiler/cmm/SMRep.hs b/compiler/cmm/SMRep.hs
2+index 743631527e..b01d6640c3 100644
3+--- a/compiler/cmm/SMRep.hs
4++++ b/compiler/cmm/SMRep.hs
5+@@ -100,7 +100,7 @@ bytesToWordsRoundUp dflags n = (n + word_size - 1) `quot` word_size
6+ -- StgWord is a type representing an StgWord on the target platform.
7+ -- A Word64 is large enough to hold a Word for either a 32bit or 64bit platform
8+ newtype StgWord = StgWord Word64
9+- deriving (Eq, Bits)
10++ deriving (Eq, Bits, Show)
11+
12+ fromStgWord :: StgWord -> Integer
13+ fromStgWord (StgWord i) = toInteger i
14+diff --git a/compiler/ghci/ByteCodeAsm.hs b/compiler/ghci/ByteCodeAsm.hs
15+index e3c18b93a2..5d35db192f 100644
16+--- a/compiler/ghci/ByteCodeAsm.hs
17++++ b/compiler/ghci/ByteCodeAsm.hs
18+@@ -7,7 +7,7 @@
19+ -- | ByteCodeLink: Bytecode assembler and linker
20+ module ByteCodeAsm (
21+ assembleBCOs, assembleOneBCO,
22+-
23++ non_void, -- fixme
24+ bcoFreeNames,
25+ SizedSeq, sizeSS, ssElts,
26+ iNTERP_STACK_CHECK_THRESH
27+@@ -30,6 +30,10 @@ import Literal
28+ import TyCon
29+ import FastString
30+ import StgCmmLayout ( ArgRep(..) )
31++import CmmUtils
32++import CmmNode
33++import CmmCallConv
34++import CmmExpr
35+ import SMRep
36+ import DynFlags
37+ import Outputable
38+@@ -59,6 +63,8 @@ import Data.List
39+ import Data.Map (Map)
40+ import Data.Maybe (fromMaybe)
41+ import qualified Data.Map as Map
42++import qualified Data.ByteString as B
43++import qualified Data.ByteString.Char8 as C8
44+
45+ -- -----------------------------------------------------------------------------
46+ -- Unlinked BCOs
47+@@ -374,10 +380,8 @@ assembleI dflags i = case i of
48+ PUSH_ALTS proto -> do let ul_bco = assembleBCO dflags proto
49+ p <- ioptr (liftM BCOPtrBCO ul_bco)
50+ emit bci_PUSH_ALTS [Op p]
51+- PUSH_ALTS_UNLIFTED proto pk
52+- -> do let ul_bco = assembleBCO dflags proto
53+- p <- ioptr (liftM BCOPtrBCO ul_bco)
54+- emit (push_alts pk) [Op p]
55++ PUSH_ALTS_UNLIFTED proto pks
56++ -> push_alts_unlifted dflags proto pks
57+ PUSH_PAD8 -> emit bci_PUSH_PAD8 []
58+ PUSH_PAD16 -> emit bci_PUSH_PAD16 []
59+ PUSH_PAD32 -> emit bci_PUSH_PAD32 []
60+@@ -435,7 +439,7 @@ assembleI dflags i = case i of
61+ JMP l -> emit bci_JMP [LabelOp l]
62+ ENTER -> emit bci_ENTER []
63+ RETURN -> emit bci_RETURN []
64+- RETURN_UBX rep -> emit (return_ubx rep) []
65++ RETURN_UBX reps -> return_ubx dflags (non_void reps)
66+ CCALL off m_addr i -> do np <- addr m_addr
67+ emit bci_CCALL [SmallOp off, Op np, SmallOp i]
68+ BRK_FUN index uniq cc -> do p1 <- ptr BCOPtrBreakArray
69+@@ -445,6 +449,7 @@ assembleI dflags i = case i of
70+ Op q, Op np]
71+
72+ where
73++ platform = targetPlatform dflags
74+ literal (LitLabel fs (Just sz) _)
75+ | platformOS (targetPlatform dflags) == OSMinGW32
76+ = litlabel (appendFS fs (mkFastString ('@':show sz)))
77+@@ -481,27 +486,100 @@ assembleI dflags i = case i of
78+ isLarge :: Word -> Bool
79+ isLarge n = n > 65535
80+
81+-push_alts :: ArgRep -> Word16
82+-push_alts V = bci_PUSH_ALTS_V
83+-push_alts P = bci_PUSH_ALTS_P
84+-push_alts N = bci_PUSH_ALTS_N
85+-push_alts L = bci_PUSH_ALTS_L
86+-push_alts F = bci_PUSH_ALTS_F
87+-push_alts D = bci_PUSH_ALTS_D
88++push_alts :: [ArgRep] -> Maybe Word16
89++push_alts [V] = Just bci_PUSH_ALTS_V
90++push_alts [P] = Just bci_PUSH_ALTS_P
91++push_alts [N] = Just bci_PUSH_ALTS_N
92++push_alts [L] = Just bci_PUSH_ALTS_L
93++push_alts [F] = Just bci_PUSH_ALTS_F
94++push_alts [D] = Just bci_PUSH_ALTS_D
95++push_alts _ = Nothing
96++{-
97+ push_alts V16 = error "push_alts: vector"
98+ push_alts V32 = error "push_alts: vector"
99+ push_alts V64 = error "push_alts: vector"
100++-}
101++
102++non_void :: [ArgRep] -> [ArgRep]
103++non_void = filter nv
104++ where nv V = False
105++ nv _ = True
106++
107++push_alts_unlifted :: DynFlags -> ProtoBCO Name -> [ArgRep] -> Assembler ()
108++push_alts_unlifted dflags proto args = do
109++ let ul_bco = assembleBCO dflags proto
110++ p <- ioptr (liftM BCOPtrBCO ul_bco)
111++ -- fixme make proper sig
112++ case push_alts args of
113++ Just pa -> emit pa [Op p]
114++ _ -> do
115++ sig <- ubx_tup_sig dflags (non_void args)
116++ emit bci_PUSH_ALTS_T [Op p, SmallOp $ fromIntegral (genericLength $ non_void args), Op sig]
117++
118++return_ubx :: DynFlags -> [ArgRep] -> Assembler () -- Word16
119++-- special cases
120++return_ubx _ [] = emit bci_RETURN_V []
121++return_ubx _ [P] = emit bci_RETURN_P []
122++return_ubx _ [N] = emit bci_RETURN_N []
123++return_ubx _ [L] = emit bci_RETURN_L []
124++return_ubx _ [F] = emit bci_RETURN_F []
125++return_ubx _ [D] = emit bci_RETURN_D []
126++-- general case
127++return_ubx dflags nonVoidArgs
128++ | isLarge l = panic "return_ubx: tuple too big"
129++ | otherwise = do
130++ sig <- ubx_tup_sig dflags nonVoidArgs
131++ emit bci_RETURN_T [SmallOp $ fromIntegral l, Op sig ]
132++ where
133++ l = genericLength nonVoidArgs
134++ int = words . mkLitI
135++ words ws = lit (map BCONPtrWord ws)
136++
137+
138+-return_ubx :: ArgRep -> Word16
139+-return_ubx V = bci_RETURN_V
140+-return_ubx P = bci_RETURN_P
141+-return_ubx N = bci_RETURN_N
142+-return_ubx L = bci_RETURN_L
143+-return_ubx F = bci_RETURN_F
144+-return_ubx D = bci_RETURN_D
145+-return_ubx V16 = error "return_ubx: vector"
146+-return_ubx V32 = error "return_ubx: vector"
147+-return_ubx V64 = error "return_ubx: vector"
148++ubx_tup_sig :: DynFlags -> [ArgRep] -> Assembler Word
149++ubx_tup_sig dflags reps = do
150++ lit [BCONPtrStr bs]
151++ where
152++ (boff, posns) = assignArgumentsPos dflags 0 NativeReturn toCmm reps
153++ toCmm = primRepCmmType dflags . argToPrim
154++ bs = B.pack $ concatMap sig_bytes posns
155++ literal (LitString bs) = lit [BCONPtrStr bs]
156++
157++
158++sig_bytes :: (ArgRep, ParamLocation) -> [Word8]
159++sig_bytes (r, loc) = arg_byte r : loc_bytes loc
160++
161++-- fixme do we get zeroes here?
162++loc_bytes :: ParamLocation -> [Word8]
163++loc_bytes (StackParam offset) = [1, fromIntegral offset]
164++loc_bytes (RegisterParam (VanillaReg off _)) = [2, fromIntegral off]
165++loc_bytes (RegisterParam (FloatReg off)) = [3, fromIntegral off]
166++loc_bytes (RegisterParam (DoubleReg off)) = [4, fromIntegral off]
167++loc_bytes (RegisterParam (LongReg off)) = [5, fromIntegral off]
168++loc_bytes (RegisterParam (XmmReg off)) = [6, fromIntegral off]
169++loc_bytes (RegisterParam (YmmReg off)) = [7, fromIntegral off]
170++loc_bytes (RegisterParam (ZmmReg off)) = [8, fromIntegral off]
171++loc_bytes _ = panic "GHC.ByteCode.Asm.loc_bytes"
172++
173++
174++arg_byte :: ArgRep -> Word8
175++arg_byte P = 1
176++arg_byte N = 2
177++arg_byte L = 3
178++arg_byte F = 4
179++arg_byte D = 5
180++arg_byte _ = panic "GHC.ByteCode.Asm.sig_byte"
181++
182++
183++-- we really shouldn't do this
184++argToPrim :: ArgRep -> PrimRep
185++argToPrim P = LiftedRep
186++argToPrim V = VoidRep
187++argToPrim N = WordRep -- UnliftedRep?
188++argToPrim L = Word64Rep
189++argToPrim F = FloatRep
190++argToPrim D = DoubleRep
191++argToPrim _ = panic "GHC.ByteCode.argToPrim"
192+
193+ -- Make lists of host-sized words for literals, so that when the
194+ -- words are placed in memory at increasing addresses, the
195+diff --git a/compiler/ghci/ByteCodeGen.hs b/compiler/ghci/ByteCodeGen.hs
196+index 346add07e7..451ba50384 100644
197+--- a/compiler/ghci/ByteCodeGen.hs
198++++ b/compiler/ghci/ByteCodeGen.hs
199+@@ -1,5 +1,6 @@
200+ {-# LANGUAGE CPP, MagicHash, RecordWildCards, BangPatterns #-}
201+ {-# LANGUAGE GeneralizedNewtypeDeriving #-}
202++{-# LANGUAGE StandaloneDeriving #-}
203+ {-# OPTIONS_GHC -fprof-auto-top #-}
204+ --
205+ -- (c) The University of Glasgow 2002-2006
206+@@ -75,6 +76,90 @@ import Data.Ord
207+ import GHC.Stack.CCS
208+ import Data.Either ( partitionEithers )
209+
210++--- debug stuff, remove!
211++import qualified Var as Var
212++import qualified CostCentre
213++import TyCoRep
214++import IdInfo
215++import UniqDSet
216++
217++encodeUnique _ = "<U>"
218++
219++-- this is a hack to be able to use pprShow in a Show instance, should be removed
220++{-# NOINLINE hackPprDflags #-}
221++hackPprDflags :: DynFlags
222++hackPprDflags = unsafeGlobalDynFlags
223++
224++-- | replace all whitespace with space
225++fixSpace :: String -> String
226++fixSpace xs = map f xs
227++ where
228++ f c | isSpace c = ' '
229++ | otherwise = c
230++
231++
232++-- fixme make this more informative
233++instance Show Type where
234++ show ty = fixSpace (showPpr hackPprDflags ty)
235++instance Show CostCentre where show _ = "CostCentre"
236++instance Show CostCentre.CostCentre where show _ = "CostCentre"
237++instance Show CostCentreStack where show _ = "CostCentreStack"
238++-- instance Show StgBinderInfo where show _ = "StgBinderInfo"
239++showModule m = unitIdString (moduleUnitId m) ++ ":" ++ moduleNameString (moduleName m)
240++-- instance Show (UniqFM Id) where show u = "[" ++ show (uniqSetToList u) ++ "]"
241++instance Show TyCon where show = show . tyConName
242++instance Show Name where
243++ show n = case nameModule_maybe n of
244++ Nothing -> show (nameOccName n)
245++ Just m -> showModule m ++ "." ++ show (nameOccName n)
246++instance Show OccName where show = occNameString
247++instance Show DataCon where show d = show (dataConName d)
248++instance Show Var where show v = "(" ++ show (Var.varName v) ++ "[" ++
249++ encodeUnique (getKey (getUnique v)) ++
250++ "]" ++ if isGlobalId v then "G" else "L" ++
251++ " <" ++ show (idDetails v) ++ "> :: " ++
252++ show (Var.varType v) ++ ")"
253++instance Show IdDetails where
254++ show VanillaId = "VanillaId"
255++ show (RecSelId {}) = "RecSelId"
256++ show (DataConWorkId dc) = "DataConWorkId " ++ show dc
257++ show (DataConWrapId dc) = "DataConWrapId " ++ show dc
258++ show (ClassOpId {}) = "ClassOpId"
259++ show (PrimOpId {}) = "PrimOpId"
260++ show (FCallId {}) = "FCallId"
261++ show (TickBoxOpId {}) = "VanillaId"
262++ show (DFunId {}) = "DFunId"
263++ show CoVarId = "CoVarId"
264++ show (JoinId {}) = "JoinId"
265++
266++-- deriving instance Show UpdateFlag
267++deriving instance Show PrimOpVecCat
268++deriving instance Show LitNumType
269++deriving instance Show Literal
270++deriving instance Show PrimOp
271++deriving instance Show AltCon
272++deriving instance Show PrimCall
273++deriving instance Show ForeignCall
274++deriving instance Show CCallTarget
275++deriving instance Show CCallSpec
276++deriving instance Show CCallConv
277++deriving instance Show FunctionOrData
278++--
279++instance Show Coercion where show co = showPpr hackPprDflags co
280++deriving instance Show LeftOrRight
281++deriving instance Show Role
282++deriving instance Show UnfoldingGuidance
283++deriving instance Show UnfoldingSource
284++instance Show elem => Show (UniqDSet elem) where
285++ show = show . uniqDSetToList
286++
287++traceCBC :: String -> BcM ()
288++traceCBC msg
289++ | True = pure ()
290++-- | otherwise = ioToBc (putStrLn msg)
291++
292++-- end debug stuff
293++
294+ -- -----------------------------------------------------------------------------
295+ -- Generating byte code for a complete module
296+
297+@@ -195,10 +280,10 @@ simpleFreeVars = freeVars
298+ type BCInstrList = OrdList BCInstr
299+
300+ newtype ByteOff = ByteOff Int
301+- deriving (Enum, Eq, Integral, Num, Ord, Real)
302++ deriving (Enum, Eq, Show, Integral, Num, Ord, Real)
303+
304+ newtype WordOff = WordOff Int
305+- deriving (Enum, Eq, Integral, Num, Ord, Real)
306++ deriving (Enum, Eq, Show, Integral, Num, Ord, Real)
307+
308+ wordsToBytes :: DynFlags -> WordOff -> ByteOff
309+ wordsToBytes dflags = fromIntegral . (* wORD_SIZE dflags) . fromIntegral
310+@@ -222,16 +307,14 @@ type StackDepth = ByteOff
311+ -- it after each push/pop.
312+ type BCEnv = Map Id StackDepth -- To find vars on the stack
313+
314+-{-
315+-ppBCEnv :: BCEnv -> SDoc
316++ppBCEnv :: HasDebugCallStack => BCEnv -> SDoc
317+ ppBCEnv p
318+ = text "begin-env"
319+ $$ nest 4 (vcat (map pp_one (sortBy cmp_snd (Map.toList p))))
320+ $$ text "end-env"
321+ where
322+- pp_one (var, offset) = int offset <> colon <+> ppr var <+> ppr (bcIdArgRep var)
323++ pp_one (var, ByteOff offset) = int offset <> colon <+> ppr var <+> ppr (bcIdArgReps var)
324+ cmp_snd x y = compare (snd x) (snd y)
325+--}
326+
327+ -- Create a BCO and do a spot of peephole optimisation on the insns
328+ -- at the same time.
329+@@ -315,7 +398,7 @@ schemeTopBind (id, rhs)
330+ -- because mkConAppCode treats nullary constructor applications
331+ -- by just re-using the single top-level definition. So
332+ -- for the worker itself, we must allocate it directly.
333+- -- ioToBc (putStrLn $ "top level BCO")
334++ traceCBC "top level BCO"
335+ emitBc (mkProtoBCO dflags (getName id) (toOL [PACK data_con 0, ENTER])
336+ (Right rhs) 0 0 [{-no bitmap-}] False{-not alts-})
337+
338+@@ -341,17 +424,23 @@ schemeR :: [Id] -- Free vars of the RHS, ordered as they
339+ -> (Id, AnnExpr Id DVarSet)
340+ -> BcM (ProtoBCO Name)
341+ schemeR fvs (nm, rhs)
342+-{-
343+- | trace (showSDoc (
344++{- | trace (showSDoc (
345+ (char ' '
346+ $$ (ppr.filter (not.isTyVar).dVarSetElems.fst) rhs
347+ $$ pprCoreExpr (deAnnotate rhs)
348+ $$ char ' '
349+ ))) False
350+ = undefined
351+- | otherwise
352+--}
353+- = schemeR_wrk fvs nm rhs (collect rhs)
354++ | otherwise -}
355++ = do
356++ dflags <- getDynFlags
357++ traceCBC ("schemeR:\n" ++ showSDoc dflags (
358++ (char ' '
359++ $$ (ppr.filter (not.isTyVar).dVarSetElems.fst) rhs
360++ $$ pprCoreExpr (deAnnotate rhs)
361++ $$ char ' '
362++ )))
363++ schemeR_wrk fvs nm rhs (collect rhs)
364+
365+ -- If an expression is a lambda (after apply bcView), return the
366+ -- list of arguments to the lambda (in R-to-L order) and the
367+@@ -466,7 +555,8 @@ fvsToEnv p fvs = [v | v <- dVarSetElems fvs,
368+ -- schemeE
369+
370+ returnUnboxedAtom
371+- :: StackDepth
372++ :: HasDebugCallStack
373++ => StackDepth
374+ -> Sequel
375+ -> BCEnv
376+ -> AnnExpr' Id DVarSet
377+@@ -479,7 +569,26 @@ returnUnboxedAtom d s p e e_rep = do
378+ (push, szb) <- pushAtom d p e
379+ return (push -- value onto stack
380+ `appOL` mkSlideB dflags szb (d - s) -- clear to sequel
381+- `snocOL` RETURN_UBX e_rep) -- go
382++ `snocOL` RETURN_UBX [e_rep]) -- go
383++
384++returnUnboxedAtomT
385++ :: HasDebugCallStack
386++ => StackDepth
387++ -> Sequel
388++ -> BCEnv
389++ -> [AnnExpr' Id DVarSet]
390++ -> [ArgRep]
391++ -> BcM BCInstrList
392++-- Returning an unlifted value.
393++-- Heave it on the stack, SLIDE, and RETURN.
394++returnUnboxedAtomT d s p es e_reps = do
395++ dflags <- getDynFlags
396++ let platform = targetPlatform dflags
397++ (pushes, szbs) <- unzip <$> mapM (\(off, a) -> pushAtom (d+wordsToBytes dflags off) p a) (zip [0..] es)
398++ traceCBC ("returnUnboxedAtomT:\nl: " ++ show (length e_reps) ++ " " ++ show szbs)
399++ return (mconcat pushes -- value onto stack
400++ `appOL` mkSlideB dflags (sum szbs) (d - s) -- clear to sequel
401++ `snocOL` RETURN_UBX e_reps) -- go
402+
403+ -- Compile code to apply the given expression to the remaining args
404+ -- on the stack, returning a HNF.
405+@@ -501,7 +610,7 @@ schemeE d s p e@(AnnVar v)
406+ AnnApp (bogus_fvs, AnnVar (protectLPJoinPointId v))
407+ (bogus_fvs, AnnVar voidPrimId)
408+ -- schemeT will call splitApp, dropping the fvs.
409+-
410++ | isUnboxedTupleType (idType v) = returnUnboxedAtomT d s p [e] (bcIdArgReps v) -- fixme split tuple? yup! BUG BUG BUG!
411+ | isUnliftedType (idType v) = returnUnboxedAtom d s p e (bcIdArgRep v)
412+ | otherwise = schemeT d s p e
413+ where
414+@@ -772,7 +881,8 @@ Right Fix is to take advantage of join points as goto-labels.
415+ -- 4. Otherwise, it must be a function call. Push the args
416+ -- right to left, SLIDE and ENTER.
417+
418+-schemeT :: StackDepth -- Stack depth
419++schemeT :: HasDebugCallStack
420++ => StackDepth -- Stack depth
421+ -> Sequel -- Sequel depth
422+ -> BCEnv -- stack env
423+ -> AnnExpr' Id DVarSet
424+@@ -795,11 +905,12 @@ schemeT d s p app
425+ | Just con <- maybe_saturated_dcon
426+ , isUnboxedTupleCon con
427+ = case args_r_to_l of
428++ {- special cases should be handled by general now
429+ [arg1,arg2] | isVAtom arg1 ->
430+ unboxedTupleReturn d s p arg2
431+ [arg1,arg2] | isVAtom arg2 ->
432+- unboxedTupleReturn d s p arg1
433+- _other -> multiValException
434++ unboxedTupleReturn d s p arg1 -}
435++ other -> genericUnboxedTupleReturn d s p other
436+
437+ -- Case 3: Ordinary data constructor
438+ | Just con <- maybe_saturated_dcon
439+@@ -832,7 +943,8 @@ schemeT d s p app
440+ -- leaving it on top of the stack
441+
442+ mkConAppCode
443+- :: StackDepth
444++ :: HasDebugCallStack
445++ => StackDepth
446+ -> Sequel
447+ -> BCEnv
448+ -> DataCon -- The data constructor
449+@@ -883,14 +995,22 @@ mkConAppCode orig_d _ p con args_r_to_l =
450+ -- returned, even if it is a pointed type. We always just return.
451+
452+ unboxedTupleReturn
453+- :: StackDepth -> Sequel -> BCEnv -> AnnExpr' Id DVarSet -> BcM BCInstrList
454++ :: HasDebugCallStack => StackDepth -> Sequel -> BCEnv -> AnnExpr' Id DVarSet -> BcM BCInstrList
455+ unboxedTupleReturn d s p arg = returnUnboxedAtom d s p arg (atomRep arg)
456+
457++genericUnboxedTupleReturn
458++ :: HasDebugCallStack => StackDepth -> Sequel -> BCEnv -> [AnnExpr' Id DVarSet] -> BcM BCInstrList
459++genericUnboxedTupleReturn d s p args =
460++ returnUnboxedAtomT d s p args (map atomRep args)
461++ -- panic "genericUnboxedTupleReturn"
462++
463++
464+ -- -----------------------------------------------------------------------------
465+ -- Generate code for a tail-call
466+
467+ doTailCall
468+- :: StackDepth
469++ :: HasDebugCallStack
470++ => StackDepth
471+ -> Sequel
472+ -> BCEnv
473+ -> Id
474+@@ -951,7 +1071,8 @@ findPushSeq _
475+ -- Case expressions
476+
477+ doCase
478+- :: StackDepth
479++ :: HasDebugCallStack
480++ => StackDepth
481+ -> Sequel
482+ -> BCEnv
483+ -> AnnExpr Id DVarSet
484+@@ -961,9 +1082,6 @@ doCase
485+ -- don't enter the result
486+ -> BcM BCInstrList
487+ doCase d s p (_,scrut) bndr alts is_unboxed_tuple
488+- | typePrimRep (idType bndr) `lengthExceeds` 1
489+- = multiValException
490+- | otherwise
491+ = do
492+ dflags <- getDynFlags
493+ let
494+@@ -982,6 +1100,7 @@ doCase d s p (_,scrut) bndr alts is_unboxed_tuple
495+ save_ccs_size_b | profiling = 2 * wordSize dflags
496+ | otherwise = 0
497+
498++ bndr_size = wordsToBytes dflags (idSizeW dflags bndr)
499+ -- An unlifted value gets an extra info table pushed on top
500+ -- when it is returned.
501+ unlifted_itbl_size_b :: StackDepth
502+@@ -990,7 +1109,7 @@ doCase d s p (_,scrut) bndr alts is_unboxed_tuple
503+
504+ -- depth of stack after the return value has been pushed
505+ d_bndr =
506+- d + ret_frame_size_b + wordsToBytes dflags (idSizeW dflags bndr)
507++ d + ret_frame_size_b + bndr_size -- wordsToBytes dflags (idSizeW dflags bndr)
508+
509+ -- depth of stack after the extra info table for an unboxed return
510+ -- has been pushed, if any. This is the stack depth at the
511+@@ -1018,11 +1137,24 @@ doCase d s p (_,scrut) bndr alts is_unboxed_tuple
512+ | null real_bndrs = do
513+ rhs_code <- schemeE d_alts s p_alts rhs
514+ return (my_discr alt, rhs_code)
515+- -- If an alt attempts to match on an unboxed tuple or sum, we must
516+- -- bail out, as the bytecode compiler can't handle them.
517+- -- (See Trac #14608.)
518+- | any (\bndr -> typePrimRep (idType bndr) `lengthExceeds` 1) bndrs
519+- = multiValException
520++ | isUnboxedTupleType bndr_ty =
521++ let (tot_wds, _ptrs_wds, args_offsets) =
522++ mkVirtHeapOffsets dflags NoHeader
523++ [ NonVoid (bcIdPrimRep id, id)
524++ | NonVoid id <- nonVoidIds real_bndrs
525++ ]
526++
527++ stack_bot = d_alts -- + wordsToBytes platform size
528++ tuple_start = d_bndr -- stack_bot - wordsToBytes platform (WordOff tot_wds + 1)
529++
530++ p' = Map.insertList
531++ [ (arg, tuple_start - ByteOff offset)
532++ | (NonVoid arg, offset) <- args_offsets ]
533++ p_alts
534++ in do
535++ traceCBC ("ubx tup cont: " ++ show (stack_bot,tuple_start,tot_wds) ++ "\n" ++ show args_offsets)
536++ rhs_code <- schemeE stack_bot s p' rhs
537++ return (NoDiscr, rhs_code)
538+ -- algebraic alt with some binders
539+ | otherwise =
540+ let (tot_wds, _ptrs_wds, args_offsets) =
541+@@ -1050,7 +1182,7 @@ doCase d s p (_,scrut) bndr alts is_unboxed_tuple
542+ my_discr (DEFAULT, _, _) = NoDiscr {-shouldn't really happen-}
543+ my_discr (DataAlt dc, _, _)
544+ | isUnboxedTupleCon dc || isUnboxedSumCon dc
545+- = multiValException
546++ = NoDiscr
547+ | otherwise
548+ = DiscrP (fromIntegral (dataConTag dc - fIRST_TAG))
549+ my_discr (LitAlt l, _, _)
550+@@ -1092,7 +1224,8 @@ doCase d s p (_,scrut) bndr alts is_unboxed_tuple
551+ -- NB: unboxed tuple cases bind the scrut binder to the same offset
552+ -- as one of the alt binders, so we have to remove any duplicates here:
553+ rel_slots = nub $ map fromIntegral $ concat (map spread binds)
554+- spread (id, offset) | isFollowableArg (bcIdArgRep id) = [ rel_offset ]
555++ spread (id, offset) | isUnboxedTupleType (idType id) = []
556++ | isFollowableArg (bcIdArgRep id) = [ rel_offset ]
557+ | otherwise = []
558+ where rel_offset = trunc16W $ bytesToWords dflags (d - offset)
559+
560+@@ -1103,8 +1236,14 @@ doCase d s p (_,scrut) bndr alts is_unboxed_tuple
561+ alt_bco_name = getName bndr
562+ alt_bco = mkProtoBCO dflags alt_bco_name alt_final (Left alts)
563+ 0{-no arity-} bitmap_size bitmap True{-is alts-}
564+--- trace ("case: bndr = " ++ showSDocDebug (ppr bndr) ++ "\ndepth = " ++ show d ++ "\nenv = \n" ++ showSDocDebug (ppBCEnv p) ++
565+--- "\n bitmap = " ++ show bitmap) $ do
566++ traceCBC (
567++ "case: bndr = " ++ showSDocDebug dflags (ppr bndr) ++
568++ "\nbndr_size = " ++ show bndr_size ++
569++ "\ndepth = " ++ show d ++
570++ "\nenv = \n" ++ showSDocDebug dflags (ppBCEnv p) ++
571++ "\n bitmap = " ++ show bitmap ++
572++ "\n ret_frame_size = " ++ show ret_frame_size_b
573++ )
574+
575+ scrut_code <- schemeE (d + ret_frame_size_b + save_ccs_size_b)
576+ (d + ret_frame_size_b + save_ccs_size_b)
577+@@ -1112,7 +1251,7 @@ doCase d s p (_,scrut) bndr alts is_unboxed_tuple
578+ alt_bco' <- emitBc alt_bco
579+ let push_alts
580+ | isAlgCase = PUSH_ALTS alt_bco'
581+- | otherwise = PUSH_ALTS_UNLIFTED alt_bco' (typeArgRep bndr_ty)
582++ | otherwise = PUSH_ALTS_UNLIFTED alt_bco' (typeArgReps bndr_ty)
583+ return (push_alts `consOL` scrut_code)
584+
585+
586+@@ -1328,7 +1467,7 @@ generateCCall d0 s p (CCallSpec target cconv safety) fn args_r_to_l
587+ -- slide and return
588+ d_after_r_min_s = bytesToWords dflags (d_after_r - s)
589+ wrapup = mkSlideW (trunc16W r_sizeW) (d_after_r_min_s - r_sizeW)
590+- `snocOL` RETURN_UBX (toArgRep r_rep)
591++ `snocOL` RETURN_UBX [toArgRep r_rep]
592+ --trace (show (arg1_offW, args_offW , (map argRepSizeW a_reps) )) $
593+ return (
594+ push_args `appOL`
595+@@ -1461,7 +1600,8 @@ a 1-word null. See Trac #8383.
596+
597+
598+ implement_tagToId
599+- :: StackDepth
600++ :: HasDebugCallStack
601++ => StackDepth
602+ -> Sequel
603+ -> BCEnv
604+ -> AnnExpr' Id DVarSet
605+@@ -1512,7 +1652,7 @@ implement_tagToId d s p arg names
606+ -- depth 6 stack has valid words 0 .. 5.
607+
608+ pushAtom
609+- :: StackDepth -> BCEnv -> AnnExpr' Id DVarSet -> BcM (BCInstrList, ByteOff)
610++ :: HasDebugCallStack => StackDepth -> BCEnv -> AnnExpr' Id DVarSet -> BcM (BCInstrList, ByteOff)
611+ pushAtom d p e
612+ | Just e' <- bcView e
613+ = pushAtom d p e'
614+@@ -1608,7 +1748,7 @@ pushAtom _ _ expr
615+ -- This is slightly different to @pushAtom@ due to the fact that we allow
616+ -- packing constructor fields. See also @mkConAppCode@ and @pushPadding@.
617+ pushConstrAtom
618+- :: StackDepth -> BCEnv -> AnnExpr' Id DVarSet -> BcM (BCInstrList, ByteOff)
619++ :: HasDebugCallStack => StackDepth -> BCEnv -> AnnExpr' Id DVarSet -> BcM (BCInstrList, ByteOff)
620+
621+ pushConstrAtom _ _ (AnnLit lit@(LitFloat _)) =
622+ return (unitOL (PUSH_UBX32 lit), 4)
623+@@ -1628,7 +1768,7 @@ pushConstrAtom d p (AnnVar v)
624+
625+ pushConstrAtom d p expr = pushAtom d p expr
626+
627+-pushPadding :: Int -> (BCInstrList, ByteOff)
628++pushPadding :: HasDebugCallStack => Int -> (BCInstrList, ByteOff)
629+ pushPadding !n = go n (nilOL, 0)
630+ where
631+ go n acc@(!instrs, !off) = case n of
632+@@ -1644,7 +1784,8 @@ pushPadding !n = go n (nilOL, 0)
633+ -- of making a multiway branch using a switch tree.
634+ -- What a load of hassle!
635+
636+-mkMultiBranch :: Maybe Int -- # datacons in tycon, if alg alt
637++mkMultiBranch :: HasDebugCallStack
638++ => Maybe Int -- # datacons in tycon, if alg alt
639+ -- a hint; generates better code
640+ -- Nothing is always safe
641+ -> [(Discr, BCInstrList)]
642+@@ -1780,22 +1921,30 @@ instance Outputable Discr where
643+ lookupBCEnv_maybe :: Id -> BCEnv -> Maybe ByteOff
644+ lookupBCEnv_maybe = Map.lookup
645+
646+-idSizeW :: DynFlags -> Id -> WordOff
647+-idSizeW dflags = WordOff . argRepSizeW dflags . bcIdArgRep
648++idSizeW :: HasDebugCallStack => DynFlags -> Id -> WordOff
649++idSizeW platform = WordOff . sum . map (argRepSizeW platform) . bcIdArgReps
650+
651+-idSizeCon :: DynFlags -> Id -> ByteOff
652+-idSizeCon dflags = ByteOff . primRepSizeB dflags . bcIdPrimRep
653++-- fixme this doesn't widen stuff to word width
654++idSizeCon :: HasDebugCallStack => DynFlags -> Id -> ByteOff
655++-- idSizeCon dflags = ByteOff . primRepSizeB dflags . bcIdPrimRep
656++idSizeCon dflags = ByteOff . sum . map (primRepSizeB dflags) . bcIdPrimReps
657+
658+-bcIdArgRep :: Id -> ArgRep
659++bcIdArgRep :: HasDebugCallStack => Id -> ArgRep
660+ bcIdArgRep = toArgRep . bcIdPrimRep
661+
662+-bcIdPrimRep :: Id -> PrimRep
663++bcIdPrimRep :: HasDebugCallStack => Id -> PrimRep
664+ bcIdPrimRep id
665+ | [rep] <- typePrimRepArgs (idType id)
666+ = rep
667+ | otherwise
668+ = pprPanic "bcIdPrimRep" (ppr id <+> dcolon <+> ppr (idType id))
669+
670++bcIdArgReps :: HasDebugCallStack => Id -> [ArgRep]
671++bcIdArgReps = map toArgRep . bcIdPrimReps
672++
673++bcIdPrimReps :: HasDebugCallStack => Id -> [PrimRep]
674++bcIdPrimReps id = typePrimRepArgs (idType id)
675++
676+ repSizeWords :: DynFlags -> PrimRep -> WordOff
677+ repSizeWords dflags rep = WordOff $ argRepSizeW dflags (toArgRep rep)
678+
679+@@ -1808,8 +1957,9 @@ isVoidArg V = True
680+ isVoidArg _ = False
681+
682+ -- See bug #1257
683+-multiValException :: a
684+-multiValException = throwGhcException (ProgramError
685++multiValException :: HasCallStack => a
686++multiValException = -- throwGhcException (ProgramError
687++ pprPanic "multiValException" (text
688+ ("Error: bytecode compiler can't handle unboxed tuples and sums.\n"++
689+ " Possibly due to foreign import/export decls in source.\n"++
690+ " Workaround: use -fobject-code, or compile this module to .o separately."))
691+@@ -1857,7 +2007,7 @@ splitApp (AnnApp (_,f) (_,a)) = case splitApp f of
692+ splitApp e = (e, [])
693+
694+
695+-bcView :: AnnExpr' Var ann -> Maybe (AnnExpr' Var ann)
696++bcView :: HasDebugCallStack => AnnExpr' Var ann -> Maybe (AnnExpr' Var ann)
697+ -- The "bytecode view" of a term discards
698+ -- a) type abstractions
699+ -- b) type applications
700+@@ -1878,7 +2028,7 @@ isVAtom (AnnVar v) = isVoidArg (bcIdArgRep v)
701+ isVAtom (AnnCoercion {}) = True
702+ isVAtom _ = False
703+
704+-atomPrimRep :: AnnExpr' Id ann -> PrimRep
705++atomPrimRep :: HasDebugCallStack => AnnExpr' Id ann -> PrimRep
706+ atomPrimRep e | Just e' <- bcView e = atomPrimRep e'
707+ atomPrimRep (AnnVar v) = bcIdPrimRep v
708+ atomPrimRep (AnnLit l) = typePrimRep1 (literalType l)
709+@@ -1890,7 +2040,7 @@ atomPrimRep (AnnCase _ _ ty _) = ASSERT(typePrimRep ty == [LiftedRep]) Lift
710+ atomPrimRep (AnnCoercion {}) = VoidRep
711+ atomPrimRep other = pprPanic "atomPrimRep" (ppr (deAnnotate' other))
712+
713+-atomRep :: AnnExpr' Id ann -> ArgRep
714++atomRep :: HasDebugCallStack => AnnExpr' Id ann -> ArgRep
715+ atomRep e = toArgRep (atomPrimRep e)
716+
717+ -- | Let szsw be the sizes in bytes of some items pushed onto the stack, which
718+@@ -1899,9 +2049,13 @@ atomRep e = toArgRep (atomPrimRep e)
719+ mkStackOffsets :: ByteOff -> [ByteOff] -> [ByteOff]
720+ mkStackOffsets original_depth szsb = tail (scanl' (+) original_depth szsb)
721+
722+-typeArgRep :: Type -> ArgRep
723++typeArgRep :: HasDebugCallStack => Type -> ArgRep
724+ typeArgRep = toArgRep . typePrimRep1
725+
726++typeArgReps :: HasDebugCallStack => Type -> [ArgRep]
727++typeArgReps = map toArgRep . typePrimRepArgs -- typePrimRepArgs (idType id)
728++
729++
730+ -- -----------------------------------------------------------------------------
731+ -- The bytecode generator's monad
732+
733+diff --git a/compiler/ghci/ByteCodeInstr.hs b/compiler/ghci/ByteCodeInstr.hs
734+index d405e1ade7..debe4672e4 100644
735+--- a/compiler/ghci/ByteCodeInstr.hs
736++++ b/compiler/ghci/ByteCodeInstr.hs
737+@@ -86,7 +86,7 @@ data BCInstr
738+
739+ -- Push an alt continuation
740+ | PUSH_ALTS (ProtoBCO Name)
741+- | PUSH_ALTS_UNLIFTED (ProtoBCO Name) ArgRep
742++ | PUSH_ALTS_UNLIFTED (ProtoBCO Name) [ArgRep]
743+
744+ -- Pushing 8, 16 and 32 bits of padding (for constructors).
745+ | PUSH_PAD8
746+@@ -169,8 +169,8 @@ data BCInstr
747+
748+ -- To Infinity And Beyond
749+ | ENTER
750+- | RETURN -- return a lifted value
751+- | RETURN_UBX ArgRep -- return an unlifted value, here's its rep
752++ | RETURN -- return a lifted value
753++ | RETURN_UBX [ArgRep] -- return an unlifted value, here's its rep
754+
755+ -- Breakpoints
756+ | BRK_FUN Word16 Unique (RemotePtr CostCentre)
757+diff --git a/includes/rts/Bytecodes.h b/includes/rts/Bytecodes.h
758+index e5d55f694f..c42476a201 100644
759+--- a/includes/rts/Bytecodes.h
760++++ b/includes/rts/Bytecodes.h
761+@@ -91,6 +91,9 @@
762+ #define bci_BRK_FUN 66
763+ #define bci_TESTLT_W 67
764+ #define bci_TESTEQ_W 68
765++
766++#define bci_RETURN_T 70
767++#define bci_PUSH_ALTS_T 71
768+ /* If you need to go past 255 then you will run into the flags */
769+
770+ /* If you need to go below 0x0100 then you will run into the instructions */
771+diff --git a/includes/stg/MiscClosures.h b/includes/stg/MiscClosures.h
772+index 8c4cb9fc8c..ee4c990ca8 100644
773+--- a/includes/stg/MiscClosures.h
774++++ b/includes/stg/MiscClosures.h
775+@@ -86,6 +86,18 @@ RTS_RET(stg_ctoi_F1);
776+ RTS_RET(stg_ctoi_D1);
777+ RTS_RET(stg_ctoi_L1);
778+ RTS_RET(stg_ctoi_V);
779++RTS_RET(stg_ctoi_T);
780++
781++RTS_RET(stg_save_R1_p);
782++RTS_RET(stg_save_R2_p);
783++RTS_RET(stg_save_R3_p);
784++RTS_RET(stg_save_R1_n);
785++RTS_RET(stg_save_R2_n);
786++RTS_RET(stg_save_R3_n);
787++RTS_RET(stg_save_D1);
788++RTS_RET(stg_save_D2);
789++RTS_RET(stg_save_F1);
790++RTS_RET(stg_save_F2);
791+
792+ RTS_RET(stg_apply_interp);
793+
794+diff --git a/rts/Disassembler.c b/rts/Disassembler.c
795+index 01d6c3b1d9..1afbe0aea2 100644
796+--- a/rts/Disassembler.c
797++++ b/rts/Disassembler.c
798+@@ -148,6 +148,13 @@ disInstr ( StgBCO *bco, int pc )
799+ debugBelch("PUSH_ALTS_V " ); printPtr( ptrs[instrs[pc]] );
800+ debugBelch("\n");
801+ pc += 1; break;
802++ case bci_PUSH_ALTS_T:
803++ // fixme final size of instruction
804++ debugBelch("PUSH_ALTS_T "); printPtr( ptrs[instrs[pc]] );
805++ debugBelch(" %d ", instrs[pc+1]);
806++ printTupleSig(literals[instrs[pc+2]]);
807++ debugBelch("\n");
808++ pc += 3; break;
809+ case bci_PUSH_PAD8:
810+ debugBelch("PUSH_PAD8\n");
811+ pc += 1; break;
812+@@ -313,7 +320,14 @@ disInstr ( StgBCO *bco, int pc )
813+ case bci_RETURN_V:
814+ debugBelch("RETURN_V\n" );
815+ break;
816+-
817++ case bci_RETURN_T:
818++ // fixme update for final size of return_t instr
819++ // fixme indirection to literals?
820++ debugBelch("RETURN_T %d ", instrs[pc]);
821++ printTupleSig( literals[instrs[pc+1]] );
822++ debugBelch("\n");
823++ pc += 2;
824++ break;
825+ default:
826+ barf("disInstr: unknown opcode %u", (unsigned int) instr);
827+ }
828+diff --git a/rts/Interpreter.c b/rts/Interpreter.c
829+index 2d68a1ce3a..91ac83c445 100644
830+--- a/rts/Interpreter.c
831++++ b/rts/Interpreter.c
832+@@ -364,6 +364,10 @@ interpretBCO (Capability* cap)
833+ // do_return_unboxed, below.
834+ //
835+ else {
836++ IF_DEBUG(interpreter,
837++ debugBelch("warning: do_return_unboxed unhandled case\n");
838++ );
839++
840+ goto do_return_unboxed;
841+ }
842+
843+@@ -673,35 +677,71 @@ do_return:
844+
845+ do_return_unboxed:
846+ {
847++ // debugBelch("returning unboxed\n");
848+ int offset;
849+-
850+- ASSERT( SpW(0) == (W_)&stg_ret_v_info
851++ int ubx_tup;
852++ if(SpW(0) == (W_)&stg_ret_v_info
853+ || SpW(0) == (W_)&stg_ret_p_info
854+ || SpW(0) == (W_)&stg_ret_n_info
855+ || SpW(0) == (W_)&stg_ret_f_info
856+ || SpW(0) == (W_)&stg_ret_d_info
857+ || SpW(0) == (W_)&stg_ret_l_info
858+- );
859++ ) {
860++ IF_DEBUG(interpreter,
861++ debugBelch("normal unboxed return\n");
862++ );
863++ ubx_tup = 0;
864++ } else {
865++ ubx_tup = SpW(0);
866++ IF_DEBUG(interpreter,
867++ debugBelch("tuple unboxed return size %d\n", ubx_tup);
868++ );
869++ }
870+
871+ IF_DEBUG(interpreter,
872+ debugBelch(
873+ "\n---------------------------------------------------------------\n");
874+- debugBelch("Returning: "); printObj(obj);
875++ debugBelch("Returning unboxed x: "); // printObj(obj);
876+ debugBelch("Sp = %p\n", Sp);
877+ #if defined(PROFILING)
878+ fprintCCS(stderr, cap->r.rCCCS);
879+ debugBelch("\n");
880+ #endif
881+ debugBelch("\n");
882+- printStackChunk(Sp,cap->r.rCurrentTSO->stackobj->stack+cap->r.rCurrentTSO->stackobj->stack_size);
883++ debugBelch("printing stack chunk\n");
884++ if(!ubx_tup) {
885++ printStackChunk(Sp,cap->r.rCurrentTSO->stackobj->stack+cap->r.rCurrentTSO->stackobj->stack_size);
886++ }
887+ debugBelch("\n\n");
888+ );
889+
890++ IF_DEBUG(interpreter,
891++ debugBelch("before offset\n");
892++ );
893++
894+ // get the offset of the stg_ctoi_ret_XXX itbl
895+- offset = stack_frame_sizeW((StgClosure *)Sp);
896++ // fixme changed to after return!
897++ if(ubx_tup) {
898++ offset = ubx_tup + 1;
899++ } else {
900++ offset = stack_frame_sizeW((StgClosure *)Sp);
901++ }
902++ /* if(bci == bci_RETURN_T) {
903++ debugBelch("unboxed tuple, adjusting offset\n");
904++ offset = 0;
905++ } */
906++ // yeah it crashes here
907++ IF_DEBUG(interpreter,
908++ debugBelch("offset: %d\n", offset);
909++ );
910++
911+
912+ switch (get_itbl((StgClosure*)(Sp_plusW(offset)))->type) {
913+
914++ IF_DEBUG(interpreter,
915++ debugBelch("got itable\n");
916++ );
917++
918+ case RET_BCO:
919+ // Returning to an interpreted continuation: put the object on
920+ // the stack, and start executing the BCO.
921+@@ -988,16 +1028,16 @@ run_BCO:
922+ ASSERT(bciPtr < bcoSize);
923+ IF_DEBUG(interpreter,
924+ //if (do_print_stack) {
925+- //debugBelch("\n-- BEGIN stack\n");
926+- //printStack(Sp,cap->r.rCurrentTSO->stack+cap->r.rCurrentTSO->stack_size,iSu);
927+- //debugBelch("-- END stack\n\n");
928++ // debugBelch("\n-- BEGIN stack\n");
929++ // printStack(Sp,cap->r.rCurrentTSO->stack+cap->r.rCurrentTSO->stack_size,iSu);
930++ // debugBelch("-- END stack\n\n");
931+ //}
932+ debugBelch("Sp = %p pc = %-4d ", Sp, bciPtr);
933+ disInstr(bco,bciPtr);
934+- if (0) { int i;
935++ if (1) { int i;
936+ debugBelch("\n");
937+- for (i = 8; i >= 0; i--) {
938+- debugBelch("%d %p\n", i, (void *) SpW(i));
939++ for (i = 42; i >= 0; i--) {
940++ debugBelch("%d %p (%ld)\n", i, (void *) SpW(i), SpW(i));
941+ }
942+ debugBelch("\n");
943+ }
944+@@ -1326,6 +1366,22 @@ run_BCO:
945+ goto nextInsn;
946+ }
947+
948++ case bci_PUSH_ALTS_T: {
949++ int o_bco = BCO_GET_LARGE_ARG;
950++ int size = BCO_NEXT;
951++ char* lit = literals[BCO_GET_LARGE_ARG];
952++ /* fixme push shape on stack? */
953++ SpW(-2) = (W_)&stg_ctoi_T_info; /* fixme */
954++ SpW(-1) = BCO_PTR(o_bco);
955++ Sp_subW(2);
956++#if defined(PROFILING)
957++ Sp_subW(2);
958++ SpW(1) = (W_)cap->r.rCCCS;
959++ SpW(0) = (W_)&stg_restore_cccs_info;
960++#endif
961++ goto nextInsn;
962++ }
963++
964+ case bci_PUSH_APPLY_N:
965+ Sp_subW(1); SpW(0) = (W_)&stg_ap_n_info;
966+ goto nextInsn;
967+@@ -1705,6 +1761,16 @@ run_BCO:
968+ Sp_subW(1);
969+ SpW(0) = (W_)&stg_ret_v_info;
970+ goto do_return_unboxed;
971++ case bci_RETURN_T: {
972++ // fixme should we fix to large args for tuples if needed?
973++ int size = BCO_NEXT; // BCO_GET_LARGE_ARG;
974++ char* shape = literals[BCO_GET_LARGE_ARG];
975++ // debugBelch("returning unboxed tup size: %d\n", size);
976++ Sp_subW(1);
977++ SpW(0) = size; // fixme have proper frame here
978++ // Sp_addW(size);
979++ goto do_return_unboxed;
980++ }
981+
982+ case bci_SWIZZLE: {
983+ int stkoff = BCO_NEXT;
984+diff --git a/rts/Printer.c b/rts/Printer.c
985+index 291f529e8f..56380f0b26 100644
986+--- a/rts/Printer.c
987++++ b/rts/Printer.c
988+@@ -646,6 +646,20 @@ void printTSO( StgTSO *tso )
989+ printStack( tso->stackobj );
990+ }
991+
992++
993++void printTupleSig ( const unsigned char* sig)
994++{
995++ const char* arg_tys = "_PNLFD";
996++ const char* loc_tys = "_SRFDLXYZ";
997++ while(*sig) {
998++ int arg_ty = (int)sig[0];
999++ int loc_ty = (int)sig[1];
1000++ int off = (int)sig[2];
1001++ debugBelch("%c%c%d ", arg_tys[arg_ty], loc_tys[loc_ty], off);
1002++ sig += 3;
1003++ }
1004++}
1005++
1006+ /* --------------------------------------------------------------------------
1007+ * Address printing code
1008+ *
1009+diff --git a/rts/Printer.h b/rts/Printer.h
1010+index d2eaf010c6..5f571b3f17 100644
1011+--- a/rts/Printer.h
1012++++ b/rts/Printer.h
1013+@@ -12,7 +12,6 @@
1014+
1015+ extern void printPtr ( StgPtr p );
1016+ extern void printObj ( StgClosure *obj );
1017+-
1018+ extern const char * closure_type_names[];
1019+
1020+ void info_hdr_type ( const StgClosure *closure, char *res );
1021+diff --git a/rts/StgMiscClosures.cmm b/rts/StgMiscClosures.cmm
1022+index e80ce45172..50b47771ad 100644
1023+--- a/rts/StgMiscClosures.cmm
1024++++ b/rts/StgMiscClosures.cmm
1025+@@ -195,6 +195,102 @@ INFO_TABLE_RET( stg_ctoi_V, RET_BCO )
1026+ jump stg_yield_to_interpreter [];
1027+ }
1028+
1029++/*
1030++ * When the returned value is an unboxed tuple
1031++ */
1032++INFO_TABLE_RET( stg_ctoi_T, RET_BCO )
1033++ /* explicit stack */
1034++{
1035++ Sp_adj(-1);
1036++ jump stg_yield_to_interpreter [];
1037++}
1038++
1039++INFO_TABLE_RET ( stg_save_R1_p, RET_BCO )
1040++{
1041++ Sp(1) = R1;
1042++ Sp(0) = stg_ret_p_info;
1043++ Sp_adj(2);
1044++ jump %ENTRY_CODE(Sp(0)) [*];
1045++}
1046++
1047++INFO_TABLE_RET ( stg_save_R2_p, RET_BCO )
1048++{
1049++ Sp(1) = R1;
1050++ Sp(0) = stg_ret_p_info;
1051++ Sp_adj(2);
1052++ jump %ENTRY_CODE(Sp(0)) [*];
1053++
1054++}
1055++
1056++INFO_TABLE_RET ( stg_save_R3_p, RET_BCO )
1057++{
1058++ Sp(1) = R1;
1059++ Sp(0) = stg_ret_p_info;
1060++ Sp_adj(2);
1061++ jump %ENTRY_CODE(Sp(0)) [*];
1062++}
1063++
1064++INFO_TABLE_RET ( stg_save_R1_n, RET_BCO )
1065++{
1066++ Sp(1) = R1;
1067++ Sp(0) = stg_ret_n_info;
1068++ Sp_adj(2);
1069++ jump %ENTRY_CODE(Sp(0)) [*];
1070++}
1071++
1072++INFO_TABLE_RET ( stg_save_R2_n, RET_BCO )
1073++{
1074++ Sp(1) = R1;
1075++ Sp(0) = stg_ret_n_info;
1076++ Sp_adj(2);
1077++ jump %ENTRY_CODE(Sp(0)) [*];
1078++
1079++}
1080++
1081++INFO_TABLE_RET ( stg_save_R3_n, RET_BCO )
1082++{
1083++ Sp(1) = R1;
1084++ Sp(0) = stg_ret_n_info;
1085++ Sp_adj(2);
1086++ jump %ENTRY_CODE(Sp(0)) [*];
1087++}
1088++
1089++INFO_TABLE_RET ( stg_save_D1, RET_BCO )
1090++{
1091++ // check offset for 64 bit
1092++ // Sp_adj(-1) - SIZEOF_DOUBLE;
1093++
1094++ D_[Sp + WDS(1)] = D1;
1095++ Sp(0) = stg_ret_d_info;
1096++ Sp_adj(2);
1097++ jump %ENTRY_CODE(Sp(0)) [*];
1098++}
1099++
1100++INFO_TABLE_RET ( stg_save_D2, RET_BCO )
1101++{
1102++ D_[Sp + WDS(1)] = D2;
1103++ Sp(0) = stg_ret_d_info;
1104++ Sp_adj(2);
1105++ jump %ENTRY_CODE(Sp(0)) [*];
1106++}
1107++
1108++INFO_TABLE_RET ( stg_save_F1, RET_BCO )
1109++{
1110++ F_[Sp + WDS(1)] = F1;
1111++ Sp(0) = stg_ret_f_info;
1112++ Sp_adj(2);
1113++ jump %ENTRY_CODE(Sp(0)) [*];
1114++}
1115++
1116++INFO_TABLE_RET ( stg_save_F2, RET_BCO )
1117++{
1118++ F_[Sp + WDS(1)] = F2;
1119++ Sp(0) = stg_ret_f_info;
1120++ Sp_adj(2);
1121++ jump %ENTRY_CODE(Sp(0)) [*];
1122++}
1123++
1124++
1125+ /*
1126+ * Dummy info table pushed on the top of the stack when the interpreter
1127+ * should apply the BCO on the stack to its arguments, also on the
overlays/patches/ghc/noinline-set-bit-if.patchnew file+12
@@ -0,0 +1,12 @@
1+diff --git a/compiler/parser/Lexer.hs b/compiler/parser/Lexer.hs
2+index 2ada289db4..625a78c425 100644
3+--- a/compiler/parser/Lexer.hs
4++++ b/compiler/parser/Lexer.hs
5+@@ -2429,6 +2429,7 @@ mkParserFlags' warningFlags extensionFlags thisPackage
6+
7+ xoptBit bit ext = bit `setBitIf` EnumSet.member ext extensionFlags
8+
9++ {-# NOINLINE setBitIf #-}
10+ setBitIf :: ExtBits -> Bool -> ExtsBitmap
11+ b `setBitIf` cond | cond = xbit b
12+ | otherwise = 0
snapshots.nix+1−1
@@ -12,7 +12,7 @@ with lib;
12
12
13let
13let
14 mkSnapshot = name: pkg-def: (let pkgSet = mkPkgSet {
14 mkSnapshot = name: pkg-def: (let pkgSet = mkPkgSet {
15− pkg-def = excludeBootPackages pkg-def;
15+ pkg-def = excludeBootPackages null pkg-def;
16 # ghc-boot-packages are needed for the reinstallable ghc library and
16 # ghc-boot-packages are needed for the reinstallable ghc library and
17 # are constructed from the patched ghc source.
17 # are constructed from the patched ghc source.
18 pkg-def-extras = (pkg-def-extras name)
18 pkg-def-extras = (pkg-def-extras name)
test/default.nix+1−1
@@ -184,7 +184,7 @@ let
184 coverage = callTest ./coverage { inherit compiler-nix-name; };
184 coverage = callTest ./coverage { inherit compiler-nix-name; };
185
185
186 unit = unitTests;
186 unit = unitTests;
187− } // lib.optionalAttrs (!stdenv.hostPlatform.isGhcjs && compiler-nix-name != "ghc8101" && compiler-nix-name != "ghc8102" ) {
187+ } // lib.optionalAttrs (!stdenv.hostPlatform.isGhcjs && compiler-nix-name != "ghc8101" && compiler-nix-name != "ghc8102" && compiler-nix-name != "ghc8102-experimental" ) {
188 # Pandoc does not build with ghcjs or ghc 8.10 yet (lookup-sha256 and fully-static build pandoc)
188 # Pandoc does not build with ghcjs or ghc 8.10 yet (lookup-sha256 and fully-static build pandoc)
189 lookup-sha256 = callTest ./lookup-sha256 { inherit compiler-nix-name; };
189 lookup-sha256 = callTest ./lookup-sha256 { inherit compiler-nix-name; };
190 fully-static = callTest ./fully-static { inherit (pkgs) buildPackages; };
190 fully-static = callTest ./fully-static { inherit (pkgs) buildPackages; };
test/haskell-language-server/cabal.nix+2−2
@@ -5,8 +5,8 @@ let
5 src = evalPackages.fetchgit {
5 src = evalPackages.fetchgit {
6 url = "https://github.com/haskell/haskell-language-server.git";
6 url = "https://github.com/haskell/haskell-language-server.git";
7 fetchSubmodules = true;
7 fetchSubmodules = true;
8− rev = "c966e6f8b7be1ec7ca8dc5084fe7f2e6432c50f0";
8+ rev = "e390da54a90f2c6c02ce836a27f2d4c33a71f607";
9− sha256 = "1msjprk4g5v7aqpaa8zg34q999yxz0hg7zavc8a89p7yczss9h28";
9+ sha256 = "0s77r79zn6q42k3biylni81vhn1yr8r1mqn8pj9kgggh16xw229b";
10 };
10 };
11 projectFileName = "cabal.project";
11 projectFileName = "cabal.project";
12 sha256map = {
12 sha256map = {
test/haskell-language-server/stack.nix+3−4
@@ -5,13 +5,12 @@ let
5 src = evalPackages.fetchgit {
5 src = evalPackages.fetchgit {
6 url = "https://github.com/haskell/haskell-language-server.git";
6 url = "https://github.com/haskell/haskell-language-server.git";
7 fetchSubmodules = true;
7 fetchSubmodules = true;
8− rev = "c966e6f8b7be1ec7ca8dc5084fe7f2e6432c50f0";
8+ rev = "e390da54a90f2c6c02ce836a27f2d4c33a71f607";
9− sha256 = "1msjprk4g5v7aqpaa8zg34q999yxz0hg7zavc8a89p7yczss9h28";
9+ sha256 = "0s77r79zn6q42k3biylni81vhn1yr8r1mqn8pj9kgggh16xw229b";
10 };
10 };
11− projectFileName = "stack-${haskell-nix.compiler.${if compiler-nix-name == "ghc8102" then "ghc8101" else compiler-nix-name}.version}.yaml";
11+ projectFileName = "stack-${haskell-nix.compiler.${compiler-nix-name}.version}.yaml";
12 modules = [{ config.compiler.nix-name = lib.mkForce compiler-nix-name; }];
12 modules = [{ config.compiler.nix-name = lib.mkForce compiler-nix-name; }];
13 sha256map = {
13 sha256map = {
14− "https://github.com/DanielG/cabal-helper.git"."79a5608778493bf32e74b54bbf1ea2729941e50f" = "1jsiwg94yy8pwhzi3z6ayja9qdgf7fl6xn1h9z681j6lhbx225f8";
15 "https://github.com/bubba/brittany.git"."c59655f10d5ad295c2481537fc8abf0a297d9d1c" = "1rkk09f8750qykrmkqfqbh44dbx1p8aq1caznxxlw8zqfvx39cxl";
14 "https://github.com/bubba/brittany.git"."c59655f10d5ad295c2481537fc8abf0a297d9d1c" = "1rkk09f8750qykrmkqfqbh44dbx1p8aq1caznxxlw8zqfvx39cxl";
16 };
15 };
17 };
16 };