.buildkite/pipeline.yml+4−26
@@ -1,6 +1,6 @@
2− - label: 'Run tests with ghc8107'
2+ - label: 'Run tests'
3− command: "./test/tests.sh ghc8107"
3+ command: "./test/tests.sh"
5 system: x86_64-linux
5 system: x86_64-linux
@@ -14,9 +14,9 @@ steps:
15 system: x86_64-linux
15 system: x86_64-linux
17− - label: 'Check closure size with ghc8107'
17+ - label: 'Check closure size'
19− - nix-build build.nix -A maintainer-scripts.check-closure-size --argstr compiler-nix-name ghc8107 -o check-closure-size.sh
19+ - nix-build build.nix -A maintainer-scripts.check-closure-size -o check-closure-size.sh
20 - echo "+++ Closure size (MB)"
20 - echo "+++ Closure size (MB)"
21 - ./check-closure-size.sh
21 - ./check-closure-size.sh
@@ -28,25 +28,3 @@ steps:
28 - ./update-docs.sh
28 - ./update-docs.sh
30 system: x86_64-linux
30 system: x86_64-linux
32− - label: 'Make sure materialize function does not limit concurrency'
34− - nix-build build.nix -A maintainer-scripts.check-materialization-concurrency -o check-materialization-concurrency.sh
35− - ./check-materialization-concurrency.sh
37− - label: 'Make sure non store paths like can be used as src'
39− - nix-build build.nix -A maintainer-scripts.check-path-support --argstr compiler-nix-name ghc8107 -o check-path-support.sh
40− - ./check-path-support.sh
42− - label: 'Check that the haskell.nix roots do not require IFDs'
44− - nix build .#roots.x86_64-linux --option allow-import-from-derivation false
48− - label: 'Check that evaluation of hydra jobs works without using remote builders'
50− - nix-instantiate release.nix -A required-unstable-ghc8107-x86_64-darwin-native --show-trace --builders ''
.buildkite/updates.yml+10−3
@@ -1,14 +1,21 @@
2− - label: 'Update hackage.nix and stackage.nix'
2+ - label: 'Update hackage.nix'
4 - nix-build build.nix -A maintainer-scripts.update-hackage -o update-hackage.sh
4 - nix-build build.nix -A maintainer-scripts.update-hackage -o update-hackage.sh
5 - echo "+++ Updating hackage.nix"
5 - echo "+++ Updating hackage.nix"
6 - ./update-hackage.sh
6 - ./update-hackage.sh
12+ - label: 'Update stackage.nix'
7 - nix-build build.nix -A maintainer-scripts.update-stackage -o update-stackage.sh
14 - nix-build build.nix -A maintainer-scripts.update-stackage -o update-stackage.sh
8 - echo "+++ Updating stackage.nix"
15 - echo "+++ Updating stackage.nix"
9 - ./update-stackage.sh
16 - ./update-stackage.sh
10 artifact_paths:
17 artifact_paths:
11− - "flake.lock"
18+ - "stackage-src.json"
13 system: x86_64-linux
20 system: x86_64-linux
@@ -17,7 +24,7 @@ steps:
18 - label: 'Update pins'
25 - label: 'Update pins'
20− - 'buildkite-agent artifact download "flake.lock" .'
27+ - 'buildkite-agent artifact download "*.json" .'
21 - nix-build build.nix -A maintainer-scripts.update-pins -o update-pins.sh
28 - nix-build build.nix -A maintainer-scripts.update-pins -o update-pins.sh
22 - ./update-pins.sh
29 - ./update-pins.sh
.github/workflows/rebase.yamldeleted−28
@@ -1,28 +0,0 @@
1−name: Rebase on iohk/haskell.nix
9− runs-on: ubuntu-latest
11− - uses: actions/checkout@v2.4.0
14− - name: Rebase and push
16− git config --global user.name "GitHub Actions"
19− git remote add iohk https://github.com/input-output-hk/haskell.nix.git
22− git checkout iko/ghcjs-patch-master
23− git rebase iohk/master
26− git checkout --track origin/master
27− git reset --hard iohk/master
.github/workflows/windows-secp256k1.ymldeleted−51
@@ -1,51 +0,0 @@
1−name: "Test secp256k1 on windows"
5− runs-on: windows-latest
13− - uses: haskell/actions/setup@v1
17− cabal-version: 3.6.2.0
19− - name: Install pkgconfiglite
20− run: choco install -y pkgconfiglite
22− - name: Install libsecp256k1
25− --connect-timeout 5 \
29− --retry-max-time 40 \
30− https://hydra.iohk.io/job/Cardano/haskell-nix/windows-secp256k1/latest/download/1 -o secp256k1.zip
33− unzip ../secp256k1.zip
35− export PKG_CONFIG_PATH="$PKG_CONFIG_PATH;$(readlink -f secp256k1/lib/pkgconfig | sed 's|^/d|D:|g' | tr / '\\')"
36− echo "PKG_CONFIG_PATH=$PKG_CONFIG_PATH"
37− echo "PKG_CONFIG_PATH=$PKG_CONFIG_PATH" >> $GITHUB_ENV
38− export SECP256K1_PATH="$(readlink -f secp256k1/bin | sed 's|^/d|D:|g' | tr / '\\')"
39− echo "SECP256K1_PATH=$SECP256K1_PATH"
40− echo "$SECP256K1_PATH" >> $GITHUB_PATH
45− - name: Build and run haskell-secp256k1 tests
47− cabal unpack secp256k1-haskell
48− cd secp256k1-haskell-*
49− cabal build --enable-tests
@@ -1,55 +1,115 @@
1−# What is this fork?
1+# `haskell.nix` is infrastructure for building Haskell packages with Nix
3−This fork contains a patched version of GHCJS 8.10 which improves performance and memory usage.
3+[](https://buildkite.com/input-output-hk/haskell-dot-nix)
4+[](https://buildkite.com/input-output-hk/haskell-dot-nix-nightly-updates)
5−For more info see this PR: https://github.com/input-output-hk/haskell.nix/pull/1306
6+`haskell.nix` can automatically translate your Cabal or Stack project and
7+its dependencies into Nix code.
7−## Package versions
9+## [Documentation](https://input-output-hk.github.io/haskell.nix/)
9−This branch is updated every day with commits from https://github.com/input-output-hk/haskell.nix/tree/master. This means that it receives all of the updates the initial project does.
11+## Getting started
11−## Caching
13+### a) Using `cabal.project`
13−Building the patched compiler itself takes around 2-3 hours. The [Typeable](https://typeable.io) public nix cache probably has a cached version of the compiler. You can follow these instruction to set it up: [app.cachix.org/organization/typeable/cache/typeable](https://app.cachix.org/organization/typeable/cache/typeable).
15+Add a `default.nix`:
19+ # Fetch the latest haskell.nix and import its default.nix
20+ haskellNix = import (builtins.fetchTarball https://github.com/input-output-hk/haskell.nix/archive/master.tar.gz) {};
17−# `haskell.nix` is infrastructure for building Haskell packages with Nix
22+ # haskell.nix provides access to the nixpkgs pins which are used by our CI, hence
23+ # you will be more likely to get cache hits when using these.
24+ # But you can also just use your own, e.g. '<nixpkgs>'
25+ nixpkgsSrc = haskellNix.sources.nixpkgs-2003;
19−[](https://buildkite.com/input-output-hk/haskell-dot-nix)
27+ # haskell.nix provides some arguments to be passed to nixpkgs, including some patches
20−[](https://buildkite.com/input-output-hk/haskell-dot-nix-nightly-updates)
28+ # and also the haskell.nix functionality itself as an overlay.
29+ nixpkgsArgs = haskellNix.nixpkgsArgs;
31+{ pkgs ? import nixpkgsSrc nixpkgsArgs
32+, haskellCompiler ? "ghc865"
22−`haskell.nix` can automatically translate your Cabal or Stack project and
35+# 'cabalProject' generates a package set based on a cabal.project (and the corresponding .cabal files)
23−its dependencies into Nix code.
36+pkgs.haskell-nix.cabalProject {
37+ # 'cleanGit' cleans a source directory based on the files known by git
38+ src = pkgs.haskell-nix.haskellLib.cleanGit { name = "haskell-nix-project"; src = ./.; };
39+ compiler-nix-name = haskellCompiler;
43+Note that you'll need to add a comment specifying the expected sha256
44+output for your `source-repository-packages` in your `cabal.project`
25−## Documentation
47+```
48+source-repository-package
50+ location: https://github.com/input-output-hk/iohk-monitoring-framework
51+ subdir: plugins/backend-editor
52+ tag: 4956b32f039579a0e7e4fd10793f65b4c77d9044
53+ --sha256: 03lyb2m4i6p7rpjqarnhsx21nx48fwk6rzsrx15k6274a4bv0pix
27−- [Introduction](https://input-output-hk.github.io/haskell.nix/index.html)
56+### b) Using `stack.yaml`
28−- [Getting Started](https://input-output-hk.github.io/haskell.nix/tutorials/getting-started.html)
29−- [Troubleshooting](https://input-output-hk.github.io/haskell.nix/troubleshooting.html)
30−- Explore the documentation from there to find further topics.
32−## Help! Something isn't working
58+Add a `default.nix`:
34−The #1 problem that people have when using `haskell.nix` is that they find themselves building GHC.
60+```nix
35−This should not happen, but you *must* follow the `haskell.nix` setup instructions properly to avoid it.
61+let
36−If you find this happening to you, please check that you have followed the
62+ haskellNix = import (builtins.fetchTarball https://github.com/input-output-hk/haskell.nix/archive/master.tar.gz) {};
37−[getting started instructions](https://input-output-hk.github.io/haskell.nix/tutorials/getting-started.html#setting-up-the-binary-cache) and
63+ nixpkgsSrc = haskellNix.sources.nixpkgs-2003;
38−consult the corresponding [troubleshooting section](https://input-output-hk.github.io/haskell.nix/troubleshooting.html#why-am-i-building-ghc).
64+ nixpkgsArgs = haskellNix.nixpkgsArgs;
66+{ pkgs ? import nixpkgsSrc nixpkgsArgs
68+pkgs.haskell-nix.stackProject {
69+ src = pkgs.haskell-nix.haskellLib.cleanGit { src = ./.; };
40−The troubleshooting documentation also contains some help for other common issues.
73+To build the library component of a package in the project run:
41−Please give it a read before asking on IRC or opening an issue.
74+
76+nix build -f . your-package-name.components.library
79+To build an executable:
82+nix build -f . your-package-name.components.exes.your-exe-name
85+To open a shell for use with `cabal` run:
89+cabal new-build your-package-name
90+cabal new-repl your-package-name:library:your-package-name
93+## Using binary Cache to speed up compilation
95+To use precompiled binaries you'll need:
97+- to configure a binary cache by following instructions on [iohk.cachix.org](https://iohk.cachix.org).
98+- to pin `nixpkgs` according to [nix/sources.json](nix/sources.json).
43−If you're still stuck, join the [#haskell.nix](https://www.irccloud.com/invite?channel=%23haskell.nix&hostname=irc.libera.chat&port=6697&ssl=1) channel on [irc.libera.chat](https://libera.chat/), or open an issue.
45## Related repos
101## Related repos
47The `haskell.nix` repository contains the runtime system for building
103The `haskell.nix` repository contains the runtime system for building
48Haskell packages in Nix. It depends on other repos, which are:
104Haskell packages in Nix. It depends on other repos, which are:
50−- [`nix-tools`](https://github.com/input-output-hk/nix-tools) — provides the programs for generating Nix expressions from Haskell projects.
106+- [nix-tools](https://github.com/input-output-hk/nix-tools) — provides the programs for generating Nix expressions from Haskell projects.
108+- [hackage.nix](https://github.com/input-output-hk/hackage.nix) — the latest contents of the [Hackage](https://hackage.haskell.org/) databases, converted to Nix expressions.
52−- [`hackage.nix`](https://github.com/input-output-hk/hackage.nix) — the latest contents of the [Hackage](https://hackage.haskell.org/) databases, converted to Nix expressions.
110+- [stackage.nix](https://github.com/input-output-hk/stackage.nix) — all of the [Stackage](https://www.stackage.org/) snapshots, converted to Nix expressions.
54−- [`stackage.nix`](https://github.com/input-output-hk/stackage.nix) — all of the [Stackage](https://www.stackage.org/) snapshots, converted to Nix expressions.
112+## IRC Channel
114+Join the [#haskell.nix](https://www.irccloud.com/invite?channel=%23haskell.nix&hostname=irc.freenode.net&port=6697&ssl=1) channel on [irc.freenode.net](https://freenode.net/) to get help or discuss
115+the development of `haskell.nix` and `nix-tools`.
@@ -5,14 +5,10 @@
6 haskellNix = (import ./default.nix {});
6 haskellNix = (import ./default.nix {});
8−{ nixpkgs ? haskellNix.sources.nixpkgs-2111
8+{ nixpkgs ? haskellNix.sources.nixpkgs-default
9, nixpkgsArgs ? haskellNix.nixpkgsArgs
9, nixpkgsArgs ? haskellNix.nixpkgsArgs
10, pkgs ? import nixpkgs nixpkgsArgs
10, pkgs ? import nixpkgs nixpkgsArgs
11−, evalPackages ? import nixpkgs nixpkgsArgs
12−, nixpkgsForHydra ? haskellNix.sources.nixpkgs-2105
13−, pkgsForHydra ? import nixpkgsForHydra (nixpkgsArgs // { inherit (pkgs) system; })
14, ifdLevel ? 1000
11, ifdLevel ? 1000
15−, compiler-nix-name ? throw "No `compiler-nix-name` passed to build.nix"
@@ -20,23 +16,17 @@ let
20 buildHaskell = pkgs.buildPackages.haskell-nix;
16 buildHaskell = pkgs.buildPackages.haskell-nix;
21 tool = buildHaskell.tool;
17 tool = buildHaskell.tool;
23− tests = import ./test/default.nix { inherit pkgs evalPackages ifdLevel compiler-nix-name; };
19+ tests = import ./test/default.nix { inherit pkgs ifdLevel; };
25 tools = pkgs.lib.optionalAttrs (ifdLevel >= 3) (
21 tools = pkgs.lib.optionalAttrs (ifdLevel >= 3) (
26− pkgs.recurseIntoAttrs ({
22+ pkgs.recurseIntoAttrs {
27− cabal-latest = tool compiler-nix-name "cabal" { inherit evalPackages; };
23+ ghcide-020 = tool "ghcide" "0.2.0";
28− hlint-latest = tool compiler-nix-name "hlint" {
24+ } // pkgs.lib.optionalAttrs (buildHaskell.defaultCompilerNixName == "ghc865") {
29− inherit evalPackages;
25+ cabal-30 = tool "cabal" "3.0.0.0";
30− version = {
26+ } // pkgs.lib.optionalAttrs (buildHaskell.defaultCompilerNixName != "ghc8101") {
31− "ghc865" = "3.2.8";
27+ cabal-32 = tool "cabal" "3.2.0.0";
32− "ghc882" = "3.3.6";
28+ ghcide-object-code = tool "ghcide" "object-code";
35− }.compiler-nix-name or "latest";
37− } // pkgs.lib.optionalAttrs (!__elem compiler-nix-name ["ghc921" "ghc922" "ghc923" "ghc924"]) {
38− hls-latest = tool compiler-nix-name "haskell-language-server" { inherit evalPackages; };
42 # Scripts for keeping Hackage and Stackage up to date, and CI tasks.
32 # Scripts for keeping Hackage and Stackage up to date, and CI tasks.
@@ -44,21 +34,8 @@ in rec {
44 # as not all of them can work in restricted eval mode (as they
34 # as not all of them can work in restricted eval mode (as they
45 # are not pure).
35 # are not pure).
46 maintainer-scripts = pkgs.dontRecurseIntoAttrs {
36 maintainer-scripts = pkgs.dontRecurseIntoAttrs {
47− update-hackage = import ./scripts/update-hackage.nix {
37+ update-hackage = haskell.callPackage ./scripts/update-hackage.nix {};
48− inherit (pkgs) stdenv lib writeScript coreutils glibc git
49− openssh nixFlakes gawk bash curl findutils;
50− # Update scripts use the internal nix-tools and cabal-install (compiled with a fixed GHC version)
51− nix-tools = haskell.internal-nix-tools;
52− cabal-install = haskell.internal-cabal-install;
53− inherit (haskell) update-index-state-hashes;
55− update-stackage = haskell.callPackage ./scripts/update-stackage.nix {
38+ update-stackage = haskell.callPackage ./scripts/update-stackage.nix {};
56− inherit (pkgs) stdenv lib writeScript coreutils glibc git
57− openssh nixFlakes gawk bash curl findutils;
58− # Update scripts use the internal nix-tools and cabal-install (compiled with a fixed GHC version)
59− nix-tools = haskell.internal-nix-tools;
60− cabal-install = haskell.internal-cabal-install;
62 update-pins = haskell.callPackage ./scripts/update-pins.nix {};
39 update-pins = haskell.callPackage ./scripts/update-pins.nix {};
63 update-docs = pkgs.buildPackages.callPackage ./scripts/update-docs.nix {
40 update-docs = pkgs.buildPackages.callPackage ./scripts/update-docs.nix {
64 generatedOptions = pkgs.callPackage ./scripts/options-doc.nix { };
41 generatedOptions = pkgs.callPackage ./scripts/options-doc.nix { };
@@ -68,26 +45,21 @@ in rec {
68 # it uses `pkgs.buildPackages.callPackage` not `haskell.callPackage`
45 # it uses `pkgs.buildPackages.callPackage` not `haskell.callPackage`
69 # (We could pull in darcs from a known good haskell.nix for hydra to
46 # (We could pull in darcs from a known good haskell.nix for hydra to
71− check-hydra = pkgsForHydra.buildPackages.callPackage ./scripts/check-hydra.nix {};
48+ check-hydra = pkgs.buildPackages.callPackage ./scripts/check-hydra.nix {};
72 check-closure-size = pkgs.buildPackages.callPackage ./scripts/check-closure-size.nix {
49 check-closure-size = pkgs.buildPackages.callPackage ./scripts/check-closure-size.nix {
73− # Includes cabal-install since this is commonly used.
50+ # Includes cabal-install and hpack since these are commonly used.
74 nix-tools = pkgs.linkFarm "common-tools" [
51 nix-tools = pkgs.linkFarm "common-tools" [
75− { name = "nix-tools"; path = haskell.nix-tools.${compiler-nix-name}; }
52+ { name = "nix-tools"; path = haskell.nix-tools; }
76− { name = "cabal-install"; path = haskell.cabal-install.${compiler-nix-name}; }
53+ { name = "cabal-install"; path = haskell.cabal-install; }
54+ { name = "hpack"; path = haskell.haskellPackages.hpack.components.exes.hpack; }
79− check-materialization-concurrency = pkgs.buildPackages.callPackage ./scripts/check-materialization-concurrency/check.nix {};
80− check-path-support = pkgs.buildPackages.callPackage ./scripts/check-path-support.nix {
81− # TODO remove this when nixpkgs-2205 is released and used for `pkgs`
82− # check-path-support fails unless we have nix 2.4 or newer.
83− inherit (import haskellNix.sources.nixpkgs-unstable {}) nix;
87 # These are pure parts of maintainer-script so they can be built by hydra
59 # These are pure parts of maintainer-script so they can be built by hydra
88 # and added to the cache to speed up buildkite.
60 # and added to the cache to speed up buildkite.
89 maintainer-script-cache = pkgs.recurseIntoAttrs (
61 maintainer-script-cache = pkgs.recurseIntoAttrs (
90− (pkgs.lib.optionalAttrs (pkgsForHydra.system == "x86_64-linux") {
62+ (pkgs.lib.optionalAttrs pkgs.stdenv.hostPlatform.isWindows {
91 inherit (maintainer-scripts) check-hydra;
63 inherit (maintainer-scripts) check-hydra;
93 // (pkgs.lib.optionalAttrs (ifdLevel > 2) {
65 // (pkgs.lib.optionalAttrs (ifdLevel > 2) {
builder/Setup.ghcjs.hsdeleted−272
@@ -1,272 +0,0 @@
1−{-# language LambdaCase #-}
2−import Distribution.Simple
3−import Distribution.Simple.Setup
4−import Distribution.Types.PackageDescription
5−import Distribution.Types.LocalBuildInfo
6−import Distribution.Simple.PackageIndex
7−import Distribution.Types.InstalledPackageInfo hiding (includeDirs)
8−import qualified Distribution.Types.InstalledPackageInfo as IPI
9−import Distribution.Types.PackageName
10−import System.FilePath
11−import Control.Monad (filterM, forM_, forM, unless)
12−import System.Directory (doesFileExist)
13−import Distribution.Types.Library (libBuildInfo, Library(..))
14−import Distribution.Types.BuildInfo (cSources, jsSources, includeDirs, emptyBuildInfo, options, extraBundledLibs)
15−import Distribution.Simple.BuildTarget (readBuildTargets, BuildTarget(..), readUserBuildTargets)
16−import Distribution.Verbosity (silent, verbose)
17−import Distribution.Types.ComponentName
18−import Distribution.Simple.Program.Types (programPath)
19−import Distribution.Simple.Program.Db (lookupKnownProgram, lookupProgram, knownPrograms)
20−import Distribution.Simple.Program (Program, gccProgram, arProgram, runDbProgram, simpleProgram, ghcProgram)
21−import Distribution.Simple.Utils (createDirectoryIfMissingVerbose)
22−import Distribution.Types.HookedBuildInfo
23−import Data.List (isPrefixOf, isSuffixOf, intercalate)
24−import System.Environment (getArgs, getProgName)
25−import Distribution.Simple.LocalBuildInfo (Component (..), withAllComponentsInBuildOrder, componentBuildDir)
26−import Distribution.Types.TestSuite (TestSuite(..))
27−import Distribution.Types.TestSuiteInterface (TestSuiteInterface(..) )
28−import Distribution.Simple.Test.LibV09 (stubName)
29−import Distribution.Types.Executable (exeName, Executable(..))
30−import Distribution.Types.Benchmark (Benchmark(..))
31−import Distribution.Types.TestSuite (TestSuite(..))
32−import Distribution.Types.UnqualComponentName (unUnqualComponentName, mkUnqualComponentName)
35−emarProgram :: Program
36−emarProgram = simpleProgram "emar"
38−buildEMCCLib :: PackageDescription -> LocalBuildInfo -> IO ()
39−buildEMCCLib desc lbi = do
40− let verbosity = verbose
42− createDirectoryIfMissingVerbose verbosity True ((buildDir lbi) </> "emcc")
46− -- Let's see if we are going to export anything. If not there is likely no point in compiling anything
48− names <- forM (jsSources . libBuildInfo $ lib) $ \src -> do
49− unwords . concatMap (drop 2 . words) . filter (isPrefixOf "// EMCC:EXPORTED_FUNCTIONS") . lines <$> readFile src
51− unless (null names) $ do
52− let depIncludeDirs = concatMap IPI.includeDirs (topologicalOrder $ installedPkgs lbi)
53− -- alright, let's compile all .c files into .o files with emcc, which is the `gcc` program.
54− forM_ (cSources . libBuildInfo $ lib) $ \src -> do
55− let dst = (buildDir lbi) </> "emcc" </> (src -<.> "o")
56− createDirectoryIfMissingVerbose verbosity True (takeDirectory dst)
57− runDbProgram verbosity gccProgram (withPrograms lbi) $
58− ["-c", src, "-o", dst] ++ ["-I" <> incDir | incDir <- (includeDirs . libBuildInfo $ lib) ++ depIncludeDirs]
60− -- and now construct a canonical `.js_a` file, *if* we have any cSources we turned into objects.
61− unless (null . cSources . libBuildInfo $ lib) $ do
62− let dstLib = (buildDir lbi) </> "libEMCC" <> (unPackageName . pkgName . package $ desc) <> ".js_a"
63− runDbProgram verbosity emarProgram (withPrograms lbi) $
64− [ "-r", dstLib ] ++ [ (buildDir lbi) </> "emcc" </> (src -<.> "o") | src <- cSources . libBuildInfo $ lib ]
66− let expLib = (buildDir lbi) </> "libEMCC" <> (unPackageName . pkgName . package $ desc) <> ".exported.js_a"
67− writeFile expLib (unwords names)
69− -- if there's no lib, this is a fairly pointless exercise
72−-- This is here so that we can link multiple libEMCC* libraries fromd ependencies together with emcc.
73−-- however we don't have figured out how to get the EXPORTED_FUNCTIONS from each dependency merged yet.
75−linkEMCCLib :: PackageDescription -> LocalBuildInfo -> IO ()
76−linkEMCCLib desc lbi = linkCLib ("emcc" </> "lib.js") desc lbi
78−linkEMCCTHLib :: PackageDescription -> LocalBuildInfo -> IO ()
79−linkEMCCTHLib desc lbi = linkCLib ("th-support.js") desc lbi
81−linkCLib :: String -> PackageDescription -> LocalBuildInfo -> IO ()
82−linkCLib libname desc lbi = do
83− withAllComponentsInBuildOrder desc lbi $ \comp clbi -> do
84− let extraLibs = [ "-l" <> l | l <- concatMap IPI.extraLibraries (topologicalOrder $ installedPkgs lbi)
87− libDirs = [ "-L" <> path | path <- concatMap IPI.libraryDirs (topologicalOrder $ installedPkgs lbi) ]
89− let verbosity = verbose
90− libs <- filterM doesFileExist $
91− concatMap (\x -> [ libDir </> "libEMCC" <> (unPackageName . pkgName . sourcePackageId $ x) <> ".js_a"
92− | libDir <- libraryDirs x ])
93− (topologicalOrder $ installedPkgs lbi)
94− exff <- filterM doesFileExist $
95− concatMap (\x -> [ libDir </> "libEMCC" <> (unPackageName . pkgName . sourcePackageId $ x) <> ".exported.js_a"
96− | libDir <- libraryDirs x ])
97− (topologicalOrder $ installedPkgs lbi)
99− exfns <- concat <$> forM exff (fmap words . readFile)
100− unless (null libs && null exfns) $ do
101− libs <- case libs of
102− [] -> do writeFile (buildDir lbi </> "emcc_linking_dummy.c") ""
103− runDbProgram verbosity gccProgram (withPrograms lbi) $
104− ["-c", buildDir lbi </> "emcc_linking_dummy.c", "-o", buildDir lbi </> "emcc_linking_dummy.o"]
105− return [(buildDir lbi </> "emcc_linking_dummy.o")]
108− let dst = if libname == "emcc" </> "lib.js" then buildDir lbi
109− -- who designed this shit in cabal?
111− (CTest test@(TestSuite { testInterface = TestSuiteLibV09 _ _ })) -> buildDir lbi </> stubName test </> stubName test ++ "-tmp"
112− (CTest test@(TestSuite { testInterface = TestSuiteExeV10 _ _ })) -> buildDir lbi </> unUnqualComponentName (testName test) </> unUnqualComponentName (testName test) ++ "-tmp"
113− (CExe exe) -> buildDir lbi </> unUnqualComponentName (exeName exe) </> unUnqualComponentName (exeName exe) ++ "-tmp"
114− _ -> componentBuildDir lbi clbi
115− dst' = dst </> libname
116− createDirectoryIfMissingVerbose verbosity True (takeDirectory dst')
117− runDbProgram verbosity gccProgram (withPrograms lbi) $
120− , "-s", "ALLOW_TABLE_GROWTH" -- we need this for addFunction/removeFunction
121− -- addFunction, removeFunction are for dynamic functions.
122− -- getTempRet0/setTempRet0 are for 64bit legalization.
123− , "-s", "EXPORTED_RUNTIME_METHODS=['printErr','addFunction','removeFunction','getTempRet0','setTempRet0']"
125− , "-s", "EXPORTED_FUNCTIONS=['" <> intercalate "', '" exfns <> "']"
126− ] ++ libs ++ libDirs ++ extraLibs
128−postBuildHook :: Args -> BuildFlags -> PackageDescription -> LocalBuildInfo -> IO ()
129−postBuildHook args flags desc lbi = do
130− case (takeFileName . programPath <$> lookupProgram ghcProgram (withPrograms lbi)) of
131− Just "js-unknown-ghcjs-ghc" ->
132− readBuildTargets silent desc (buildArgs flags) >>= \case
133− [BuildTargetComponent (CLibName _)] -> print "OK. Lib (Build)" >> buildEMCCLib desc lbi
134− [BuildTargetComponent (CExeName _)] -> print "OK. Exe"
135− [BuildTargetComponent (CTestName _)] -> print "OK. Test"
136− [BuildTargetComponent (CBenchName _)] -> print "OK. Bench"
140−postConfHook :: Args -> ConfigFlags -> PackageDescription -> LocalBuildInfo -> IO ()
141−postConfHook args flags desc lbi = do
142− case (takeFileName . programPath <$> lookupProgram ghcProgram (withPrograms lbi)) of
143− Just "js-unknown-ghcjs-ghc" -> do
144− -- always link the TH lib
145− -- this is technically only needed if the package uses TH somewhere.
146− linkEMCCTHLib desc lbi
147− -- only link the final lib if we want to produce an output.
148− readBuildTargets silent desc (configArgs flags) >>= \case
149− [BuildTargetComponent (CLibName _)] -> print "OK. Lib" >> postConf simpleUserHooks args flags desc lbi
150− [BuildTargetComponent (CExeName _)] -> print "OK. Exe (Link)" >> linkEMCCLib desc lbi
151− [BuildTargetComponent (CTestName _)] -> print "OK. Test (Link)" >> linkEMCCLib desc lbi
152− [BuildTargetComponent (CBenchName _)] -> print "OK. Bench (Link)" >> linkEMCCLib desc lbi
154− -- defer to default postConf. XXX we should do this for the above cases in linkEMCCLib as well!
155− _ -> postConf simpleUserHooks args flags desc lbi
158−-- Injecting emcc/lib.js as needed.
160−-- We inject jsSources: dist/build/emcc/lib.js, the amalgamated emcc library,
161−-- into Executables, Tests and Benchmarks.
162−emccBuildHook :: PackageDescription -> LocalBuildInfo -> UserHooks -> BuildFlags -> IO ()
163−emccBuildHook desc lbi hooks flags = do
164− let lbi' = lbi { localPkgDescr = updatePackageDescription (localPkgDescr lbi) }
165− -- for some reason tests/benchmarks seem to rely on the description, whereas libraries and executables depend on the local build info...
166− desc' = updatePackageDescription desc
167− doesFileExist jsLib >>= \x -> print $ jsLib <> " " <> (if x then "exists" else "doesn't exist!")
168− doesFileExist jsLib >>= \case
169− True -> buildHook simpleUserHooks desc' lbi' hooks flags
170− False -> buildHook simpleUserHooks desc lbi hooks flags
173− jsLib = "dist/build" </> "emcc" </> "lib.js"
174− extraOpts = PerCompilerFlavor [jsLib] []
175− -- don't inject it for libraries, only for exe, test, bench.
176− updateLibrary :: Library -> Library
177− updateLibrary = id -- lib@Library{ libBuildInfo = bi } = lib { libBuildInfo = bi { options = options bi <> extraOpts } }
178− updateExe :: Executable -> Executable
179− updateExe exe@Executable{ buildInfo = bi } = exe { buildInfo = bi { options = options bi <> extraOpts } }
180− updateTest :: TestSuite -> TestSuite
181− updateTest test@TestSuite{ testBuildInfo = bi } = test { testBuildInfo = bi { options = options bi <> extraOpts } }
182− updateBench :: Benchmark -> Benchmark
183− updateBench bench@Benchmark{ benchmarkBuildInfo = bi } = bench { benchmarkBuildInfo = bi { options = options bi <> extraOpts } }
184− updatePackageDescription :: PackageDescription -> PackageDescription
185− updatePackageDescription desc = desc
186− { library = updateLibrary <$> library desc
187− , executables = updateExe <$> executables desc
188− , testSuites = updateTest <$> testSuites desc
189− , benchmarks = updateBench <$> benchmarks desc
193−-- Injecting EMCC<name> extra libraries as needed
194−-- this one we only need alongside library components; as it's shipped and installed
195−-- into the package databse. This is not necesary for executables/test/benchmarks, that
196−-- are not installed into the package database
198−emccCopyHook :: PackageDescription -> LocalBuildInfo -> UserHooks -> CopyFlags -> IO ()
199−emccCopyHook desc lbi hooks flags = do
200− emccLibs <- filterM (\l -> doesFileExist (buildDir lbi </> "lib" <> l <> ".js_a"))
201− [ "EMCC" <> (unPackageName . pkgName . package $ desc)
202− , "EMCC" <> (unPackageName . pkgName . package $ desc) <> ".exported" ]
203− print $ "EMCC extra lib files: " ++ intercalate ", " emccLibs
204− let lbi' = lbi { localPkgDescr = updatePackageDescription emccLibs (localPkgDescr lbi) }
205− desc' = updatePackageDescription emccLibs desc
206− copyHook simpleUserHooks desc' lbi' hooks flags
208− emccLib = (buildDir lbi) </> "libEMCC" <> (unPackageName . pkgName . package $ desc) <> ".js_a"
209− -- don't inject it for libraries, only for exe, test, bench.
210− updateLibrary :: [String] -> Library -> Library
211− updateLibrary extraLibs lib@Library{ libBuildInfo = bi } = lib { libBuildInfo = bi { extraBundledLibs = extraBundledLibs bi <> extraLibs } }
212− updatePackageDescription :: [String] -> PackageDescription -> PackageDescription
213− updatePackageDescription extraLibs desc = desc { library = updateLibrary extraLibs <$> library desc }
215−emccRegHook :: PackageDescription -> LocalBuildInfo -> UserHooks -> RegisterFlags -> IO ()
216−emccRegHook desc lbi hooks flags = do
217− emccLibs <- filterM (\l -> doesFileExist (buildDir lbi </> "lib" <> l <> ".js_a"))
218− [ "EMCC" <> (unPackageName . pkgName . package $ desc)
219− , "EMCC" <> (unPackageName . pkgName . package $ desc) <> ".exported" ]
220− print $ "EMCC extra lib files: " ++ intercalate ", " emccLibs
221− let lbi' = lbi { localPkgDescr = updatePackageDescription emccLibs (localPkgDescr lbi) }
222− desc' = updatePackageDescription emccLibs desc
223− regHook simpleUserHooks desc' lbi' hooks flags
225− emccLib = (buildDir lbi) </> "libEMCC" <> (unPackageName . pkgName . package $ desc) <> ".js_a"
226− -- don't inject it for libraries, only for exe, test, bench.
227− updateLibrary :: [String] -> Library -> Library
228− updateLibrary extraLibs lib@Library{ libBuildInfo = bi } = lib { libBuildInfo = bi { extraBundledLibs = extraBundledLibs bi <> extraLibs } }
229− updatePackageDescription :: [String] -> PackageDescription -> PackageDescription
230− updatePackageDescription extraLibs desc = desc { library = updateLibrary extraLibs <$> library desc }
232−emccUnregHook :: PackageDescription -> LocalBuildInfo -> UserHooks -> RegisterFlags -> IO ()
233−emccUnregHook desc lbi hooks flags = do
234− emccLibs <- filterM (\l -> doesFileExist (buildDir lbi </> "lib" <> l <> ".js_a"))
235− [ "EMCC" <> (unPackageName . pkgName . package $ desc)
236− , "EMCC" <> (unPackageName . pkgName . package $ desc) <> ".exported" ]
237− print $ "EMCC extra lib files: " ++ intercalate ", " emccLibs
238− let lbi' = lbi { localPkgDescr = updatePackageDescription emccLibs (localPkgDescr lbi) }
239− desc' = updatePackageDescription emccLibs desc
240− unregHook simpleUserHooks desc' lbi' hooks flags
242− emccLib = (buildDir lbi) </> "libEMCC" <> (unPackageName . pkgName . package $ desc) <> ".js_a"
243− -- don't inject it for libraries, only for exe, test, bench.
244− updateLibrary :: [String] -> Library -> Library
245− updateLibrary extraLibs lib@Library{ libBuildInfo = bi } = lib { libBuildInfo = bi { extraBundledLibs = extraBundledLibs bi <> extraLibs } }
246− updatePackageDescription :: [String] -> PackageDescription -> PackageDescription
247− updatePackageDescription extraLibs desc = desc { library = updateLibrary extraLibs <$> library desc }
254− defaultMainWithHooksArgs emccHooks (injectEmar args)
256− injectEmar :: [String] -> [String]
258− injectEmar (x:xs) | "--with-gcc=" `isPrefixOf` x
259− , "emcc" `isSuffixOf` x
260− = x:("--with-emar="<> (takeDirectory $ drop 11 $ x) </> "emar"):injectEmar xs
261− injectEmar (x:xs) = x:injectEmar xs
263− emccHooks :: UserHooks
264− emccHooks = simpleUserHooks
265− { postConf = postConfHook
266− , buildHook = emccBuildHook
267− , postBuild = postBuildHook
268− , copyHook = emccCopyHook
269− , regHook = emccRegHook
270− , unregHook = emccUnregHook
271− , hookedPrograms = [emarProgram]
builder/Setup.hsdeleted−2
@@ -1,2 +0,0 @@
1−import Distribution.Simple
builder/comp-builder.nix+250−455
@@ -1,6 +1,13 @@
1−{ pkgs, stdenv, buildPackages, ghc, lib, gobject-introspection ? null, haskellLib, makeConfigFiles, haddockBuilder, ghcForComponent, hsPkgs, compiler, runCommand, libffi, gmp, zlib, ncurses, nodejs }@defaults:
1+{ stdenv, buildPackages, ghc, lib, gobject-introspection ? null, haskellLib, makeConfigFiles, ghcForComponent, hsPkgs, runCommand, libffi, gmp, zlib, ncurses, numactl, nodejs }:
3+ # These are here to avoid multiple calls to override
4+ gmpStatic = gmp.override { withStatic = true; };
5+ zlibStatic = zlib.static;
6+ ncursesStatic = ncurses.override { enableStatic = true; };
7+ numactlStatic = numactl.overrideAttrs (_: { configureFlags = "--enable-static"; });
2lib.makeOverridable (
9lib.makeOverridable (
3−let self =
10+let self =
4{ componentId
11{ componentId
5, component
12, component
@@ -23,14 +30,6 @@ let self =
23, preInstall ? component.preInstall , postInstall ? component.postInstall
30, preInstall ? component.preInstall , postInstall ? component.postInstall
24, preHaddock ? component.preHaddock , postHaddock ? component.postHaddock
31, preHaddock ? component.preHaddock , postHaddock ? component.postHaddock
25, shellHook ? ""
32, shellHook ? ""
26−, configureAllComponents ? component.configureAllComponents ||
27− # When set, configure all the components in the package
28− # (not just the one we are building).
29− # Enable for tests in packages that use cabal-doctest.
30− ( haskellLib.isTest componentId &&
31− lib.any (x: x.identifier.name or "" == "cabal-doctest") package.setup-depends
33−, allComponent # Used when `configureAllComponents` is set to get a suitable configuration.
35, build-tools ? component.build-tools
34, build-tools ? component.build-tools
36, pkgconfig ? component.pkgconfig
35, pkgconfig ? component.pkgconfig
@@ -39,106 +38,46 @@ let self =
40, dontPatchELF ? component.dontPatchELF
39, dontPatchELF ? component.dontPatchELF
41, dontStrip ? component.dontStrip
40, dontStrip ? component.dontStrip
42−, hardeningDisable ? component.hardeningDisable
44, enableStatic ? component.enableStatic
42, enableStatic ? component.enableStatic
45−, enableShared ? ghc.enableShared && component.enableShared && !haskellLib.isCrossHost
43+, enableShared ? component.enableShared && !haskellLib.isCrossHost
46− # on x86 we'll use shared libraries, even with musl m(
47− # ghc's internal linker seems to be broken on x86.
48− && !(stdenv.hostPlatform.isMusl && !stdenv.hostPlatform.isx86)
49, enableDeadCodeElimination ? component.enableDeadCodeElimination
44, enableDeadCodeElimination ? component.enableDeadCodeElimination
50−, writeHieFiles ? component.writeHieFiles
52−, ghcOptions ? component.ghcOptions
53−, contentAddressed ? component.contentAddressed
55# Options for Haddock generation
46# Options for Haddock generation
56, doHaddock ? component.doHaddock # Enable haddock and hoogle generation
47, doHaddock ? component.doHaddock # Enable haddock and hoogle generation
57, doHoogle ? component.doHoogle # Also build a hoogle index
48, doHoogle ? component.doHoogle # Also build a hoogle index
58, hyperlinkSource ? component.doHyperlinkSource # Link documentation to the source code
49, hyperlinkSource ? component.doHyperlinkSource # Link documentation to the source code
59−, quickjump ? component.doQuickjump # Generate an index for interactive documentation navigation
60−, keepSource ? component.keepSource || configureAllComponents # Build from `source` output in the store then delete `dist`
50+, keepSource ? component.keepSource # Build from `source` output in the store then delete `dist`
61, setupHaddockFlags ? component.setupHaddockFlags
51, setupHaddockFlags ? component.setupHaddockFlags
63# Profiling
53# Profiling
64, enableLibraryProfiling ? component.enableLibraryProfiling
54, enableLibraryProfiling ? component.enableLibraryProfiling
65−, enableProfiling ? component.enableProfiling
55+, enableExecutableProfiling ? component.enableExecutableProfiling
66, profilingDetail ? component.profilingDetail
56, profilingDetail ? component.profilingDetail
69−, doCoverage ? component.doCoverage
72, enableSeparateDataOutput ? component.enableSeparateDataOutput
59, enableSeparateDataOutput ? component.enableSeparateDataOutput
74−# Prelinked ghci libraries; will make iserv faster; especially for static builds.
75−, enableLibraryForGhci ? true
78, enableDebugRTS ? false
62, enableDebugRTS ? false
81−# This will only work with a custom TSan way enabled custom compiler
82−, enableTSanRTS ? false
85−, useLLVM ? ghc.useLLVM
86−, smallAddressSpace ? false
92− if configureAllComponents
96− # Ignore attempts to include DWARF info when it is not possible
97− enableDWARF = drvArgs.enableDWARF or false
98− && stdenv.hostPlatform.isLinux
99− && !haskellLib.isCrossHost
100− && !stdenv.hostPlatform.isMusl
101− && builtins.compareVersions defaults.ghc.version "8.10.2" >= 0;
103− ghc = (if enableDWARF then (x: x.dwarf) else (x: x)) (
104− (if smallAddressSpace then (x: x.smallAddressSpace) else (x: x)) defaults.ghc);
105− setup = (if enableDWARF then (x: x.dwarf) else (x: x)) (
106− (if smallAddressSpace then (x: x.smallAddressSpace) else (x: x)) drvArgs.setup);
108 # TODO fix cabal wildcard support so hpack wildcards can be mapped to cabal wildcards
66 # TODO fix cabal wildcard support so hpack wildcards can be mapped to cabal wildcards
109− canCleanSource = !(cabal-generator == "hpack" && !(package.cleanHpack or false));
67+ cleanSrc = if cabal-generator == "hpack" && !(package.cleanHpack or false)
110− # In order to support relative references to other packages we need to use
68+ then builtins.trace ("Cleaning component source not supported for hpack package: " + name) src
111− # the `origSrc` diretory as the root `src` for the derivation.
112− # We use `rootAndSubDir` here to split the cleaned source into a `cleanSrc.root`
113− # path (that respects the filtering) and a `cleanSrc.subDir` that
114− # is the sub directory in that root path that contains the package.
115− # `cleanSrc.subDir` is used in `prePatch` and `lib/cover.nix`.
116− cleanSrc = haskellLib.rootAndSubDir (if canCleanSource
117− then haskellLib.cleanCabalComponent package componentForSetup "${componentId.ctype}-${componentId.cname}" src
69+ else haskellLib.cleanCabalComponent package component src;
119− # We can clean out the siblings though to at least avoid changes to other packages
120− # from triggering a rebuild of this one.
121− # Passing `subDir` but not `includeSiblings = true;` will exclude anything not
123− if src ? origSrc && src ? filter && src.origSubDir or "" != ""
124− then haskellLib.cleanSourceWith {
125− name = src.name or "source";
127− subDir = lib.removePrefix "/" src.origSubDir;
128− inherit (src) filter;
132− nameOnly = "${package.identifier.name}-${componentId.ctype}-${componentId.cname}";
134− fullName = "${nameOnly}-${package.identifier.version}";
71+ nameOnly = if haskellLib.isAll componentId
72+ then "${package.identifier.name}-all"
73+ else "${package.identifier.name}-${componentId.ctype}-${componentId.cname}";
136− needsProfiling = enableProfiling || enableLibraryProfiling;
75+ fullName = "${nameOnly}-${package.identifier.version}";
138 configFiles = makeConfigFiles {
77 configFiles = makeConfigFiles {
139− component = componentForSetup;
140 inherit (package) identifier;
78 inherit (package) identifier;
141− inherit fullName flags needsProfiling enableDWARF;
79+ inherit component fullName flags;
80+ needsProfiling = enableExecutableProfiling || enableLibraryProfiling;
144 enableFeature = enable: feature:
83 enableFeature = enable: feature:
@@ -148,39 +87,18 @@ let
149 finalConfigureFlags = lib.concatStringsSep " " (
88 finalConfigureFlags = lib.concatStringsSep " " (
150 [ "--prefix=$out"
89 [ "--prefix=$out"
152− # We don't specify this in 'commonConfigureFlags', as these are also
153− # used by haddock-builder.nix. If we do specify these options in
154− # commonConfigureFlags, then the haddock-builder will fail, because it
155− # sets its own outputs which *don't* include $hie
156− lib.optionals writeHieFiles [
157− "--ghc-option=-fwrite-ide-info" "--ghc-option=-hiedir$hie"
160− # If configureAllComponents is set we should not specify the component
161− # and Setup will attempt to configure them all.
162− if configureAllComponents
163− then ["--enable-tests" "--enable-benchmarks"]
164− else ["${haskellLib.componentTarget componentId}"]
90+ "${haskellLib.componentTarget componentId}"
165− ) ++ [ "$(cat ${configFiles}/configure-flags)"
91+ "$(cat ${configFiles}/configure-flags)"
166− ] ++ commonConfigureFlags);
168− # From nixpkgs 20.09, the pkg-config exe has a prefix matching the ghc one
169− pkgConfigHasPrefix = builtins.compareVersions lib.version "20.09pre" >= 0;
171− commonConfigureFlags = ([
173 "--with-ghc=${ghc.targetPrefix}ghc"
93 "--with-ghc=${ghc.targetPrefix}ghc"
174 "--with-ghc-pkg=${ghc.targetPrefix}ghc-pkg"
94 "--with-ghc-pkg=${ghc.targetPrefix}ghc-pkg"
175 "--with-hsc2hs=${ghc.targetPrefix}hsc2hs"
95 "--with-hsc2hs=${ghc.targetPrefix}hsc2hs"
176− ] ++ lib.optional (pkgConfigHasPrefix && pkgconfig != [])
177− "--with-pkg-config=${ghc.targetPrefix}pkg-config"
178− ++ lib.optionals (stdenv.hasCC or (stdenv.cc != null))
96+ ] ++ lib.optionals (stdenv.hasCC or (stdenv.cc != null))
180 [ "--with-gcc=${stdenv.cc.targetPrefix}cc"
98 [ "--with-gcc=${stdenv.cc.targetPrefix}cc"
182 # BINTOOLS
100 # BINTOOLS
183− (if stdenv.hostPlatform.isLinux && !stdenv.hostPlatform.isAndroid # might be better check to see if cc is clang/llvm?
101+ (if stdenv.hostPlatform.isLinux
184 # use gold as the linker on linux to improve link times
102 # use gold as the linker on linux to improve link times
186 "--with-ld=${stdenv.cc.bintools.targetPrefix}ld.gold"
104 "--with-ld=${stdenv.cc.bintools.targetPrefix}ld.gold"
@@ -197,21 +115,24 @@ let
197 (disableFeature dontStrip "executable-stripping")
115 (disableFeature dontStrip "executable-stripping")
198 (disableFeature dontStrip "library-stripping")
116 (disableFeature dontStrip "library-stripping")
199 (enableFeature enableLibraryProfiling "library-profiling")
117 (enableFeature enableLibraryProfiling "library-profiling")
200− (enableFeature enableProfiling "profiling")
118+ (enableFeature enableExecutableProfiling "executable-profiling")
201 (enableFeature enableStatic "static")
119 (enableFeature enableStatic "static")
202 (enableFeature enableShared "shared")
120 (enableFeature enableShared "shared")
203− (enableFeature doCoverage "coverage")
204− (enableFeature enableLibraryForGhci "library-for-ghci")
205 ] ++ lib.optionals (stdenv.hostPlatform.isMusl && (haskellLib.isExecutableType componentId)) [
121 ] ++ lib.optionals (stdenv.hostPlatform.isMusl && (haskellLib.isExecutableType componentId)) [
206 # These flags will make sure the resulting executable is statically linked.
122 # These flags will make sure the resulting executable is statically linked.
207 # If it uses other libraries it may be necessary for to add more
123 # If it uses other libraries it may be necessary for to add more
208− # `--ghc-option=-optl=-L` options to the `configureFlags` of the
124+ # `--ghc-option=-optl=-L` options to the `configurationFlags` of the
209 # component.
125 # component.
210 "--disable-executable-dynamic"
126 "--disable-executable-dynamic"
211 "--ghc-option=-optl=-pthread"
127 "--ghc-option=-optl=-pthread"
212 "--ghc-option=-optl=-static"
128 "--ghc-option=-optl=-static"
129+ "--ghc-option=-optl=-L${gmpStatic}/lib"
130+ "--ghc-option=-optl=-L${zlibStatic}/lib"
131+ "--ghc-option=-optl=-L${ncursesStatic}/lib"
132+ "--ghc-option=-optl=-L${numactlStatic}/lib"
213 ] ++ lib.optional enableSeparateDataOutput "--datadir=$data/share/${ghc.name}"
133 ] ++ lib.optional enableSeparateDataOutput "--datadir=$data/share/${ghc.name}"
134+ ++ lib.optional doHaddock' "--docdir=${docdir "$doc"}"
214− ++ lib.optional (enableLibraryProfiling || enableProfiling) "--profiling-detail=${profilingDetail}"
135+ ++ lib.optional (enableLibraryProfiling || enableExecutableProfiling) "--profiling-detail=${profilingDetail}"
215 ++ lib.optional stdenv.hostPlatform.isLinux (enableFeature enableDeadCodeElimination "split-sections")
136 ++ lib.optional stdenv.hostPlatform.isLinux (enableFeature enableDeadCodeElimination "split-sections")
216 ++ lib.optionals haskellLib.isCrossHost (
137 ++ lib.optionals haskellLib.isCrossHost (
217 map (arg: "--hsc2hs-option=" + arg) (["--cross-compile"] ++ lib.optionals (stdenv.hostPlatform.isWindows) ["--via-asm"])
138 map (arg: "--hsc2hs-option=" + arg) (["--cross-compile"] ++ lib.optionals (stdenv.hostPlatform.isWindows) ["--via-asm"])
@@ -219,22 +140,10 @@ let
219 ++ configureFlags
140 ++ configureFlags
220 ++ (ghc.extraConfigureFlags or [])
141 ++ (ghc.extraConfigureFlags or [])
221 ++ lib.optional enableDebugRTS "--ghc-option=-debug"
142 ++ lib.optional enableDebugRTS "--ghc-option=-debug"
222− ++ lib.optional enableTSanRTS "--ghc-option=-tsan"
223− ++ lib.optional enableDWARF "--ghc-option=-g3"
224− ++ lib.optionals useLLVM [
225− "--ghc-option=-fPIC" "--gcc-option=-fPIC"
227− ++ map (o: ''--ghc${lib.optionalString (stdenv.hostPlatform.isGhcjs) "js"}-options="${o}"'') ghcOptions
229− # GHC 9.2 cross compiler built with older versions of GHC seem to have problems
230− # with unique conters. Perhaps because the name changed for the counters.
231− # TODO This work around to use `-j1` should be removed once we are able to build 9.2 with 9.2.
232− haskellLib.isCrossHost
233− && builtins.compareVersions defaults.ghc.version "9.2.1" >= 0
234− && builtins.compareVersions defaults.ghc.version "9.3" < 0)
145+ setupGhcOptions = lib.optional (package.ghcOptions != null) '' --ghc-options="${package.ghcOptions}"'';
238 executableToolDepends =
147 executableToolDepends =
239 (lib.concatMap (c: if c.isHaskell or false
148 (lib.concatMap (c: if c.isHaskell or false
240 then builtins.attrValues (c.components.exes or {})
149 then builtins.attrValues (c.components.exes or {})
@@ -245,8 +154,7 @@ let
245 # work in the nix-shell. See ../doc/removing-with-package-wrapper.md.
154 # work in the nix-shell. See ../doc/removing-with-package-wrapper.md.
246 shellWrappers = ghcForComponent {
155 shellWrappers = ghcForComponent {
247 componentName = fullName;
156 componentName = fullName;
248− inherit configFiles enableDWARF;
157+ inherit configFiles;
249− inherit (component) plugins;
252 # In order to let shell hooks make package-specific things like Hoogle databases
160 # In order to let shell hooks make package-specific things like Hoogle databases
@@ -254,343 +162,230 @@ let
254 if builtins.isFunction shellHook then shellHook { inherit package shellWrappers; }
162 if builtins.isFunction shellHook then shellHook { inherit package shellWrappers; }
255 else abort "shellHook should be a string or a function";
163 else abort "shellHook should be a string or a function";
165+ # the target dir for haddock documentation
166+ docdir = docoutput: docoutput + "/share/doc/" + componentId.cname;
168+ doHaddock' = doHaddock
169+ && (haskellLib.isLibrary componentId)
170+ && !haskellLib.isCrossHost;
257 exeExt = if stdenv.hostPlatform.isGhcjs then ".jsexe/all.js" else
172 exeExt = if stdenv.hostPlatform.isGhcjs then ".jsexe/all.js" else
258− stdenv.hostPlatform.extensions.executable;
173+ if stdenv.hostPlatform.isWindows then ".exe" else "";
259 exeName = componentId.cname + exeExt;
174 exeName = componentId.cname + exeExt;
260 testExecutable = "dist/build/${componentId.cname}/${exeName}";
175 testExecutable = "dist/build/${componentId.cname}/${exeName}";
262− # Attributes that are common to both the build and haddock derivations
177+in stdenv.lib.fix (drv:
264− src = cleanSrc.root;
179+stdenv.mkDerivation ({
265−
180+ pname = nameOnly;
266− LANG = "en_US.UTF-8"; # GHC needs the locale configured during the Haddock phase.
267− LC_ALL = "en_US.UTF-8";
269− enableParallelBuilding = true;
271− SETUP_HS = setup + /bin/Setup;
274− # If the package is in a sub directory `cd` there first.
275− # In some cases the `cleanSrc.subDir` will be empty and the `.cabal`
276− # file will be in the root of `src` (`cleanSrc.root`). This
278− # * the .cabal file is in the projects `src.origSrc or src`
279− # * the package src was overridden with a value that does not
280− # include an `origSubDir`
281− (lib.optionalString (cleanSrc.subDir != "") ''
282− cd ${lib.removePrefix "/" cleanSrc.subDir}
285− (if cabalFile != null
286− then ''cat ${cabalFile} > ${package.identifier.name}.cabal''
288− # When building hpack package we use the internal nix-tools
289− # (compiled with a fixed GHC version)
290− lib.optionalString (cabal-generator == "hpack") ''
291− ${buildPackages.haskell-nix.internal-nix-tools}/bin/hpack
295− # patches can (if they like) depend on the version and revision of the package.
296− // lib.optionalAttrs (patches != []) {
298− if builtins.isFunction p
299− then p { inherit (package.identifier) version; inherit revision; }
181+ inherit (package.identifier) version;
303− // haskellLib.optionalHooks {
304− # These are hooks are needed to set up the source for building and running haddock
305− inherit preUnpack postUnpack preConfigure postConfigure;
307− // lib.optionalAttrs (stdenv.buildPlatform.libc == "glibc") {
308− LOCALE_ARCHIVE = "${buildPackages.glibcLocales}/lib/locale/locale-archive";
311− haddock = haddockBuilder {
183+ src = cleanSrc;
312− inherit componentId component package flags commonConfigureFlags
313− commonAttrs revision doHaddock
314− doHoogle hyperlinkSource quickjump setupHaddockFlags
315− needsProfiling configFiles preHaddock postHaddock pkgconfig;
317− componentDrv = drv;
185+ doCheck = false;
186+ doCrossCheck = false;
188+ inherit dontPatchELF dontStrip;
191+ inherit (package) identifier;
193+ inherit configFiles executableToolDepends cleanSrc exeName;
194+ env = shellWrappers;
196+ # The directory containing the haddock documentation.
197+ # `null' if no haddock documentation was built.
198+ haddockDir = if doHaddock' then "${docdir drv.doc}/html" else null;
199+ profiled = self (drvArgs // { enableLibraryProfiling = true; });
320− contentAddressedAttrs = lib.optionalAttrs contentAddressed {
202+ meta = {
321− __contentAddressed = true;
203+ homepage = package.homepage;
322− outputHashMode = "recursive";
204+ description = package.synopsis;
323− outputHashAlgo = "sha256";
205+ license =
207+ license-map = import ../lib/cabal-licenses.nix lib;
208+ in license-map.${package.license} or
209+ (builtins.trace "WARNING: license \"${package.license}\" not found" license-map.LicenseRef-OtherLicense);
210+ platforms = if platforms == null then stdenv.lib.platforms.all else platforms;
326− drv = stdenv.mkDerivation (commonAttrs // contentAddressedAttrs // {
328− inherit (package.identifier) version;
331− doCrossCheck = false;
333− inherit dontPatchELF dontStrip;
336− inherit (package) identifier;
338− srcSubDir = cleanSrc.subDir;
339− srcSubDirPath = cleanSrc.root + cleanSrc.subDir;
340− inherit configFiles executableToolDepends exeName enableDWARF;
341− exePath = drv + "/bin/${exeName}";
342− env = shellWrappers;
343− profiled = self (drvArgs // { enableLibraryProfiling = true; });
344− dwarf = self (drvArgs // { enableDWARF = true; });
345− } // lib.optionalAttrs (haskellLib.isLibrary componentId) ({
347− inherit (haddock) haddockDir; # This is null if `doHaddock = false`
348− } // lib.optionalAttrs (haddock ? doc) {
349− # `doHaddock = false` turns the doc of haddock output off
350− inherit (haddock) doc;
354− meta = {
213+ LANG = "en_US.UTF-8"; # GHC needs the locale configured during the Haddock phase.
355− homepage = package.homepage or "";
214+ LC_ALL = "en_US.UTF-8";
356− description = package.synopsis or "";
215+
357− license = haskellLib.cabalToNixpkgsLicense package.license;
216+ enableParallelBuilding = true;
358− platforms = if platforms == null then lib.platforms.all else platforms;
217+
359− } // lib.optionalAttrs (haskellLib.isExecutableType componentId) {
218+ buildInputs = component.libs
360− # Set main executable name for executable components, so that `nix run` in
219+ ++ frameworks
361− # nix flakes will work correctly. When not set, `nix run` would (typically
362− # erroneously) deduce the executable name from the derivation name and
363− # attempt to run, for example,
364− # `/nix/store/...-project-exe-app-0.1.0.0/bin/project-exe-app` instead of
365− # `/nix/store/...-project-exe-app-0.1.0.0/bin/app`.
366− mainProgram = exeName;
369− propagatedBuildInputs =
370− frameworks # Frameworks will be needed at link time
371− # Not sure why pkgconfig needs to be propagatedBuildInputs but
372− # for gi-gtk-hs it seems to help.
373− ++ builtins.concatLists pkgconfig
220+ ++ builtins.concatLists pkgconfig
374− ++ lib.optionals (stdenv.hostPlatform.isWindows)
221+ # Note: This is a hack until we can fix properly. See:
375− (lib.flatten component.libs
222+ # https://github.com/haskell-gi/haskell-gi/issues/226
376− ++ map haskellLib.dependToLib component.depends);
223+ ++ lib.optional (lib.strings.hasPrefix "gi-" fullName) gobject-introspection;
378− buildInputs = lib.optionals (!stdenv.hostPlatform.isWindows)
379− (lib.flatten component.libs
380− ++ map haskellLib.dependToLib component.depends);
382− nativeBuildInputs =
225+ nativeBuildInputs =
383− [shellWrappers buildPackages.removeReferencesTo]
226+ [shellWrappers buildPackages.removeReferencesTo]
384− ++ executableToolDepends;
227+ ++ executableToolDepends;
229+ SETUP_HS = setup + /bin/Setup;
386− outputs = ["out" ]
231+ outputs = ["out" ]
387− ++ (lib.optional enableSeparateDataOutput "data")
232+ ++ (lib.optional enableSeparateDataOutput "data")
388− ++ (lib.optional keepSource "source")
233+ ++ (lib.optional doHaddock' "doc")
389− ++ (lib.optional writeHieFiles "hie");
234+ ++ (lib.optional keepSource "source");
391− prePatch =
236+ # Phases
392− # emcc is very slow if it cannot cache stuff in $HOME
237+ preInstallPhases = lib.optional doHaddock' "haddockPhase";
393− (lib.optionalString (stdenv.hostPlatform.isGhcjs) ''
238+
394− export HOME=$(mktemp -d)
239+ prePatch = if (cabalFile != null)
395− '') +
240+ then ''cat ${cabalFile} > ${package.identifier.name}.cabal''
396− (lib.optionalString (!canCleanSource) ''
241+ else lib.optionalString (cabal-generator == "hpack") ''
397− echo "Cleaning component source not supported, leaving it un-cleaned"
242+ ${buildPackages.haskell-nix.haskellPackages.hpack.components.exes.hpack}/bin/hpack
399− (lib.optionalString keepSource ''
246+ (lib.optionalString keepSource ''
400− cp -r . $source
247+ cp -r . $source
401− cd $source
248+ cd $source
402− chmod -R +w .
249+ chmod -R +w .
403− '') + commonAttrs.prePatch;
250+ '') + ''
406− runHook preConfigure
251+ runHook preConfigure
407− echo Configure flags:
252+ echo Configure flags:
408− printf "%q " ${finalConfigureFlags}
253+ printf "%q " ${finalConfigureFlags}
410− $SETUP_HS configure ${finalConfigureFlags}
255+ $SETUP_HS configure ${finalConfigureFlags}
411− runHook postConfigure
256+ runHook postConfigure
414− buildPhase =
259+ buildPhase = ''
415− # It seems that by the time the iserv wrapper specifiec by `--ghc-option=-pgmi` runs
416− # all the array environment variables are removed from the environment. To get a list
417− # of all the locations a DLLs might be present we need access to pkgsHostTarget.
418− # Adding a string version of the list array of nix store paths allows us to get that
419− # list when we need it.
420− (lib.optionalString stdenv.hostPlatform.isWindows ''
421− export pkgsHostTargetAsString="''${pkgsHostTarget[@]}"
423− # The following could be refactored but would lead to many rebuilds
425− # In case of content addressed components we need avoid parallel building (passing -j1)
426− # in order to have a deterministic output and therefore avoid potential situations
427− # where the binary cache becomes useless
428− # See also https://gitlab.haskell.org/ghc/ghc/-/issues/12935
429− (if contentAddressed then ''
430− runHook preBuild
260+ runHook preBuild
431− $SETUP_HS build ${haskellLib.componentTarget componentId} -j1 ${lib.concatStringsSep " " setupBuildFlags}
433− '' else if stdenv.hostPlatform.isGhcjs then ''
435− # https://gitlab.haskell.org/ghc/ghc/issues/9221
261+ # https://gitlab.haskell.org/ghc/ghc/issues/9221
436− $SETUP_HS build ${haskellLib.componentTarget componentId} ${lib.concatStringsSep " " setupBuildFlags}
440− # https://gitlab.haskell.org/ghc/ghc/issues/9221
441− $SETUP_HS build ${haskellLib.componentTarget componentId} -j$(($NIX_BUILD_CORES > 4 ? 4 : $NIX_BUILD_CORES)) ${lib.concatStringsSep " " setupBuildFlags}
262+ $SETUP_HS build ${haskellLib.componentTarget componentId} -j$(($NIX_BUILD_CORES > 4 ? 4 : $NIX_BUILD_CORES)) ${lib.concatStringsSep " " (setupBuildFlags ++ setupGhcOptions)}
442− runHook postBuild
263+ runHook postBuild
266+ checkPhase = "notice: Tests are only executed by building the .run sub-derivation of this component.";
270+ # If we don't have any source files, no need to run haddock
271+ [[ -n $(find . -name "*.hs" -o -name "*.lhs") ]] && {
272+ docdir="${docdir "$doc"}"
277+ ${lib.optionalString doHoogle "--hoogle"} \
278+ ${lib.optionalString hyperlinkSource "--hyperlink-source"} \
279+ ${lib.concatStringsSep " " (setupHaddockFlags ++ setupGhcOptions)}
281+ html="dist/doc/html/${componentId.cname}"
283+ if [ -d "$html" ]; then
284+ # Ensure that libraries are not pulled into the docs closure.
285+ # As an example, the prettified source code of a
286+ # Paths_package module will contain store paths of the library package.
287+ for x in "$html/src/"*.html; do
288+ remove-references-to -t $out $x
291+ cp -R "$html" "$docdir"/html
445− # Note: Cabal does *not* copy test executables during the `install` phase.
297+ # Note: Cabal does *not* copy test executables during the `install` phase.
447− # Note 2: if a package contains multiple libs (lib + sublibs) SETUP register will generate a
299+ # Note 2: if a package contains multiple libs (lib + sublibs) SETUP register will generate a
448− # folder instead of a file for the configuration. Therefore if the result is a folder,
300+ # folder isntead of a file for the configuration. Therfore if the result is a folder,
449− # we need to register each and every element of that folder.
301+ # we need to register each and every element of that folder.
451− # Note 3: if a package has no libs SETUP will not generate anything. This can
303+ # Note 3: if a package has no libs SETUP will not generate anything. This can
452− # happen when building the `all` component of a package.
304+ # happen when building the `all` component of a package.
453− installPhase = let
305+ installPhase = let
454− target-pkg-and-db = "${ghc.targetPrefix}ghc-pkg -v0 --package-db $out/package.conf.d";
306+ target-pkg-and-db = "${ghc.targetPrefix}ghc-pkg -v0 --package-db $out/package.conf.d";
456− runHook preInstall
308+ runHook preInstall
457− $SETUP_HS copy ${lib.concatStringsSep " " (
309+ $SETUP_HS copy ${lib.concatStringsSep " " setupInstallFlags}
459− ++ lib.optional configureAllComponents
460− (haskellLib.componentTarget componentId)
462− ${lib.optionalString (haskellLib.isLibrary componentId) ''
310+ ${lib.optionalString (haskellLib.isLibrary componentId || haskellLib.isAll componentId) ''
463− $SETUP_HS register --gen-pkg-config=${name}.conf
311+ $SETUP_HS register --gen-pkg-config=${name}.conf
464− ${ghc.targetPrefix}ghc-pkg -v0 init $out/package.conf.d
312+ ${ghc.targetPrefix}ghc-pkg -v0 init $out/package.conf.d
313+ if [ -d "${name}.conf" ]; then
314+ for pkg in ${name}.conf/*; do
315+ ${ghc.targetPrefix}ghc-pkg -v0 --package-db ${configFiles}/${configFiles.packageCfgDir} -f $out/package.conf.d register "$pkg"
317+ elif [ -e "${name}.conf" ]; then
465 ${ghc.targetPrefix}ghc-pkg -v0 --package-db ${configFiles}/${configFiles.packageCfgDir} -f $out/package.conf.d register ${name}.conf
318 ${ghc.targetPrefix}ghc-pkg -v0 --package-db ${configFiles}/${configFiles.packageCfgDir} -f $out/package.conf.d register ${name}.conf
467− mkdir -p $out/exactDep
321+ mkdir -p $out/exactDep
468− touch $out/exactDep/configure-flags
322+ touch $out/exactDep/configure-flags
469− touch $out/exactDep/cabal.config
323+ touch $out/exactDep/cabal.config
470− touch $out/envDep
324+
472− ${ # The main library in a package has the same name as the package
473− if package.identifier.name == componentId.cname
475− if id=$(${target-pkg-and-db} field ${package.identifier.name} id --simple-output); then
325+ if id=$(${target-pkg-and-db} field ${package.identifier.name} id --simple-output); then
476− echo "--dependency=${package.identifier.name}=$id" >> $out/exactDep/configure-flags
326+ echo "--dependency=${package.identifier.name}=$id" >> $out/exactDep/configure-flags
477− echo "package-id $id" >> $out/envDep
479− echo 'ERROR: ${package.identifier.name} id could not be found with ${target-pkg-and-db}'
482− if ver=$(${target-pkg-and-db} field ${package.identifier.name} version --simple-output); then
327+ elif id=$(${target-pkg-and-db} field "z-${package.identifier.name}-z-*" id --simple-output); then
483− echo "constraint: ${package.identifier.name} == $ver" >> $out/exactDep/cabal.config
328+ name=$(${target-pkg-and-db} field "z-${package.identifier.name}-z-*" name --simple-output)
484− echo "constraint: ${package.identifier.name} installed" >> $out/exactDep/cabal.config
486− echo 'ERROR: ${package.identifier.name} version could not be found with ${target-pkg-and-db}'
491− # If the component name is not the package name this must be a sublib.
492− # As we build sublibs separately, the following query should be safe.
329+ # so we are dealing with a sublib. As we build sublibs separately, the above
493− (''
330+ # query should be safe.
494− if id=$(${target-pkg-and-db} field "z-${package.identifier.name}-z-*" id --simple-output); then
495− name=$(${target-pkg-and-db} field "z-${package.identifier.name}-z-*" name --simple-output)
496− echo "--dependency=''${name#z-${package.identifier.name}-z-}=$id" >> $out/exactDep/configure-flags
331+ echo "--dependency=''${name#z-${package.identifier.name}-z-}=$id" >> $out/exactDep/configure-flags
498− # Allow `package-name:sublib-name` to work in `build-depends`
499− # by adding the same `--dependency` again, but with the package
502− echo "--dependency=${package.identifier.name}:''${name#z-${package.identifier.name}-z-}=$id" >> $out/exactDep/configure-flags
504− echo 'ERROR: ${package.identifier.name} id could not be found with ${target-pkg-and-db}'
510− ${(lib.optionalString (haskellLib.isTest componentId || haskellLib.isBenchmark componentId) ''
512− if [ -f ${testExecutable} ]; then
513− mkdir -p $(dirname $out/bin/${exeName})
514− ${if stdenv.hostPlatform.isGhcjs then ''
515− cat <(echo \#!${lib.getBin buildPackages.nodejs-12_x}/bin/node) ${testExecutable} >| $out/bin/${exeName}
516− chmod +x $out/bin/${exeName}
518− cp -r ${testExecutable} $(dirname $out/bin/${exeName})
522− # In case `setup copy` did not create this
523− + (lib.optionalString enableSeparateDataOutput ''
526− + (lib.optionalString (stdenv.hostPlatform.isWindows && (haskellLib.mayHaveExecutable componentId)) (''
527− echo "Symlink libffi and gmp .dlls ..."
528− for p in ${lib.concatStringsSep " " [ libffi gmp ]}; do
529− find "$p" -iname '*.dll' -exec ln -s {} $out/bin \;
532− # symlink all .dlls into the local directory.
534− for p in $pkgsHostTargetAsString; do
535− find "$p" -iname '*.dll' -exec ln -s {} $out/bin \;
536− find "$p" -iname '*.dll.a' -exec ln -s {} $out/bin \;
539− + (lib.optionalString doCoverage ''
541− cp -r dist/hpc $out/share
542− cp dist/setup-config $out/
547− # Keep just the autogen files and package.conf.inplace package
548− # DB (probably empty unless this is a library component).
549− # We also have to remove any refernces to $out to avoid
550− # circular references.
551− lib.optionalString (configureAllComponents || keepSource) ''
552− mv dist dist-tmp-dir
554− if [ -d dist-tmp-dir/build/${componentId.cname}/autogen ]; then
555− mv dist-tmp-dir/build/${componentId.cname}/autogen dist/build/
556− elif [ -d dist-tmp-dir/build/autogen ]; then
557− mv dist-tmp-dir/build/autogen dist/build/
559− mv dist-tmp-dir/package.conf.inplace dist/
560− if [ -d dist/build/autogen ]; then
561− remove-references-to -t $out dist/build/autogen/*
565− ) + (lib.optionalString (keepSource && haskellLib.isLibrary componentId) ''
566− remove-references-to -t $out ${name}.conf
567− '') + (lib.optionalString (haskellLib.isTest componentId) ''
568− echo The test ${package.identifier.name}.components.tests.${componentId.cname} was built. To run the test build ${package.identifier.name}.checks.${componentId.cname}.
571− doInstallCheck = true;
572− installCheckPhase = lib.optionalString (haskellLib.isLibrary componentId) ''
573− if test -n "$(shopt -s nullglob; echo $out/package.conf.d/${name}-*.conf)"; then
574− echo $out/package.conf.d/${name}-*.conf " is present"
576− echo "ERROR: $out/package.conf.d/${name}-*.conf was not created"
333+ if ver=$(${target-pkg-and-db} field ${package.identifier.name} version --simple-output); then
334+ echo "constraint: ${package.identifier.name} == $ver" >> $out/exactDep/cabal.config
335+ echo "constraint: ${package.identifier.name} installed" >> $out/exactDep/cabal.config
339+ if id=$(${target-pkg-and-db} field ${package.identifier.name} id --simple-output); then
340+ echo "package-id $id" >> $out/envDep
580−
343+ ${(lib.optionalString (haskellLib.isTest componentId || haskellLib.isBenchmark componentId || haskellLib.isAll componentId) ''
345+ if [ -f ${testExecutable} ]; then
346+ mkdir -p $(dirname $out/bin/${exeName})
347+ ${if stdenv.hostPlatform.isGhcjs then ''
348+ cat <(echo \#!${lib.getBin buildPackages.nodejs}/bin/node) ${testExecutable} >| $out/bin/${exeName}
349+ chmod +x $out/bin/${exeName}
351+ cp -r ${testExecutable} $(dirname $out/bin/${exeName})
355+ # In case `setup copy` did not creat this
356+ + (lib.optionalString enableSeparateDataOutput "mkdir -p $data")
357+ + (lib.optionalString (stdenv.hostPlatform.isWindows && (haskellLib.mayHaveExecutable componentId)) ''
358+ echo "Symlink libffi and gmp .dlls ..."
359+ for p in ${lib.concatStringsSep " " [ libffi gmp ]}; do
360+ find "$p" -iname '*.dll' -exec ln -s {} $out/bin \;
362+ # symlink all .dlls into the local directory.
363+ # we ask ghc-pkg for *all* dynamic-library-dirs and then iterate over the unique set
364+ # to symlink over dlls as needed.
365+ echo "Symlink library dependencies..."
366+ for libdir in $(x86_64-pc-mingw32-ghc-pkg --package-db=$packageConfDir field "*" dynamic-library-dirs --simple-output|xargs|sed 's/ /\n/g'|sort -u); do
367+ if [ -d "$libdir" ]; then
368+ find "$libdir" -iname '*.dll' -exec ln -s {} $out/bin \;
374+ '' + (lib.optionalString keepSource ''
581− shellHook = ''
378+ shellHook = ''
582− export PATH="${shellWrappers}/bin:$PATH"
379+ export PATH="${shellWrappers}/bin:$PATH"
583− ${shellHookApplied}
380+ ${shellHookApplied}
383+# patches can (if they like) depend on the version and revision of the package.
384+// lib.optionalAttrs (patches != []) { patches = map (p: if builtins.isFunction p then p { inherit (package.identifier) version; inherit revision; } else p) patches; }
586− // haskellLib.optionalHooks {
385+// haskellLib.optionalHooks {
587− # These are the hooks that are not needed by haddock (see commonAttrs for the ones that
386+ inherit preUnpack postUnpack preConfigure postConfigure
588− # are shared with the haddock derivation)
590− preBuild postBuild
387+ preBuild postBuild
591− preInstall postInstall;
388+ preInstall postInstall preHaddock postHaddock;
593− // lib.optionalAttrs (hardeningDisable != [] || stdenv.hostPlatform.isMusl) {
390+// lib.optionalAttrs (stdenv.buildPlatform.libc == "glibc"){ LOCALE_ARCHIVE = "${buildPackages.glibcLocales}/lib/locale/locale-archive"; }
594− hardeningDisable = hardeningDisable ++ lib.optional stdenv.hostPlatform.isMusl "pie";
596−in drv; in self)
391+)); in self)
builder/default.nix+20−35
@@ -1,24 +1,20 @@
1−{ pkgs, buildPackages, evalPackages, stdenv, lib, haskellLib, ghc, compiler-nix-name, fetchurl, pkgconfig, nonReinstallablePkgs, hsPkgs, compiler }:
1+{ pkgs, buildPackages, stdenv, lib, haskellLib, ghc, fetchurl, pkgconfig, nonReinstallablePkgs, hsPkgs }:
4 # Builds a single component of a package.
4 # Builds a single component of a package.
5 comp-builder = haskellLib.weakCallPackage pkgs ./comp-builder.nix {
5 comp-builder = haskellLib.weakCallPackage pkgs ./comp-builder.nix {
6− inherit ghc haskellLib makeConfigFiles haddockBuilder ghcForComponent hsPkgs compiler;
6+ inherit ghc haskellLib makeConfigFiles ghcForComponent hsPkgs;
9− haddockBuilder = haskellLib.weakCallPackage pkgs ./haddock-builder.nix {
10− inherit ghc ghcForComponent haskellLib makeConfigFiles nonReinstallablePkgs;
13 setup-builder = haskellLib.weakCallPackage pkgs ./setup-builder.nix {
9 setup-builder = haskellLib.weakCallPackage pkgs ./setup-builder.nix {
14 ghc = (ghc.passthru.buildGHC or ghc);
10 ghc = (ghc.passthru.buildGHC or ghc);
15 hsPkgs = hsPkgs.buildPackages;
11 hsPkgs = hsPkgs.buildPackages;
16 # We need to use the buildPackages stdenv to build the setup-builder.
12 # We need to use the buildPackages stdenv to build the setup-builder.
17− # in the native case, it would be the same in the cross case however
13+ # in the native case, it would be the same in the corss case however
18− # we *really* want to build the Setup.hs on the build machine and not
14+ # re *really* want to build the Setup.hs on the build machine and not
19 # have the stdenv confuse it with the target/host env.
15 # have the stdenv confuse it with the target/host env.
20− inherit (buildPackages) stdenv pkgconfig;
16+ inherit (buildPackages) stdenv;
21− inherit buildPackages;
17+ inherit buildPackages pkgconfig;
22 inherit haskellLib nonReinstallablePkgs makeSetupConfigFiles;
18 inherit haskellLib nonReinstallablePkgs makeSetupConfigFiles;
@@ -26,9 +22,8 @@ let
26 # component builder and for nix-shells.
22 # component builder and for nix-shells.
27 ghcForComponent = import ./ghc-for-component-wrapper.nix {
23 ghcForComponent = import ./ghc-for-component-wrapper.nix {
28 inherit lib ghc haskellLib;
24 inherit lib ghc haskellLib;
29− inherit (buildPackages) stdenv;
25+ inherit (buildPackages) stdenv runCommand makeWrapper;
30− inherit (buildPackages.buildPackages) runCommand makeWrapper;
31− inherit (buildPackages.buildPackages.xorg) lndir;
26+ inherit (buildPackages.xorg) lndir;
34 # Builds a derivation which contains a ghc package-db of
29 # Builds a derivation which contains a ghc package-db of
@@ -45,30 +40,20 @@ let
46 hoogleLocal = let
41 hoogleLocal = let
47 nixpkgsHoogle = import (pkgs.path + /pkgs/development/haskell-modules/hoogle.nix);
42 nixpkgsHoogle = import (pkgs.path + /pkgs/development/haskell-modules/hoogle.nix);
48− in { packages ? [], hoogle ? pkgs.buildPackages.haskell-nix.tool "ghc8107" "hoogle" {
43+ in { packages ? [], hoogle ? pkgs.buildPackages.haskell-nix.haskellPackages.hoogle.components.exes.hoogle }:
49− inherit evalPackages;
44+ haskellLib.weakCallPackage pkgs nixpkgsHoogle {
50− version = "5.0.18.3";
51− index-state = pkgs.haskell-nix.internalHackageIndexState;
56− # For musl we can use haddock from the buildGHC
45+ # For musl we can use haddock from the buildGHC
57− ghc = if stdenv.hostPlatform.isLinux && stdenv.targetPlatform.isMusl && !haskellLib.isNativeMusl
46+ ghc = if stdenv.hostPlatform.isLinux && stdenv.targetPlatform.isMusl && !haskellLib.isNativeMusl
58− then ghc.buildGHC
47+ then ghc.buildGHC
59− else ghc;
48+ else ghc;
60− inherit packages hoogle;
49+ inherit packages hoogle;
62− in if lib.versionAtLeast lib.trivial.release "22.05"
63− then haskellLib.weakCallPackage pkgs nixpkgsHoogle {
64− inherit haskellPackages;
66− else haskellLib.weakCallPackage pkgs nixpkgsHoogle haskellPackages;
68 # Same as haskellPackages.shellFor in nixpkgs.
52 # Same as haskellPackages.shellFor in nixpkgs.
69 shellFor = haskellLib.weakCallPackage pkgs ./shell-for.nix {
53 shellFor = haskellLib.weakCallPackage pkgs ./shell-for.nix {
70− inherit hsPkgs ghcForComponent makeConfigFiles hoogleLocal haskellLib buildPackages evalPackages compiler;
54+ inherit hsPkgs ghcForComponent makeConfigFiles hoogleLocal haskellLib buildPackages;
71 inherit (buildPackages) glibcLocales;
55 inherit (buildPackages) glibcLocales;
56+ buildGHC = ghc.passthru.buildGHC or ghc;
74 # Same as haskellPackages.ghcWithPackages and ghcWithHoogle in nixpkgs.
59 # Same as haskellPackages.ghcWithPackages and ghcWithHoogle in nixpkgs.
@@ -83,10 +68,10 @@ in {
83 # Build a Haskell package from its config.
68 # Build a Haskell package from its config.
84 # TODO: this pkgs is the adjusted pkgs, but pkgs.pkgs is unadjusted
69 # TODO: this pkgs is the adjusted pkgs, but pkgs.pkgs is unadjusted
85 build-package = haskellLib.weakCallPackage pkgs ./hspkg-builder.nix {
70 build-package = haskellLib.weakCallPackage pkgs ./hspkg-builder.nix {
86− inherit haskellLib ghc compiler-nix-name comp-builder setup-builder;
71+ inherit haskellLib ghc comp-builder setup-builder;
89− inherit shellFor makeConfigFiles;
74+ inherit shellFor;
91 ghcWithPackages = withPackages { withHoogle = false; };
76 ghcWithPackages = withPackages { withHoogle = false; };
92 ghcWithHoogle = withPackages { withHoogle = true; };
77 ghcWithHoogle = withPackages { withHoogle = true; };
builder/ghc-for-component-wrapper.nix+13−65
@@ -7,18 +7,14 @@
9{ lib, stdenv, ghc, runCommand, lndir, makeWrapper, haskellLib
9{ lib, stdenv, ghc, runCommand, lndir, makeWrapper, haskellLib
12{ componentName # Full derivation name of the component
12{ componentName # Full derivation name of the component
13, configFiles # The component's "config" derivation
13, configFiles # The component's "config" derivation
14, postInstall ? ""
14, postInstall ? ""
20− ghc = if enableDWARF then defaults.ghc.dwarf else defaults.ghc;
22 inherit (configFiles) targetPrefix ghcCommand ghcCommandCaps packageCfgDir;
18 inherit (configFiles) targetPrefix ghcCommand ghcCommandCaps packageCfgDir;
23 libDir = "$out/${configFiles.libDir}";
19 libDir = "$out/${configFiles.libDir}";
24 docDir = "$out/share/doc/ghc/html";
20 docDir = "$out/share/doc/ghc/html";
@@ -38,70 +34,27 @@ in runCommand "${componentName}-${ghc.name}-env" {
39 . ${makeWrapper}/nix-support/setup-hook
35 . ${makeWrapper}/nix-support/setup-hook
42− # Start with a ghc and remove all of the package directories
37+ # Start with a ghc...
44 mkdir -p $out/bin
38 mkdir -p $out/bin
45 ${lndir}/bin/lndir -silent ${ghc} $out
39 ${lndir}/bin/lndir -silent ${ghc} $out
40+ # ... remove all of the package directories
46 rm -rf ${libDir}/*/
41 rm -rf ${libDir}/*/
48− # ... but retain the lib/ghc/bin directory. This contains `unlit' and friends.
42+ # ... but retain the lib/ghc/bin directory. This contains `unlit' and friends.
50 ln -s ${ghc}/lib/${ghcCommand}-${ghc.version}/bin ${libDir}
43 ln -s ${ghc}/lib/${ghcCommand}-${ghc.version}/bin ${libDir}
52− # ... and the ghcjs shim's if they are available ...
44+ # ... and the ghcjs shim's if they are available ...
54 if [ -d ${ghc}/lib/${ghcCommand}-${ghc.version}/shims ]; then
45 if [ -d ${ghc}/lib/${ghcCommand}-${ghc.version}/shims ]; then
55 ln -s ${ghc}/lib/${ghcCommand}-${ghc.version}/shims ${libDir}
46 ln -s ${ghc}/lib/${ghcCommand}-${ghc.version}/shims ${libDir}
58− # ... and node modules ...
48+ # ... and node modules ...
60 if [ -d ${ghc}/lib/${ghcCommand}-${ghc.version}/ghcjs-node ]; then
49 if [ -d ${ghc}/lib/${ghcCommand}-${ghc.version}/ghcjs-node ]; then
61 ln -s ${ghc}/lib/${ghcCommand}-${ghc.version}/ghcjs-node ${libDir}
50 ln -s ${ghc}/lib/${ghcCommand}-${ghc.version}/ghcjs-node ${libDir}
64− # Replace the package database with the one from target package config.
52+ # Replace the package database with the one from target package config.
66 ln -s ${configFiles}/${packageCfgDir} $out/${packageCfgDir}
53 ln -s ${configFiles}/${packageCfgDir} $out/${packageCfgDir}
68− ''
55+ # Wrap compiler executables with correct env variables.
69− # Set the GHC_PLUGINS environment variable according to the plugins for the component.
56+ # The NIX_ variables are used by the patched Paths_ghc module.
70− # GHC will automatically load the relevant symbols from the given libraries and
71− # initialize them with the given arguments.
73− # GHC_PLUGINS is a `read`able [(FilePath,String,String,[String])], where the
74− # first component is a path to the shared library, the second is the package ID,
75− # the third is the module name, and the fourth is the plugin arguments.
79− ${builtins.concatStringsSep "\n" (map (plugin: ''
80− id=$(${ghc}/bin/ghc-pkg --package-db ${plugin.library}/package.conf.d field ${plugin.library.package.identifier.name} id --simple-output)
81− lib_dir=$(${ghc}/bin/ghc-pkg --package-db ${plugin.library}/package.conf.d field ${plugin.library.package.identifier.name} dynamic-library-dirs --simple-output)
82− lib_base=$(${ghc}/bin/ghc-pkg --package-db ${plugin.library}/package.conf.d field ${plugin.library.package.identifier.name} hs-libraries --simple-output)
83− lib="$(echo ''${lib_dir}/lib''${lib_base}*)"
84− GHC_PLUGINS="''${GHC_PLUGINS}''${LIST_PREFIX}(\"''${lib}\",\"''${id}\",\"${plugin.moduleName}\",["
86− ${builtins.concatStringsSep "\n" (map (arg: ''
87− GHC_PLUGINS="''${GHC_PLUGINS}''${LIST_PREFIX}\"${arg}\""
90− GHC_PLUGINS="''${GHC_PLUGINS}])"
93− GHC_PLUGINS="''${GHC_PLUGINS}]"
96− # now the tricky bit. For GHCJS (to make plugins work), we need a special
97− # file called ghc_libdir. That points to the build ghc's lib.
99− echo "${ghc.buildGHC or ghc}/lib/${(ghc.buildGHC or ghc).name}" > "${libDir}/ghc_libdir"
102− # Wrap compiler executables with correct env variables.
103− # The NIX_ variables are used by the patched Paths_ghc module.
105 for prg in ${ghcCommand} ${ghcCommand}i ${ghcCommand}-${ghc.version} ${ghcCommand}i-${ghc.version}; do
58 for prg in ${ghcCommand} ${ghcCommand}i ${ghcCommand}-${ghc.version} ${ghcCommand}i-${ghc.version}; do
106 if [[ -x "${ghc}/bin/$prg" ]]; then
59 if [[ -x "${ghc}/bin/$prg" ]]; then
107 rm -f $out/bin/$prg
60 rm -f $out/bin/$prg
@@ -110,7 +63,6 @@ in runCommand "${componentName}-${ghc.name}-env" {
110 --set "NIX_${ghcCommandCaps}" "$out/bin/${ghcCommand}" \
63 --set "NIX_${ghcCommandCaps}" "$out/bin/${ghcCommand}" \
111 --set "NIX_${ghcCommandCaps}PKG" "$out/bin/${ghcCommand}-pkg" \
64 --set "NIX_${ghcCommandCaps}PKG" "$out/bin/${ghcCommand}-pkg" \
112 --set "NIX_${ghcCommandCaps}_DOCDIR" "${docDir}" \
65 --set "NIX_${ghcCommandCaps}_DOCDIR" "${docDir}" \
113− --set "GHC_PLUGINS" "$GHC_PLUGINS" \
114 --set "NIX_${ghcCommandCaps}_LIBDIR" "${libDir}"
66 --set "NIX_${ghcCommandCaps}_LIBDIR" "${libDir}"
@@ -123,14 +75,11 @@ in runCommand "${componentName}-${ghc.name}-env" {
123 --set "NIX_${ghcCommandCaps}" "$out/bin/${ghcCommand}" \
75 --set "NIX_${ghcCommandCaps}" "$out/bin/${ghcCommand}" \
124 --set "NIX_${ghcCommandCaps}PKG" "$out/bin/${ghcCommand}-pkg" \
76 --set "NIX_${ghcCommandCaps}PKG" "$out/bin/${ghcCommand}-pkg" \
125 --set "NIX_${ghcCommandCaps}_DOCDIR" "${docDir}" \
77 --set "NIX_${ghcCommandCaps}_DOCDIR" "${docDir}" \
126− --set "GHC_PLUGINS" "$GHC_PLUGINS" \
127 --set "NIX_${ghcCommandCaps}_LIBDIR" "${libDir}"
78 --set "NIX_${ghcCommandCaps}_LIBDIR" "${libDir}"
132− # Wrap haddock, if the base GHC provides it.
82+ # Wrap haddock, if the base GHC provides it.
134 if [[ -x "${haddock}/bin/haddock" ]]; then
83 if [[ -x "${haddock}/bin/haddock" ]]; then
135 rm -f $out/bin/haddock
84 rm -f $out/bin/haddock
136 makeWrapper ${haddock}/bin/haddock $out/bin/haddock \
85 makeWrapper ${haddock}/bin/haddock $out/bin/haddock \
@@ -138,10 +87,9 @@ in runCommand "${componentName}-${ghc.name}-env" {
138 --set "NIX_${ghcCommandCaps}_LIBDIR" "${libDir}"
87 --set "NIX_${ghcCommandCaps}_LIBDIR" "${libDir}"
142− # Point ghc-pkg to the package database of the component using the
90+ # Point ghc-pkg to the package database of the component using the
143− # --global-package-db flag.
91+ # --global-package-db flag.
145 for prg in ${ghcCommand}-pkg ${ghcCommand}-pkg-${ghc.version}; do
93 for prg in ${ghcCommand}-pkg ${ghcCommand}-pkg-${ghc.version}; do
146 if [[ -x "${ghc}/bin/$prg" ]]; then
94 if [[ -x "${ghc}/bin/$prg" ]]; then
147 rm -f $out/bin/$prg
95 rm -f $out/bin/$prg
builder/haddock-builder.nixdeleted−158
@@ -1,158 +0,0 @@
1−{ stdenv, buildPackages, lib, haskellLib, ghc, ghcForComponent, nonReinstallablePkgs, runCommand, writeText, writeScript, makeConfigFiles }:
12−, commonConfigureFlags
22−, configFiles # component config files
26− doHaddock' = doHaddock
27− && (haskellLib.isLibrary componentId)
28− && !haskellLib.isCrossHost;
30− # the target dir for haddock documentation
31− docdir = docoutput: docoutput + "/share/doc/" + componentId.cname;
33− packageCfgDir = configFiles.packageCfgDir;
35− fullName = "${componentDrv.name}-haddock";
37− # These config files are like the one used in the build derivation,
38− # but `chooseDrv` will be used to map all the references to libraries
39− # to their haddock derivation.
40− docsConfigFiles = makeConfigFiles {
41− inherit (package) identifier;
42− inherit component fullName flags needsProfiling;
43− chooseDrv = p: p.haddock;
44− inherit (componentDrv) enableDWARF;
47− finalConfigureFlags = lib.concatStringsSep " " (
48− [ "--prefix=${componentDrv}"
49− "${haskellLib.componentTarget componentId}"
50− "$(cat ${docsConfigFiles}/configure-flags)"
52− ++ commonConfigureFlags
53− ++ lib.optional doHaddock' " --docdir=${docdir "$doc"}");
55− shellWrappers = ghcForComponent {
56− componentName = fullName;
57− configFiles = docsConfigFiles;
58− inherit (componentDrv) enableDWARF;
59− inherit (component) plugins;
62− drv = stdenv.mkDerivation (commonAttrs // {
66− configFiles = docsConfigFiles;
68− # The directory containing the haddock documentation.
69− haddockDir = if doHaddock' then "${docdir drv.doc}/html" else null;
72− # `out` contains the `package.conf.d` files used for building the
74− # `doc` contains just the haddock output files.
76− ++ lib.optional doHaddock' "doc";
78− propagatedBuildInputs = builtins.concatLists pkgconfig;
80− buildInputs = component.libs
81− ++ map (d: d.components.library.haddock or d) component.depends;
84− [ shellWrappers buildPackages.removeReferencesTo ]
85− ++ componentDrv.executableToolDepends;
89− echo Configure flags:
90− printf "%q " ${finalConfigureFlags}
92− $SETUP_HS configure ${finalConfigureFlags}
93− runHook postConfigure
98− '' + lib.optionalString doHaddock' ''
101− docdir="${docdir "$doc"}"
102− # This mkdir needed for packages like base-noprelude and bytestring-builder
103− # (which is also empty when `bytestring >= 0.10.4`)
106− # If we don't have any source files, no need to run haddock
107− [[ -n $(find . -name "*.hs" -o -name "*.lhs") ]] && {
110− ${lib.optionalString doHoogle "--hoogle"} \
111− ${lib.optionalString hyperlinkSource "--hyperlink-source"} \
112− ${lib.optionalString quickjump "--quickjump"} \
113− ${lib.concatStringsSep " " setupHaddockFlags}
120− target-pkg-and-db = "${ghc.targetPrefix}ghc-pkg -v0 --package-db $out/package.conf.d";
122− html="dist/doc/html/${package.identifier.name}"
124− if [ -d "$html" ]; then
125− # Ensure that libraries are not pulled into the docs closure.
126− # As an example, the prettified source code of a
127− # Paths_package module will contain store paths of the library package.
128− for x in "$html/src/"*.html; do
129− remove-references-to -t $out $x
130− remove-references-to -t ${componentDrv} $x
133− docdir="${docdir "$doc"}"
136− cp -R "$html" "$docdir"/html
139− ${ghc.targetPrefix}ghc-pkg -v0 init $out/package.conf.d
141− for i in "${componentDrv}/package.conf.d"/*.conf; do
142− # Copy the .conf files from the build derivation, but replace the `haddock-intefaces:`
143− # field with correct location for haddocks (now it is known). This will insure that
144− # the other haddock derivations build to reference this one will have the correct
145− # working hyper links.
146− pkg=$(basename "$i")
147− sed -e "s|haddock-interfaces:.*|haddock-interfaces: $docdir/html/${componentId.cname}.haddock|" -e "s|haddock-html:.*|haddock-html: $docdir/html/|" "$i" > "$pkg"
148− ${ghc.targetPrefix}ghc-pkg -v0 --package-db ${docsConfigFiles}/${configFiles.packageCfgDir} -f $out/package.conf.d register "$pkg"
151− ln -s ${componentDrv}/exactDep $out/exactDep
152− ln -s ${componentDrv}/envDep $out/envDep
155− // haskellLib.optionalHooks {
156− inherit preHaddock postHaddock;
builder/hspkg-builder.nix+14−45
@@ -1,4 +1,4 @@
1−{ pkgs, buildPackages, stdenv, lib, haskellLib, ghc, compiler-nix-name, fetchurl, runCommand, comp-builder, setup-builder }:
1+{ pkgs, buildPackages, stdenv, lib, haskellLib, ghc, fetchurl, runCommand, comp-builder, setup-builder }:
@@ -23,44 +23,21 @@ assert (if ghc.isHaskellNixCompiler or false then true
23 + pkgs.lib.optionalString (name != null) (" for " + name)));
23 + pkgs.lib.optionalString (name != null) (" for " + name)));
26− # Some packages bundled with GHC are not the same as they are in hackage.
28− # These are problematic because the hackage versions will not install and are part of LTS.
29− "ghc902/stm-2.5.0.0" = "/libraries/stm";
30− "ghc902/filepath-1.4.2.1" = "/libraries/filepath";
31− }."${compiler-nix-name}/${name}" or null;
32− src = if bundledSrc == null then pkg.src else ghc.configured-src + bundledSrc;
33− cabalFile = if revision == null || revision == 0 || bundledSrc != null then null else
26+ cabalFile = if revision == null || revision == 0 then null else
34 fetchurl {
27 fetchurl {
35 name = "${name}-${toString revision}.cabal";
28 name = "${name}-${toString revision}.cabal";
36 url = "https://hackage.haskell.org/package/${name}/revision/${toString revision}.cabal";
29 url = "https://hackage.haskell.org/package/${name}/revision/${toString revision}.cabal";
37 sha256 = revisionSha256;
30 sha256 = revisionSha256;
40− defaultSetupSrc = if stdenv.hostPlatform.isGhcjs then ./Setup.ghcjs.hs else ./Setup.hs;
33+ defaultSetupSrc = builtins.toFile "Setup.hs" ''
41−
34+ import Distribution.Simple
42− # This is the `Cabal` library that was built for `cabal-install` to use.
35+ main = defaultMain
43− # It makes sense to use this version (when possible) because it will match the behavior of
36+ '';
44− # building with `cabal-install` (including fixes that may not be in the
45− # version of Cabal bundled with GHC).
46− cabalFromCabalInstall = buildPackages.haskell-nix.cabal-install-unchecked.${compiler-nix-name}.project.hsPkgs.Cabal.components.library;
48− # Check there is no chance we are building `cabalFromCabalInstall`. Using `cabalFromCabalInstall`
49− # to build itseld would cause infinite recursion.
50− useCabalFromCabalInstall =
51− # `cabalFromCabalInstall` is not cross compiled
52− stdenv.buildPlatform != stdenv.hostPlatform
54− # These are the dependencies of `Cabal`
55− !builtins.elem package.identifier.name
56− ["nix-tools" "alex" "happy" "hscolour" "Cabal" "bytestring" "aeson" "time"
57− "filepath" "base-compat-batteries" "base-compat" "unix" "directory" "transformers"
58− "containers" "binary" "mtl" "text" "process" "parsec"];
60− defaultSetup = setup-builder ({
37+ defaultSetup = setup-builder {
61 name = "${ghc.targetPrefix}default-Setup";
38 name = "${ghc.targetPrefix}default-Setup";
62 component = {
39 component = {
63− depends = config.setup-depends ++ lib.optional useCabalFromCabalInstall cabalFromCabalInstall;
40+ depends = config.setup-depends;
64 libs = [];
41 libs = [];
65 frameworks = [];
42 frameworks = [];
66 doExactConfig = false;
43 doExactConfig = false;
@@ -88,19 +65,12 @@ let
88 synopsis = null;
65 synopsis = null;
89 license = "MIT";
66 license = "MIT";
92− cleanSrc = buildPackages.runCommand "default-Setup-src" {} ''
68+ src = null; cleanSrc = buildPackages.runCommand "default-Setup-src" {} ''
93 mkdir $out
69 mkdir $out
94 cat ${defaultSetupSrc} > $out/Setup.hs
70 cat ${defaultSetupSrc} > $out/Setup.hs
96 inherit defaultSetupSrc;
72 inherit defaultSetupSrc;
97− } // lib.optionalAttrs useCabalFromCabalInstall {
98− # This is needed so that we don't get duplicate packages when we
99− # add a custom Cabal package to the dependencies. That way custom
100− # setups won't complain about e.g. binary from the Cabal dependencies
101− # and binary from the global package-db.
102− nonReinstallablePkgs = [];
105 # buildPackages.runCommand "default-Setup" { nativeBuildInputs = [(ghc.passthru.buildGHC or ghc)]; } ''
75 # buildPackages.runCommand "default-Setup" { nativeBuildInputs = [(ghc.passthru.buildGHC or ghc)]; } ''
106 # cat ${defaultSetupSrc} > Setup.hs
76 # cat ${defaultSetupSrc} > Setup.hs
@@ -114,24 +84,23 @@ let
114 component = components.setup // {
84 component = components.setup // {
115 depends = config.setup-depends ++ components.setup.depends ++ package.setup-depends;
85 depends = config.setup-depends ++ components.setup.depends ++ package.setup-depends;
116 extraSrcFiles = components.setup.extraSrcFiles ++ [ "Setup.hs" "Setup.lhs" ];
86 extraSrcFiles = components.setup.extraSrcFiles ++ [ "Setup.hs" "Setup.lhs" ];
117− pkgconfig = if components ? library then components.library.pkgconfig or [] else [];
119 inherit package name src flags revision patches defaultSetupSrc;
88 inherit package name src flags revision patches defaultSetupSrc;
120 inherit (pkg) preUnpack postUnpack;
89 inherit (pkg) preUnpack postUnpack;
123− buildComp = allComponent: componentId: component: comp-builder {
92+ buildComp = componentId: component: comp-builder {
124− inherit allComponent componentId component package name src flags setup cabalFile cabal-generator patches revision
93+ inherit componentId component package name src flags setup cabalFile cabal-generator patches revision
125 shellHook
94 shellHook
130− components = haskellLib.applyComponents (buildComp pkg.allComponent) pkg;
99+ components = haskellLib.applyComponents buildComp pkg;
131 checks = pkgs.recurseIntoAttrs (builtins.mapAttrs
100 checks = pkgs.recurseIntoAttrs (builtins.mapAttrs
132 (_: d: haskellLib.check d)
101 (_: d: haskellLib.check d)
133 (lib.filterAttrs (_: d: d.config.doCheck) components.tests));
102 (lib.filterAttrs (_: d: d.config.doCheck) components.tests));
134− inherit (package) identifier detailLevel isLocal isProject buildType;
103+ inherit (package) identifier detailLevel isLocal;
135 inherit setup cabalFile;
104 inherit setup cabalFile;
136 isHaskell = true;
105 isHaskell = true;
137 inherit src;
106 inherit src;
builder/make-config-files.nix+30−66
@@ -1,14 +1,6 @@
1−{ stdenv, lib, haskellLib, ghc, nonReinstallablePkgs, runCommand, writeText, writeScript }@defaults:
1+{ stdenv, lib, haskellLib, ghc, nonReinstallablePkgs, runCommand, writeText, writeScript }:
3−{ identifier, component, fullName, flags ? {}, needsProfiling ? false, enableDWARF ? false, chooseDrv ? drv: drv, nonReinstallablePkgs ? defaults.nonReinstallablePkgs }:
6− # Sort and remove duplicates from nonReinstallablePkgs.
7− # That way changes to the order of nonReinstallablePkgs does not require rebuilds.
8− nonReinstallablePkgs' = __attrNames (lib.genAttrs nonReinstallablePkgs (x: x));
10− ghc = if enableDWARF then defaults.ghc.dwarf else defaults.ghc;
12 flagsAndConfig = field: xs: lib.optionalString (xs != []) ''
4 flagsAndConfig = field: xs: lib.optionalString (xs != []) ''
13 echo ${lib.concatStringsSep " " (map (x: "--${field}=${x}") xs)} >> $out/configure-flags
5 echo ${lib.concatStringsSep " " (map (x: "--${field}=${x}") xs)} >> $out/configure-flags
14 echo "${field}: ${lib.concatStringsSep " " xs}" >> $out/cabal.config
6 echo "${field}: ${lib.concatStringsSep " " xs}" >> $out/cabal.config
@@ -16,18 +8,18 @@ let
17 target-pkg = "${ghc.targetPrefix}ghc-pkg";
9 target-pkg = "${ghc.targetPrefix}ghc-pkg";
19− # This is a bit of a hack. So we'll have a slightly longer explanation here:
11+ # This is a bit of a hack. So we'll have a slightly longer explaination here:
21 # Every library component built with `comp-builder.nix` includes an `exactDep`
13 # Every library component built with `comp-builder.nix` includes an `exactDep`
22 # and `envDep` directory with precomputed values used here.
14 # and `envDep` directory with precomputed values used here.
23 # GHC derivations include `exactDep` and `envDep` directories that have
15 # GHC derivations include `exactDep` and `envDep` directories that have
24 # the same information for each of the built in packages.
16 # the same information for each of the built in packages.
26− # exactDep will pass --exact-configuration to the `SETUP_HS configure` command.
18+ # exactDep will pass --exact-configuration to the `SETUP_HS confiugre` command.
27 # This requires us to pass --dependency={dep name}={pkg id}. The dependency
19 # This requires us to pass --dependency={dep name}={pkg id}. The dependency
28 # name will usually be the name of the package `p`, which we can locate in the
20 # name will usually be the name of the package `p`, which we can locate in the
29 # package-db, passed in via `pdbArg`. Thus querying the package-db for the
21 # package-db, passed in via `pdbArg`. Thus querying the package-db for the
30− # id field for package `p`, will usually provide us with the right value. Sublibs
22+ # id field for package `p`, will unsually provide is with the right value. Sublibs
31 # need a bit of special handling:
23 # need a bit of special handling:
33 # - Sublibs: if the dependency is a sublibrary of a package, we need to use
25 # - Sublibs: if the dependency is a sublibrary of a package, we need to use
@@ -49,35 +41,25 @@ let
49 libDir = "lib/${ghcCommand}-${ghc.version}";
41 libDir = "lib/${ghcCommand}-${ghc.version}";
50 packageCfgDir = "${libDir}/package.conf.d";
42 packageCfgDir = "${libDir}/package.conf.d";
44+in { identifier, component, fullName, flags ? {}, needsProfiling ? false }:
52 # Filters out only library packages that for this GHC target
45 # Filters out only library packages that for this GHC target
53 # TODO investigate why this is needed
46 # TODO investigate why this is needed
54 # TODO find out why p ? configFiles helps (for instance for `R1909.aarch64-unknown-linux-gnu.tests.cabal-22.run.x86_64-linux`)
47 # TODO find out why p ? configFiles helps (for instance for `R1909.aarch64-unknown-linux-gnu.tests.cabal-22.run.x86_64-linux`)
55− libDeps = map chooseDrv (
56− (if enableDWARF then (x: map (p: p.dwarf or p) x) else x: x)
57− ((if needsProfiling then (x: map (p: p.profiled or p) x) else x: x)
48+ let libDeps = (if needsProfiling then (x: map (p: p.profiled or p) x) else x: x)
58− (lib.filter (p: (p ? configFiles) && p.configFiles.targetPrefix == ghc.targetPrefix)
49+ (lib.filter (p: (p ? configFiles) && p.configFiles.targetPrefix == ghc.targetPrefix)
59− (map getLibComponent component.depends)))
50+ (map getLibComponent component.depends));
61− cfgFiles =
51+ cfgFiles =
62− let xs = map
52+ let xs = map
63− (p: "${p.configFiles}")
53+ (p: "${p.configFiles}")
65− in lib.concatStringsSep "\" \"" xs;
55+ in lib.concatStringsSep "\" \"" xs;
66− libs = lib.concatMapStringsSep "\" \"" (p: "${p}") libDeps;
56+ libs = lib.concatMapStringsSep "\" \"" (p: "${p}") libDeps;
67− drv = runCommand "${ghc.targetPrefix}${fullName}-config" {
58+ runCommand "${ghc.targetPrefix}${fullName}-config" {
68 nativeBuildInputs = [ghc];
59 nativeBuildInputs = [ghc];
69 passthru = {
60 passthru = {
70 inherit (ghc) targetPrefix;
61 inherit (ghc) targetPrefix;
71− inherit ghcCommand ghcCommandCaps libDir packageCfgDir component;
62+ inherit ghcCommand ghcCommandCaps libDir packageCfgDir;
72− # Use ''${pkgroot} relative paths so that we can relocate the package database
73− # along with referenced packages and still have it work on systems with
74− # or without nix installed.
75− relocatableConfigFiles = runCommand "${ghc.targetPrefix}${fullName}-relocatable-config" ''
78− sed -i 's|/nix/store/|''${pkgroot}/../../../|' $out/${packageCfgDir}/*.conf
79− ${target-pkg} -v0 --package-db $out/${packageCfgDir} recache
83 mkdir -p $out
65 mkdir -p $out
@@ -85,44 +67,27 @@ let
85 ${target-pkg} init $out/${packageCfgDir}
67 ${target-pkg} init $out/${packageCfgDir}
87 ${lib.concatStringsSep "\n" (lib.mapAttrsToList flagsAndConfig {
69 ${lib.concatStringsSep "\n" (lib.mapAttrsToList flagsAndConfig {
88− "extra-lib-dirs" = map (p: "${lib.getLib p}/lib") (lib.flatten component.libs)
70+ "extra-lib-dirs" = map (p: "${lib.getLib p}/lib") component.libs;
89− # On windows also include `bin` directories that may contain DLLs
90− ++ lib.optionals (stdenv.hostPlatform.isWindows)
91− (map (p: "${lib.getBin p}/bin")
92− (lib.flatten component.libs ++ lib.concatLists component.pkgconfig));
93− "extra-include-dirs" = map (p: "${lib.getDev p}/include") (lib.flatten component.libs);
71+ "extra-include-dirs" = map (p: "${lib.getDev p}/include") component.libs;
94− "extra-framework-dirs" = lib.optionals (stdenv.hostPlatform.isDarwin)
95− (map (p: "${p}/Library/Frameworks") component.frameworks);
72+ "extra-framework-dirs" = map (p: "${p}/Library/Frameworks") component.frameworks;
98 ghc=${ghc}
75 ghc=${ghc}
99 ${ # Copy over the nonReinstallablePkgs from the global package db.
76 ${ # Copy over the nonReinstallablePkgs from the global package db.
101− for p in ${lib.concatStringsSep " " nonReinstallablePkgs'}; do
78+ for p in ${lib.concatStringsSep " " nonReinstallablePkgs}; do
102 find $ghc/lib/${ghc.name}/package.conf.d -name $p'*.conf' -exec cp -f {} $out/${packageCfgDir} \;
79 find $ghc/lib/${ghc.name}/package.conf.d -name $p'*.conf' -exec cp -f {} $out/${packageCfgDir} \;
106 for l in "${cfgFiles}"; do
83 for l in "${cfgFiles}"; do
107 if [ -n "$l" ]; then
84 if [ -n "$l" ]; then
108− files=("$l/${packageCfgDir}/"*.conf)
109− if (( ''${#files[@]} )); then
110− cp -f "''${files[@]}" $out/${packageCfgDir}
85+ cp -f "$l/${packageCfgDir}/"*.conf $out/${packageCfgDir}
112− echo "$l/${packageCfgDir} didn't contain any *.conf files!"
117 for l in "${libs}"; do
88 for l in "${libs}"; do
118 if [ -n "$l" ]; then
89 if [ -n "$l" ]; then
119− files=("$l/package.conf.d/"*.conf)
120− if (( ''${#files[@]} )); then
121− cp -f "''${files[@]}" $out/${packageCfgDir}
90+ cp -f "$l/package.conf.d/"*.conf $out/${packageCfgDir}
123− echo "$l/package.conf.d didn't contain any *.conf files!"
@@ -157,26 +122,26 @@ let
157 cat $p/exactDep/cabal.config >> $out/cabal.config
122 cat $p/exactDep/cabal.config >> $out/cabal.config
160− for p in ${lib.concatStringsSep " " (lib.remove "ghc" nonReinstallablePkgs')}; do
125+ for p in ${lib.concatStringsSep " " (lib.remove "ghc" nonReinstallablePkgs)}; do
161 if [ -e $ghc/envDeps/$p ]; then
126 if [ -e $ghc/envDeps/$p ]; then
162 cat $ghc/envDeps/$p >> $out/ghc-environment
127 cat $ghc/envDeps/$p >> $out/ghc-environment
165 '' + lib.optionalString component.doExactConfig ''
130 '' + lib.optionalString component.doExactConfig ''
166− for p in ${lib.concatStringsSep " " nonReinstallablePkgs'}; do
131+ for p in ${lib.concatStringsSep " " nonReinstallablePkgs}; do
167 if [ -e $ghc/exactDeps/$p ]; then
132 if [ -e $ghc/exactDeps/$p ]; then
168 cat $ghc/exactDeps/$p/configure-flags >> $out/configure-flags
133 cat $ghc/exactDeps/$p/configure-flags >> $out/configure-flags
169 cat $ghc/exactDeps/$p/cabal.config >> $out/cabal.config
134 cat $ghc/exactDeps/$p/cabal.config >> $out/cabal.config
173 # This code originates in the `generic-builder.nix` from nixpkgs. However GHC has been fixed
138 # This code originates in the `generic-builder.nix` from nixpkgs. However GHC has been fixed
174− # to drop unused libraries referenced from libraries; and this patch is usually included in the
139+ # to drop unused libraries referneced from libraries; and this patch is usually included in the
175− # nixpkgs's GHC builds. This doesn't sadly make this stupid hack unnecessary. It resurfaces in
140+ # nixpkgs's GHC builds. This doesn't sadly make this stupid hack unnecessary. It resurfes in
176 # the form of Cabal trying to be smart. Cabal when linking a library figures out that you likely
141 # the form of Cabal trying to be smart. Cabal when linking a library figures out that you likely
177 # need those `rpath` entries, and passes `-optl-Wl,-rpath,...` for each dynamic library path to
142 # need those `rpath` entries, and passes `-optl-Wl,-rpath,...` for each dynamic library path to
178 # GHC, thus subverting the linker and forcing it to insert all those RPATHs weather or not they
143 # GHC, thus subverting the linker and forcing it to insert all those RPATHs weather or not they
179− # are needed. We therefore reuse the linker hack here to move all dynamic libraries into a
144+ # are needed. We therfore reuse the linker hack here to move all al dynamic lirbaries into a
180 # common folder (as links) and thus prevent Cabal from going nuts.
145 # common folder (as links) and thus prevent Cabal from going nuts.
182 # TODO: Fix Cabal.
147 # TODO: Fix Cabal.
@@ -218,5 +183,4 @@ let
220 ${target-pkg} -v0 --package-db $out/${packageCfgDir} recache
185 ${target-pkg} -v0 --package-db $out/${packageCfgDir} recache
builder/setup-builder.nix+22−37
@@ -1,29 +1,21 @@
1−{ pkgs, stdenv, lib, buildPackages, haskellLib, ghc, nonReinstallablePkgs, hsPkgs, makeSetupConfigFiles, pkgconfig }@defaults:
1+{ stdenv, lib, buildPackages, haskellLib, ghc, nonReinstallablePkgs, hsPkgs, makeSetupConfigFiles, pkgconfig }:
4−{ component, package, name, src, enableDWARF ? false, flags ? {}, revision ? null, patches ? [], defaultSetupSrc
3+{ component, package, name, src, flags ? {}, revision ? null, patches ? [], defaultSetupSrc
5, preUnpack ? component.preUnpack, postUnpack ? component.postUnpack
4, preUnpack ? component.preUnpack, postUnpack ? component.postUnpack
6, prePatch ? null, postPatch ? null
5, prePatch ? null, postPatch ? null
7, preBuild ? component.preBuild , postBuild ? component.postBuild
6, preBuild ? component.preBuild , postBuild ? component.postBuild
8, preInstall ? component.preInstall , postInstall ? component.postInstall
7, preInstall ? component.preInstall , postInstall ? component.postInstall
9−, cleanSrc ? haskellLib.cleanCabalComponent package component "setup" src
8+, cleanSrc ? haskellLib.cleanCabalComponent package component src
10−, nonReinstallablePkgs ? defaults.nonReinstallablePkgs
9+}:
11−, smallAddressSpace ? false
15− ghc = (if enableDWARF then (x: x.dwarf) else (x: x)) (
16− (if smallAddressSpace then (x: x.smallAddressSpace) else (x: x)) defaults.ghc);
18− cleanSrc' = haskellLib.rootAndSubDir cleanSrc;
20 fullName = "${name}-setup";
12 fullName = "${name}-setup";
22 includeGhcPackage = lib.any (p: p.identifier.name == "ghc") component.depends;
14 includeGhcPackage = lib.any (p: p.identifier.name == "ghc") component.depends;
24 configFiles = makeSetupConfigFiles {
16 configFiles = makeSetupConfigFiles {
25 inherit (package) identifier;
17 inherit (package) identifier;
26− inherit fullName flags component enableDWARF nonReinstallablePkgs;
18+ inherit fullName flags component;
28 hooks = haskellLib.optionalHooks {
20 hooks = haskellLib.optionalHooks {
@@ -40,10 +32,11 @@ let
40 else [c]) component.build-tools) ++
32 else [c]) component.build-tools) ++
41 lib.optional (component.pkgconfig != []) pkgconfig;
33 lib.optional (component.pkgconfig != []) pkgconfig;
44 stdenv.mkDerivation ({
37 stdenv.mkDerivation ({
45 name = "${ghc.targetPrefix}${fullName}";
38 name = "${ghc.targetPrefix}${fullName}";
46− src = cleanSrc'.root;
39+ src = cleanSrc;
47 buildInputs = component.libs
40 buildInputs = component.libs
48 ++ component.frameworks
41 ++ component.frameworks
49 ++ builtins.concatLists component.pkgconfig;
42 ++ builtins.concatLists component.pkgconfig;
@@ -52,19 +45,18 @@ let
52 passthru = {
45 passthru = {
53 inherit (package) identifier;
46 inherit (package) identifier;
54 config = component;
47 config = component;
55− srcSubDir = cleanSrc'.subDir;
56− srcSubDirPath = cleanSrc'.root + cleanSrc'.subDir;
57− cleanSrc = cleanSrc';
58− inherit configFiles;
48+ inherit configFiles cleanSrc;
59− dwarf = self (drvArgs // { enableDWARF = true; });
60− smallAddressSpace = self (drvArgs // { smallAddressSpace = true; });
64− homepage = package.homepage or "";
52+ homepage = package.homepage;
65− description = package.synopsis or "";
53+ description = package.synopsis;
66− license = haskellLib.cabalToNixpkgsLicense package.license;
54+ license =
56+ license-map = import ../lib/cabal-licenses.nix lib;
57+ in license-map.${package.license} or
58+ (builtins.trace "WARNING: license \"${package.license}\" not found" license-map.LicenseRef-OtherLicense);
67− platforms = if component.platforms == null then lib.platforms.all else component.platforms;
59+ platforms = if component.platforms == null then stdenv.lib.platforms.all else component.platforms;
70 phases = ["unpackPhase" "patchPhase" "buildPhase" "installPhase"];
62 phases = ["unpackPhase" "patchPhase" "buildPhase" "installPhase"];
@@ -76,12 +68,13 @@ let
76 for f in Setup.hs Setup.lhs; do
68 for f in Setup.hs Setup.lhs; do
77 if [ -f $f ]; then
69 if [ -f $f ]; then
78 echo Compiling package $f
70 echo Compiling package $f
79− ghc $f -threaded ${if includeGhcPackage then "-package ghc " else ""
71+ ghc $f -threaded '' + (if includeGhcPackage then "-package ghc " else "")
80− }-package-db ${configFiles}/${configFiles.packageCfgDir} --make -o ./Setup
72+ + ''-package-db ${configFiles}/${configFiles.packageCfgDir} --make -o ./Setup
83 [ -f ./Setup ] || (echo Failed to build Setup && exit 1)
76 [ -f ./Setup ] || (echo Failed to build Setup && exit 1)
84− runHook postBuild
77+ runHook preBuild
87 installPhase = ''
80 installPhase = ''
@@ -91,14 +84,6 @@ let
91 runHook postInstall
84 runHook postInstall
94− // (lib.optionalAttrs (cleanSrc'.subDir != "") {
96− # If the package is in a sub directory `cd` there first
98− cd ${lib.removePrefix "/" cleanSrc'.subDir}
101 // (lib.optionalAttrs (patches != []) { patches = map (p: if builtins.isFunction p then p { inherit (package.identifier) version; inherit revision; } else p) patches; })
87 // (lib.optionalAttrs (patches != []) { patches = map (p: if builtins.isFunction p then p { inherit (package.identifier) version; inherit revision; } else p) patches; })
builder/shell-for.nix+40−124
@@ -1,113 +1,57 @@
1−{ lib, stdenv, mkShell, glibcLocales, pkgconfig, ghcForComponent, makeConfigFiles, hsPkgs, hoogleLocal, haskellLib, buildPackages, evalPackages, compiler }:
1+{ lib, stdenv, glibcLocales, pkgconfig, ghcForComponent, makeConfigFiles, hsPkgs, hoogleLocal, haskellLib, buildPackages, buildGHC }:
3−{ # `packages` function selects packages that will be worked on in the shell itself.
3+{ packages ? ps:
4− # These packages will not be built by `shellFor`, but their
4+ let
5− # dependencies will be included in the shell's `ghc-pkg list`.
5+ selected = haskellLib.selectLocalPackages ps;
7+ builtins.trace ("Shell for " + toString (builtins.attrNames selected))
6− packages ? ps: builtins.attrValues (haskellLib.selectLocalPackages ps)
8+ (builtins.attrValues selected)
7− # `components` function selects components that will be worked on in the shell itself.
8− # By default `shellFor` will include the dependencies of all of the components
9− # in the selected packages. If only as subset of the components will be
10− # worked on in the shell then we can pass a different `components` function
12−, components ? ps: lib.concatMap haskellLib.getAllComponents (packages ps)
13− # Additional packages to be added unconditionally
14, additional ? _: []
9, additional ? _: []
15, withHoogle ? true
10, withHoogle ? true
16−, withHaddock ? withHoogle
17, exactDeps ? false
11, exactDeps ? false
18, tools ? {}
12, tools ? {}
19−, packageSetupDeps ? true
21, ... } @ args:
13, ... } @ args:
24 # TODO find out why hoogle index creation can be made to work for cross compilers
16 # TODO find out why hoogle index creation can be made to work for cross compilers
25 withHoogle' = withHoogle && !haskellLib.isCrossHost;
17 withHoogle' = withHoogle && !haskellLib.isCrossHost;
18+ selected = packages hsPkgs;
19+ additionalSelected = additional hsPkgs;
20+ selectedConfigs = map (p: p.components.all.config) selected;
27− selectedPackages = packages hsPkgs;
28− additionalPackages = additional hsPkgs;
29− directlySelectedComponents = components hsPkgs;
31− # Given `directlySelectedComponents = [ a b ]`, we construct a shell that includes all of their dependencies
33− # But we want to exclude `a` if it is a transitive dependecy of `b`
35− # - cabal will end up ignoring that built version;
36− # - The user has indicated that's what they're working on, so they probably don't want to have to build
37− # it first (and it will change often).
38− # Generally we never want to include any of `directlySelectedComponents` as dependencies.
40− # We do this by defining a set of `selectedComponents`, where `x` is in `selectedComponents` if and only if:
41− # - `x` is in `directlySelectedComponents`
42− # - `x` is a transitive dependency of something in `directlySelectedComponents`
43− # and `x` transitively depends on something in `directlySelectedComponents`
44− # We use the dependencies of `selectedComponents` filtering out members of `selectedComponents`
46− # Furthermore, if `a` depends on `b`, `a` will include the library component of `b` in its `buildInputs`
47− # (to make `propagatedBuildInputs` of `pkgconfig-depends` work). So we also need to filter those
48− # (the pkgconfig depends of `b` will still be included in the
49− # system shell's `buildInputs` via `b`'s own `buildInputs`).
52− # all packages that are indirectly depended on by `directlySelectedComponents`
53− # including `directlySelectedComponents`
54− transitiveDependenciesComponents =
56− (builtins.map (x: lib.nameValuePair (x.name) x)
57− (haskellLib.flatLibDepends {depends = directlySelectedComponents;}));
59− isSelectedComponent =
60− comp: selectedComponentsBitmap."${((haskellLib.dependToLib comp).name or null)}" or false;
61− selectedComponentsBitmap =
63− (_: x: (builtins.any isSelectedComponent x.config.depends))
64− transitiveDependenciesComponents
65− // builtins.listToAttrs (map (x: lib.nameValuePair x.name true) directlySelectedComponents); # base case
68− lib.filter isSelectedComponent (lib.attrValues transitiveDependenciesComponents);
70− # Given a list of `depends`, removes those which are selected components
71− removeSelectedInputs =
72− lib.filter (input: !(isSelectedComponent input));
74− # The configs of all the selected components.
75− # This excludes the `setup` dependencies of `Simple` packages, because
76− # `cabal-install` does not build a `Setup` executable for `Simple` packages.
77− selectedConfigs = map (c: c.config) selectedComponents
78− ++ lib.optionals packageSetupDeps (map (p: p.setup.config)
79− (lib.filter (p: p.buildType != "Simple") selectedPackages));
81− name = if lib.length selectedPackages == 1
22+ name = if lib.length selected == 1
82− then "ghc-shell-for-${(lib.head selectedPackages).identifier.name}"
23+ then "ghc-shell-for-${(lib.head selected).identifier.name}"
83 else "ghc-shell-for-packages";
24 else "ghc-shell-for-packages";
85− # We need to remove any dependencies which would bring in selected components (see above).
26+ # Removes the selected packages from a list of packages.
86− packageInputs = removeSelectedInputs (lib.concatMap (cfg: cfg.depends) selectedConfigs)
27+ # If `packages = [ a b ]` and `a` depends on `b`, don't build `b`,
87− ++ additionalPackages;
28+ # because cabal will end up ignoring that built version;
29+ removeSelected = lib.filter
30+ (input: lib.all (cfg: (input.identifier or null) != cfg.identifier) selected);
32+ packageInputs = removeSelected
33+ (lib.concatMap (cfg: cfg.depends) selectedConfigs
34+ ++ additionalSelected
35+ ++ lib.concatMap (cfg: cfg.setup.config.depends or []) selected
89− # Add the system libraries and build tools of the selected haskell packages to the shell.
38+ # Add the system libraries and build tools of the selected haskell
90− # We need to remove any inputs which are selected components (see above).
39+ # packages to the shell.
91− # `buildInputs`, `propagatedBuildInputs`, and `executableToolDepends` contain component
92− # derivations, not packages, so we use `removeSelectedInputs`).
93− systemInputs = removeSelectedInputs (lib.concatMap
40+ systemInputs = lib.concatMap (p: p.components.all.buildInputs) selected;
94− (c: c.buildInputs ++ c.propagatedBuildInputs) selectedComponents);
95− nativeBuildInputs = removeSelectedInputs
41+ nativeBuildInputs = removeSelected
96− (lib.concatMap (c: c.executableToolDepends) selectedComponents);
42+ (lib.concatMap (p: p.components.all.executableToolDepends) selected);
98 # Set up a "dummy" component to use with ghcForComponent.
44 # Set up a "dummy" component to use with ghcForComponent.
99 component = {
45 component = {
100 depends = packageInputs;
46 depends = packageInputs;
101 libs = [];
47 libs = [];
103 frameworks = [];
48 frameworks = [];
104 doExactConfig = false;
49 doExactConfig = false;
106 configFiles = makeConfigFiles {
51 configFiles = makeConfigFiles {
107 fullName = args.name or name;
52 fullName = args.name or name;
108 identifier.name = name;
53 identifier.name = name;
109− inherit component enableDWARF;
54+ inherit component;
110− chooseDrv = p: if withHaddock && p ? haddock then p.haddock else p;
112 ghcEnv = ghcForComponent {
56 ghcEnv = ghcForComponent {
113 inherit configFiles;
57 inherit configFiles;
@@ -115,8 +59,6 @@ let
115 postInstall = lib.optionalString withHoogle' ''
59 postInstall = lib.optionalString withHoogle' ''
116 ln -s ${hoogleIndex}/bin/hoogle $out/bin
60 ln -s ${hoogleIndex}/bin/hoogle $out/bin
118− inherit enableDWARF;
122 hoogleIndex = let
64 hoogleIndex = let
@@ -126,55 +68,29 @@ let
126 pname = p.identifier.name;
68 pname = p.identifier.name;
127 haddockDir = lib.const p.haddockDir;
69 haddockDir = lib.const p.haddockDir;
129− in hoogleLocal ({
71+ in hoogleLocal {
130 packages = map docPackage (haskellLib.flatLibDepends component);
72 packages = map docPackage (haskellLib.flatLibDepends component);
132 # Need to add hoogle to hsPkgs.
74 # Need to add hoogle to hsPkgs.
133 # inherit (hsPkgs) hoogle;
75 # inherit (hsPkgs) hoogle;
135− lib.optionalAttrs (args ? tools && args.tools ? hoogle) {
136− hoogle = buildPackages.haskell-nix.hackage-tool (
137− haskellLib.versionOrModToMods args.tools.hoogle ++ [{
139− compiler-nix-name = compiler.nix-name;
140− inherit evalPackages;
145− mkDrvArgs = builtins.removeAttrs args ["packages" "components" "additional" "withHoogle" "tools"];
78+ mkDrvArgs = builtins.removeAttrs args ["packages" "additional" "withHoogle" "tools"];
147− mkShell (mkDrvArgs // {
80+ stdenv.mkDerivation (mkDrvArgs // {
148 name = mkDrvArgs.name or name;
81 name = mkDrvArgs.name or name;
150 buildInputs = systemInputs
83 buildInputs = systemInputs
151− ++ mkDrvArgs.buildInputs or [];
84+ ++ mkDrvArgs.buildInputs or []
85+ ++ lib.optional withHoogle' hoogleIndex;
152 nativeBuildInputs = [ ghcEnv ]
86 nativeBuildInputs = [ ghcEnv ]
153 ++ nativeBuildInputs
87 ++ nativeBuildInputs
154 ++ mkDrvArgs.nativeBuildInputs or []
88 ++ mkDrvArgs.nativeBuildInputs or []
155− ++ lib.attrValues (buildPackages.haskell-nix.tools' evalPackages compiler.nix-name tools)
89+ ++ lib.attrValues (buildPackages.haskell-nix.toolsForGhc buildGHC tools);
156− # If this shell is a cross compilation shell include
157− # wrapper script for running cabal build with appropriate args.
158− # Includes `--with-compiler` in case the `cabal.project` file has `with-compiler:` in it.
159− ++ lib.optional (ghcEnv.targetPrefix != "") (
160− buildPackages.writeShellScriptBin "${ghcEnv.targetPrefix}cabal" ''
162− --with-ghc=${ghcEnv.targetPrefix}ghc \
163− --with-compiler=${ghcEnv.targetPrefix}ghc \
164− --with-ghc-pkg=${ghcEnv.targetPrefix}ghc-pkg \
165− --with-hsc2hs=${ghcEnv.targetPrefix}hsc2hs \
166− ${lib.optionalString (ghcEnv.targetPrefix == "js-unknown-ghcjs-") ''
167− --with-ghcjs=${ghcEnv.targetPrefix}ghc \
168− --with-ghcjs-pkg=${ghcEnv.targetPrefix}ghc-pkg \
170− ''} $(builtin type -P "${ghcEnv.targetPrefix}pkg-config" &> /dev/null && echo "--with-pkg-config=${ghcEnv.targetPrefix}pkg-config") \
173 phases = ["installPhase"];
90 phases = ["installPhase"];
175− echo "${"Shell for " + toString (builtins.map (p : p.identifier.name) selectedPackages)}"
176− echo $nativeBuildInputs $buildInputs > $out
91+ installPhase = "echo $nativeBuildInputs $buildInputs > $out";
177− '';
92+ LANG = "en_US.UTF-8";
93+ LOCALE_ARCHIVE = lib.optionalString (stdenv.hostPlatform.libc == "glibc") "${glibcLocales}/lib/locale/locale-archive";
179 # This helps tools like `ghcide` (that use the ghc api) to find
95 # This helps tools like `ghcide` (that use the ghc api) to find
180 # the correct global package DB.
96 # the correct global package DB.
@@ -1,165 +1,6 @@
1This file contains a summary of changes to Haskell.nix and `nix-tools`
1This file contains a summary of changes to Haskell.nix and `nix-tools`
2that will impact users.
2that will impact users.
5−* Removed reliance on `builtins.currentSystem`. It was used it to provide
6− `pkgs.evalPackages` via an overlay that it used to run derivations
7− used in imports from derivation (IFDs).
9− These derivations are now run on `buildPackages` by default.
11− Passsing `evalPackages` to a project function will change where all the
12− derivations used in IFDs are run for that project (including shell tools):
13− evalPackages = import nixpkgs haskellNix.nixpkgsArgs;
15− Passing `evalSystem` instead will use create a suitable `nixpkgs` using `pkgs.path`
17− evalSystem = "x86_64-linux";
19− evalSystem = builtins.currentSystem;
21− The `haskellLib.cleanGit` function is also affected by this change. If you are cross
22− compiling and using `cleanGit` you should probably do something like:
23− pkgs = import nixpkgs haskellNix.nixpkgsArgs;
24− evalPackages = import nixpkgs (haskellNix.nixpkgsArgs // { system = evalSystem; });
25− p = pkgs.pkgsCross.mingwW64.haskell-nix.cabalProject {
26− inherit evalPackages;
27− src = evalPackages.haskell-nix.haskellLib.cleanGit { src = ./.; };
31−* Removed lookupSha256 argument from project functions.
32− Pass a `sha256map` instead.
33−* Added better support for `repository` in `cabal.project`. These
34− blocks should now work without the need for passing `extra-hackages` and
35− `extra-hackage-tarballs`.
38−* Included dependencies of haskell.nix that were tracked in `nix/sources.json`
39− as flake inputs (`flake.lock` replaces `nix/sources.json`).
40−* Uses `flake-compat` to continue to provide a compatible interface for non
44−* `source-repository-package` references in `cabal.project` files are now
45− left as a `source-repository-package` when calculating the the `plan-nix` for
46− `cabalProject` based functions.
47− This makes haskell.nix match the behaviour of `cabal` better.
48− Materialized files for projects that use `source-repository-package`
49− references will need to be updated.
50−* Only planned components are included in a haskell.nix cabal project.
51− If cabal solver does not include the component in the `plan.json` file it
52− will not be present in `hsPkgs.pkg.components`.
53−* When the same package occurs more than once in a plan.json file
54− the latest version is picked by haskell.nix.
57−* Project arguments are now validated with the Nix module system.
58− If unexpected argments are passed to a project function this may now
62−* Add `.dwarf` to build any component with DWARF dubug info on linux
64−* Pass `enableDWARF` to `shellFor` for to get a shell where all the
65− components are the `.dwarf` ones.
68−* `ghcOptions` has been moved from package and is now a list of strings.
69− old: packages.x.package.ghcOptions = "someGHCoption";
70− new: packages.x.ghcOptions = ["someGHCoption"];
71− To specify ghcOptions for all packages:
72− ghcOptions = ["someGHCoption"];
73− For a single component:
74− packages.x.compoents.library.ghcOptions = ["someGHCoption"];
77−* Removed older versions of haskell-language-server from custom-tools
78− (0.8.0 is in hackage so we can still get that version).
81−* Added support for cross package refs (with a project). Relative
82− directory references between packages within a project should now
84−* Added `includeSiblings` to `cleanSourceWith`. When `true` it
85− prevents the `subDir` arg from causing filtering of other directories.
86−* Added `keepGitDir` to `cleanGit` to allow `.git` directory to be kept
87− (useful for components that use the `githash` package).
90−* Renamed `otherShells` arg for `shellFor` to `inputsFrom
93−* The `shellFor` `makeConfigFiles` `ghcWithHoogle` and `ghcWithPackages`
94− functions have been removed from `project.hsPkgs`. Instead access
95− them from `project` itself (e.g. change `p.hsPkgs.shellFor` to `p.shellFor`).
96−* The reflex-platform like `project.shells.ghc` has been removed.
97− If needed, add something like `p // { shells.ghc = p.shellFor {} }`
101−* Added `${targetPrefix}cabal` wrapper script for running cross
102− compilers in `shellFor`.
103−* `otherShells` arg added to `shellFor`.
106−* Passing `tools.hoogle` to `shellFor` with a value suitable for `haskel-nix.tool` will
107− use the specified `hoogle` inside `shellFor`. This allows for materialization
111−* Passing `compiler-nix-name` to project functions for `stack.yaml`
112− based projects now overrides the compiler used (was ignored before).
115−* Added the ability to generate coverage reports for packages and
117−* Added the `doCoverage` module option that allows users to choose
118− packages to enable coverage for.
119−* Added a `doCoverage` flag to the component builder that outputs HPC
120− information when coverage is enabled.
121−* Added test for coverage.
124−* Removed `components.all`, use `symlinkJoin` on components.exes or
125− `shellFor` if you need a shell.
126−* Added `components` argument to `shellFor`.
129−* Added GHC 8.8.4 and replaced 8.8.3 in tests and as the ghc
130− used to build nix-tools for stack projects.
133−* Changed `haskell-nix.roots` and `p.roots` to single derivations.
136−* Removed `sources.nixpkgs-default`, use `sources.nixpkgs` instead.
137−* Removed `./nixpkgs` directory, use `(import ./. {}).sources`
138− or `./nix/sources.nix` instead.
139−* Removes V1 interface for details on how to fix old code see:
140− https://github.com/input-output-hk/haskell.nix/issues/709
141−* Removed defaultCompilerNixName.
142−* cabalProject, cabalProject', hackage-project and hackage-package
143− now require a `compiler-nix-name` argument.
144−* `haskell-nix.tool` and `.tools` now require a `compiler-nix-name` argument.
145− New functions `p.tool` and `p.tools` (where p is a project) do not.
146− Like `shellFor { tools = ... }` they will use the compiler nix name
147− from the project (including stack projects where it is derived from
149−* `haskell-nix.alex` and `haskell-nix.happy` have been removed. Use
150− `p.tool "alex" "3.2.5"` or `shellFor { tools = { alex = "3.2.5"; } }`.
151−* `haskell-nix.nix-tools` -> `haskell-nix.nix-tools.ghc883` (it includes
153−* `haskell-nix.cabal-install` ->
154− `p.tool "cabal" "3.2.0.0"` or `shellFor { tools = { cabal = "3.2.0.0"; } }`
155−* `haskell-nix.haskellNixRoots` -> `haskell-nix.roots ghc883` or `p.roots`
158−* Haddock docs are now built in their own derivation when needed (not as part
159− of the component build).
160− They should build automatically when something (such as `shellFor`) attempts
161− to accesses the `.doc` attribute of component.
163## December 27, 2019
4## December 27, 2019
164* Fix overlays/bootstrap.nix to provide LLVM 6, not LLVM 5, to ghc-8.6.X compilers.
5* Fix overlays/bootstrap.nix to provide LLVM 6, not LLVM 5, to ghc-8.6.X compilers.
@@ -1,8 +1,8 @@
2 # Generic nixpkgs, use *only* for lib functions that are stable across versions
2 # Generic nixpkgs, use *only* for lib functions that are stable across versions
3− pkgs ? (import ./. {}).pkgs,
3+ pkgs = import (import ./nixpkgs/default.nix).nixpkgs-default {};
4− lib ? pkgs.lib
4+ lib = pkgs.lib;
6 inherit (import ./dimension.nix) dimension;
6 inherit (import ./dimension.nix) dimension;
8 # A filter for removing packages that aren't supported on the current platform
8 # A filter for removing packages that aren't supported on the current platform
@@ -1,126 +1,89 @@
1−# 'supportedSystems' restricts the set of systems that we will evaluate for. Useful when you're evaluating
1+# 'supportedSystems' restricts the set of systems that we will evaluate for. Useful when you're evaluting
2−# on a machine with e.g. no way to build the Darwin IFDs you need!
2+# on a machine with e.g. no way to build the Darwin IFDs you need!
3{ supportedSystems ? [ "x86_64-linux" "x86_64-darwin" ]
3{ supportedSystems ? [ "x86_64-linux" "x86_64-darwin" ]
4, ifdLevel ? 3
4, ifdLevel ? 3
5# Whether or not we are evaluating in restricted mode. This is true in Hydra, but not in Hercules.
5# Whether or not we are evaluating in restricted mode. This is true in Hydra, but not in Hercules.
6, restrictEval ? false
6, restrictEval ? false
7−, checkMaterialization ? false
7+, checkMaterialization ? false }:
8−, pkgs ? (import ./. {}).pkgs }:
10− inherit (import ./ci-lib.nix { inherit pkgs; }) dimension platformFilterGeneric filterAttrsOnlyRecursive;
9+ inherit (import ./ci-lib.nix) dimension platformFilterGeneric filterAttrsOnlyRecursive;
11− inherit (pkgs.haskell-nix) sources;
10+ sources = import ./nix/sources.nix {};
12 nixpkgsVersions = {
11 nixpkgsVersions = {
13− "R2111" = "nixpkgs-2111";
12+ "R1909" = "nixpkgs-1909";
14− "R2205" = "nixpkgs-2205";
13+ "R2003" = "nixpkgs-2003";
15− "unstable" = "nixpkgs-unstable";
15+ compilerNixNames = nixpkgsName: nixpkgs: builtins.mapAttrs (defaultCompilerNixName: _:
17− haskellNix = import ./default.nix { inherit checkMaterialization; };
16+ (import ./default.nix { inherit checkMaterialization defaultCompilerNixName; }).nixpkgsArgs) ({
18− nixpkgsArgs = haskellNix.nixpkgsArgs // {
17+ ghc865 = {};
19− # Needed for dwarf tests
18+ } // nixpkgs.lib.optionalAttrs (nixpkgsName == "R2003") {
20− config = haskellNix.nixpkgsArgs.config // {
19+ ghc883 = {};
21− permittedInsecurePackages = ["libdwarf-20210528" "libdwarf-20181024" "dwarfdump-20181024"];
20+ ghc8101 = {};
22+ systems = nixpkgs: nixpkgs.lib.filterAttrs (_: v: builtins.elem v supportedSystems) {
23+ # I wanted to take these from 'lib.systems.examples', but apparently there isn't one for linux!
24+ linux = "x86_64-linux";
25+ darwin = "x86_64-darwin";
24− compilerNixNames = nixpkgsName: nixpkgs: builtins.mapAttrs (compiler-nix-name: runTests: {
27− # GHC version to cache and whether to run the tests against them.
28− # This list of GHC versions should include everything for which we
29− # have a ./materialized/ghcXXX directory containing the materialized
30− # cabal-install and nix-tools plans. When removing a ghc version
31− # from here (so that is no longer cached) also remove ./materialized/ghcXXX.
32− # Update supported-ghc-versions.md to reflect any changes made here.
33− nixpkgs.lib.optionalAttrs (nixpkgsName == "R2111") {
36− } // nixpkgs.lib.optionalAttrs (nixpkgsName == "R2205") {
39− } // nixpkgs.lib.optionalAttrs (nixpkgsName == "unstable") {
41− ghc884 = false; # Native version is used to boot 9.0.1
46− systems = nixpkgsName: nixpkgs: compiler-nix-name: nixpkgs.lib.genAttrs (
47− nixpkgs.lib.filter (v:
48− # We have less x86_64-darwin build capacity so build fewer GhC versions
49− (v != "x86_64-darwin" || (
50− !__elem compiler-nix-name ["ghc8104" "ghc810420210212" "ghc8105" "ghc8106" "ghc901" "ghc921" "ghc922"]))
52− # aarch64-darwin requires ghc 8.10.7
53− (v != "aarch64-darwin" || (
54− !__elem compiler-nix-name ["ghc865" "ghc884" "ghc8104" "ghc810420210212" "ghc8105" "ghc8106" "ghc901" "ghc921" "ghc922"]))
56− # aarch64-linux requires ghc 8.8.4
57− (v != "aarch64-linux" || (
58− !__elem compiler-nix-name ["ghc865" "ghc8104" "ghc810420210212" "ghc8105" "ghc8106" "ghc901" "ghc921" "ghc922"]
59− ))) supportedSystems) (v: v);
60− crossSystems = nixpkgsName: nixpkgs: compiler-nix-name: system:
27+ crossSystems = nixpkgsName: nixpkgs: compilerNixName: system:
61 # We need to use the actual nixpkgs version we're working with here, since the values
28 # We need to use the actual nixpkgs version we're working with here, since the values
62 # of 'lib.systems.examples' are not understood between all versions
29 # of 'lib.systems.examples' are not understood between all versions
63 let lib = nixpkgs.lib;
30 let lib = nixpkgs.lib;
64− in lib.optionalAttrs (nixpkgsName == "unstable"
31+ in lib.optionalAttrs (system == "x86_64-linux" && compilerNixName != "ghc8101") {
65− && ((system == "x86_64-linux" && __elem compiler-nix-name ["ghc865" "ghc884" "ghc8107"])
32+ # Windows cross compilation is currently broken on macOS
66− || (system == "x86_64-darwin" && __elem compiler-nix-name ["ghc8107"]))) {
67− inherit (lib.systems.examples) ghcjs;
68− } // lib.optionalAttrs (nixpkgsName == "unstable"
69− && ((system == "x86_64-linux" && __elem compiler-nix-name ["ghc8107" "ghc902" "ghc924"])
70− || (system == "x86_64-darwin" && __elem compiler-nix-name []))) { # TODO add ghc versions when we have more darwin build capacity
71 inherit (lib.systems.examples) mingwW64;
33 inherit (lib.systems.examples) mingwW64;
72− } // lib.optionalAttrs (system == "x86_64-linux" && nixpkgsName == "unstable" && __elem compiler-nix-name ["ghc8107" "ghc902" "ghc922" "ghc923" "ghc924"]) {
34+ } // lib.optionalAttrs (system == "x86_64-linux") {
73 # Musl cross only works on linux
35 # Musl cross only works on linux
74 # aarch64 cross only works on linux
36 # aarch64 cross only works on linux
75 inherit (lib.systems.examples) musl64 aarch64-multiplatform;
37 inherit (lib.systems.examples) musl64 aarch64-multiplatform;
77− isDisabled = d: d.meta.disabled or false;
79dimension "Nixpkgs version" nixpkgsVersions (nixpkgsName: nixpkgs-pin:
40dimension "Nixpkgs version" nixpkgsVersions (nixpkgsName: nixpkgs-pin:
80 let pinnedNixpkgsSrc = sources.${nixpkgs-pin};
41 let pinnedNixpkgsSrc = sources.${nixpkgs-pin};
42+ # We need this for generic nixpkgs stuff at the right version
81− evalPackages = import pinnedNixpkgsSrc nixpkgsArgs;
43+ genericPkgs = import pinnedNixpkgsSrc {};
82− in dimension "GHC version" (compilerNixNames nixpkgsName evalPackages) (compiler-nix-name: {runTests}:
44+ in dimension "GHC version" (compilerNixNames nixpkgsName genericPkgs) (compilerNixName: nixpkgsArgs:
83− dimension "System" (systems nixpkgsName evalPackages compiler-nix-name) (systemName: system:
45+ dimension "System" (systems genericPkgs) (systemName: system:
84 let pkgs = import pinnedNixpkgsSrc (nixpkgsArgs // { inherit system; });
46 let pkgs = import pinnedNixpkgsSrc (nixpkgsArgs // { inherit system; });
85− build = import ./build.nix { inherit pkgs evalPackages ifdLevel compiler-nix-name; };
47+ build = import ./build.nix { inherit pkgs ifdLevel; };
86 platformFilter = platformFilterGeneric pkgs system;
48 platformFilter = platformFilterGeneric pkgs system;
87− in filterAttrsOnlyRecursive (_: v: platformFilter v && !(isDisabled v)) ({
49+ in filterAttrsOnlyRecursive (_: v: platformFilter v) {
88 # Native builds
50 # Native builds
89 # TODO: can we merge this into the general case by picking an appropriate "cross system" to mean native?
51 # TODO: can we merge this into the general case by picking an appropriate "cross system" to mean native?
90 native = pkgs.recurseIntoAttrs ({
52 native = pkgs.recurseIntoAttrs ({
91− roots = pkgs.haskell-nix.roots' compiler-nix-name ifdLevel;
92− ghc = pkgs.buildPackages.haskell-nix.compiler."${compiler-nix-name}";
93− } // pkgs.lib.optionalAttrs runTests {
94 inherit (build) tests tools maintainer-scripts maintainer-script-cache;
53 inherit (build) tests tools maintainer-scripts maintainer-script-cache;
54+ ghc = pkgs.buildPackages.haskell-nix.compiler."${compilerNixName}";
95 } // pkgs.lib.optionalAttrs (ifdLevel >= 1) {
55 } // pkgs.lib.optionalAttrs (ifdLevel >= 1) {
96− iserv-proxy = pkgs.ghc-extra-projects."${compiler-nix-name}".getComponent "iserv-proxy:exe:iserv-proxy";
56+ iserv-proxy = pkgs.ghc-extra-packages."${compilerNixName}".iserv-proxy.components.exes.iserv-proxy;
97 } // pkgs.lib.optionalAttrs (ifdLevel >= 3) {
57 } // pkgs.lib.optionalAttrs (ifdLevel >= 3) {
98− hello = (pkgs.haskell-nix.hackage-package { name = "hello"; version = "1.0.0.2"; inherit evalPackages compiler-nix-name; }).getComponent "exe:hello";
58+ hello = (pkgs.haskell-nix.hackage-package { name = "hello"; version = "1.0.0.2"; }).components.exes.hello;
102− dimension "Cross system" (crossSystems nixpkgsName evalPackages compiler-nix-name system) (crossSystemName: crossSystem:
62+ dimension "Cross system" (crossSystems nixpkgsName genericPkgs compilerNixName system) (crossSystemName: crossSystem:
103 # Cross builds
63 # Cross builds
104 let pkgs = import pinnedNixpkgsSrc (nixpkgsArgs // { inherit system crossSystem; });
64 let pkgs = import pinnedNixpkgsSrc (nixpkgsArgs // { inherit system crossSystem; });
105− build = import ./build.nix { inherit pkgs evalPackages ifdLevel compiler-nix-name; };
65+ build = import ./build.nix { inherit pkgs ifdLevel; };
106− in pkgs.recurseIntoAttrs (pkgs.lib.optionalAttrs (ifdLevel >= 1) ({
66+ in pkgs.recurseIntoAttrs (pkgs.lib.optionalAttrs (ifdLevel >= 1) {
107− roots = pkgs.haskell-nix.roots' compiler-nix-name ifdLevel;
108− ghc = pkgs.buildPackages.haskell-nix.compiler."${compiler-nix-name}";
67+ ghc = pkgs.buildPackages.haskell-nix.compiler."${compilerNixName}";
109− # TODO: look into cross compiling ghc itself
68+ # TODO: look into cross compiling ghc itself
110− # ghc = pkgs.haskell-nix.compiler."${compiler-nix-name}";
69+ # ghc = pkgs.haskell-nix.compiler."${compilerNixName}";
111− # TODO: look into making tools work when cross compiling
70+ # TODO: look into making tools work when cross compiling
112− # inherit (build) tools;
71+ # inherit (build) tools;
113− } // pkgs.lib.optionalAttrs (runTests && crossSystemName != "aarch64-multiplatform") {
114− # Tests are broken on aarch64 cross https://github.com/input-output-hk/haskell.nix/issues/513
72+ # Tests are broken on aarch64 cross https://github.com/input-output-hk/haskell.nix/issues/513
74+ if (crossSystemName != "aarch64-multiplatform")
76+ else pkgs.recurseIntoAttrs {
77+ # Even on aarch64 we still want to build the pinned files
115− inherit (build) tests;
78+ inherit (build.tests) haskellNixRoots;
116− }) // pkgs.lib.optionalAttrs (ifdLevel >= 2 && crossSystemName != "ghcjs") {
80+ } // pkgs.lib.optionalAttrs (ifdLevel >= 2) {
117− # GHCJS builds its own template haskell runner.
118− remote-iserv = pkgs.ghc-extra-projects."${compiler-nix-name}".getComponent "remote-iserv:exe:remote-iserv";
81+ remote-iserv = pkgs.ghc-extra-packages."${compilerNixName}".remote-iserv.components.exes.remote-iserv;
119− iserv-proxy = pkgs.ghc-extra-projects."${compiler-nix-name}".getComponent "iserv-proxy:exe:iserv-proxy";
82+ iserv-proxy = pkgs.ghc-extra-packages."${compilerNixName}".iserv-proxy.components.exes.iserv-proxy;
120 } // pkgs.lib.optionalAttrs (ifdLevel >= 3) {
83 } // pkgs.lib.optionalAttrs (ifdLevel >= 3) {
121− hello = (pkgs.haskell-nix.hackage-package { name = "hello"; version = "1.0.0.2"; inherit compiler-nix-name; }).getComponent "exe:hello";
84+ hello = (pkgs.haskell-nix.hackage-package { name = "hello"; version = "1.0.0.2"; }).components.exes.hello;
compiler/bootstrap/cabal-install.nix+2−2
@@ -1,4 +1,4 @@
1−{ fetchurl, hackage, stdenv, lib, ghc, zlib, src, version }:
1+{ fetchurl, hackage, stdenv, ghc, zlib, src, version }:
2let dependencies =
2let dependencies =
3 [ { name = "deepseq"; version = "1.4.3.0"; }
3 [ { name = "deepseq"; version = "1.4.3.0"; }
4 { name = "binary"; version = "0.8.5.1"; }
4 { name = "binary"; version = "0.8.5.1"; }
@@ -42,7 +42,7 @@ in stdenv.mkDerivation ({
45− platforms = lib.platforms.all;
45+ platforms = stdenv.lib.platforms.all;
48 nativeBuildInputs = [ ghc zlib ];
48 nativeBuildInputs = [ ghc zlib ];
compiler/ghc/default.nix+174−327
@@ -3,19 +3,15 @@
3# haskell.nix ships its own version of the ghc expression as it needs more
3# haskell.nix ships its own version of the ghc expression as it needs more
4# control over the expression to isolate it against varying <nixpkgs> and
4# control over the expression to isolate it against varying <nixpkgs> and
5# allow us to customize it to the way haskell.nix works.
5# allow us to customize it to the way haskell.nix works.
7−{ stdenv, lib, haskell-nix, targetPackages
6+{ stdenv, haskell-nix, targetPackages
9# build-tools
8# build-tools
12−, autoconf, automake, coreutils, fetchurl, fetchpatch, perl, python3, m4, sphinx, numactl, elfutils
10+, autoconf, automake, coreutils, fetchurl, fetchpatch, perl, python3, m4, sphinx, numactl
13, autoreconfHook
11, autoreconfHook
16−, libiconv ? null
14+, libiconv ? null, ncurses
18−, ncurses # TODO remove this once the cross compilers all work without
20, installDeps
16, installDeps
@@ -23,17 +19,14 @@ let self =
23 libffi ? null
19 libffi ? null
25, useLLVM ? !stdenv.targetPlatform.isx86
21, useLLVM ? !stdenv.targetPlatform.isx86
26−, # LLVM is conceptually a run-time-only dependency, but for
22+, # LLVM is conceptually a run-time-only depedendency, but for
27 # non-x86, we need LLVM to bootstrap later stages, so it becomes a
23 # non-x86, we need LLVM to bootstrap later stages, so it becomes a
28 # build-time dependency too.
24 # build-time dependency too.
29 buildLlvmPackages, llvmPackages
25 buildLlvmPackages, llvmPackages
31, # If enabled, GHC will be built with the GPL-free but slower integer-simple
27, # If enabled, GHC will be built with the GPL-free but slower integer-simple
32 # library instead of the faster but GPLed integer-gmp library.
28 # library instead of the faster but GPLed integer-gmp library.
33− enableIntegerSimple ? !(lib.any (lib.meta.platformMatch stdenv.hostPlatform) gmp.meta.platforms), gmp
29+ enableIntegerSimple ? !(stdenv.lib.any (stdenv.lib.meta.platformMatch stdenv.hostPlatform) gmp.meta.platforms), gmp
34−, # If enabled, GHC will be built with the GPL-free native backend of the
35− # bignum library that is nearly as fast as GMP
36− enableNativeBignum ? !((lib.any (lib.meta.platformMatch stdenv.hostPlatform) gmp.meta.platforms) || enableIntegerSimple)
38, # If enabled, use -fPIC when compiling static libs.
31, # If enabled, use -fPIC when compiling static libs.
39 enableRelocatedStaticLibs ? stdenv.targetPlatform != stdenv.hostPlatform && !stdenv.targetPlatform.isAarch32
32 enableRelocatedStaticLibs ? stdenv.targetPlatform != stdenv.hostPlatform && !stdenv.targetPlatform.isAarch32
@@ -42,20 +35,12 @@ let self =
42 # platform). Static libs are always built.
35 # platform). Static libs are always built.
43 enableShared ? !haskell-nix.haskellLib.isCrossTarget
36 enableShared ? !haskell-nix.haskellLib.isCrossTarget
45−, enableLibraryProfiling ? true
38+, # Whetherto build terminfo. Musl fails to build terminfo as ncurses seems to be linked to glibc
46−
39+ enableTerminfo ? !stdenv.targetPlatform.isWindows && !stdenv.targetPlatform.isMusl
50− # Terminfo does not work on older ghc cross arm and windows compilers
51− (!haskell-nix.haskellLib.isCrossTarget || !(stdenv.targetPlatform.isAarch64 || stdenv.targetPlatform.isWindows) || builtins.compareVersions ghc-version "8.10" >= 0)
53−, # Wheter to build in NUMA support
56, # What flavour to build. An empty string indicates no
41, # What flavour to build. An empty string indicates no
57 # specific flavour and falls back to ghc default values.
42 # specific flavour and falls back to ghc default values.
58− ghcFlavour ? lib.optionalString haskell-nix.haskellLib.isCrossTarget (
43+ ghcFlavour ? stdenv.lib.optionalString haskell-nix.haskellLib.isCrossTarget (
59 if useLLVM
44 if useLLVM
60 then "perf-cross"
45 then "perf-cross"
61 else "perf-cross-ncg"
46 else "perf-cross-ncg"
@@ -66,19 +51,14 @@ let self =
66 disableLargeAddressSpace ? stdenv.targetPlatform.isDarwin && stdenv.targetPlatform.isAarch64
51 disableLargeAddressSpace ? stdenv.targetPlatform.isDarwin && stdenv.targetPlatform.isAarch64
68, ghc-version ? src-spec.version
53, ghc-version ? src-spec.version
69−, ghc-version-date ? null
71, ghc-patches ? []
55, ghc-patches ? []
73# extra values we want to have available as passthru values.
57# extra values we want to have available as passthru values.
74, extra-passthru ? {}
58, extra-passthru ? {}
77−assert !(enableIntegerSimple || enableNativeBignum) -> gmp != null;
61+assert !enableIntegerSimple -> gmp != null;
79−# Early check to make sure only one of these is enabled
80−assert enableNativeBignum -> !enableIntegerSimple;
81−assert enableIntegerSimple -> !enableNativeBignum;
84 inherit (stdenv) buildPlatform hostPlatform targetPlatform;
64 inherit (stdenv) buildPlatform hostPlatform targetPlatform;
@@ -86,18 +66,7 @@ let
87 inherit (bootPkgs) ghc;
67 inherit (bootPkgs) ghc;
89− ghcHasNativeBignum = builtins.compareVersions ghc-version "9.0" >= 0;
92− assert ghcHasNativeBignum -> !enableIntegerSimple;
93− assert !ghcHasNativeBignum -> !enableNativeBignum;
94− if ghcHasNativeBignum then ''
95− BIGNUM_BACKEND = ${if enableNativeBignum then "native" else "gmp"}
97− INTEGER_LIBRARY = ${if enableIntegerSimple then "integer-simple" else "integer-gmp"}
100− # TODO check if this possible fix for segfaults works or not.
69+ # TODO check if this posible fix for segfaults works or not.
101 targetLibffi =
70 targetLibffi =
102 # on native platforms targetPlatform.{libffi, gmp} do not exist; thus fall back
71 # on native platforms targetPlatform.{libffi, gmp} do not exist; thus fall back
103 # to the non-targetPlatform version in those cases.
72 # to the non-targetPlatform version in those cases.
@@ -109,12 +78,8 @@ let
110 targetGmp = targetPackages.gmp or gmp;
79 targetGmp = targetPackages.gmp or gmp;
112− targetIconv = targetPackages.libiconv or libiconv;
114− targetNumactl = targetPackages.numactl or numactl;
116 # TODO(@Ericson2314) Make unconditional
81 # TODO(@Ericson2314) Make unconditional
117− targetPrefix = lib.optionalString
82+ targetPrefix = stdenv.lib.optionalString
118 (targetPlatform != hostPlatform)
83 (targetPlatform != hostPlatform)
119 "${targetPlatform.config}-";
84 "${targetPlatform.config}-";
@@ -124,177 +89,193 @@ let
124 include mk/flavours/\$(BuildFlavour).mk
89 include mk/flavours/\$(BuildFlavour).mk
126 DYNAMIC_GHC_PROGRAMS = ${if enableShared then "YES" else "NO"}
91 DYNAMIC_GHC_PROGRAMS = ${if enableShared then "YES" else "NO"}
127− '' + bignumSpec + ''
92+ INTEGER_LIBRARY = ${if enableIntegerSimple then "integer-simple" else "integer-gmp"}
128− EXTRA_HADDOCK_OPTS += --quickjump --hyperlinked-source
129− '' + lib.optionalString (targetPlatform != hostPlatform) ''
93+ '' + stdenv.lib.optionalString (targetPlatform != hostPlatform) ''
130 CrossCompilePrefix = ${targetPrefix}
94 CrossCompilePrefix = ${targetPrefix}
131− '' + lib.optionalString isCrossTarget ''
95+ '' + stdenv.lib.optionalString isCrossTarget ''
132 Stage1Only = ${if targetPlatform.system == hostPlatform.system then "NO" else "YES"}
96 Stage1Only = ${if targetPlatform.system == hostPlatform.system then "NO" else "YES"}
134− # GHC 9.0.1 fails to compile for musl unless HADDOC_DOCS = NO
135− + lib.optionalString (isCrossTarget || (targetPlatform.isMusl && builtins.compareVersions ghc-version "9.0.1" >= 0)) ''
136 HADDOCK_DOCS = NO
97 HADDOCK_DOCS = NO
137 BUILD_SPHINX_HTML = NO
98 BUILD_SPHINX_HTML = NO
138 BUILD_SPHINX_PDF = NO
99 BUILD_SPHINX_PDF = NO
139− '' + lib.optionalString enableRelocatedStaticLibs ''
100+ '' + stdenv.lib.optionalString enableRelocatedStaticLibs ''
140 GhcLibHcOpts += -fPIC
101 GhcLibHcOpts += -fPIC
141 GhcRtsHcOpts += -fPIC
102 GhcRtsHcOpts += -fPIC
142− GhcRtsCcOpts += -fPIC
143− '' + lib.optionalString (enableRelocatedStaticLibs && targetPlatform.isx86_64 && !targetPlatform.isWindows) ''
144− GhcLibHcOpts += -fexternal-dynamic-refs
145− GhcRtsHcOpts += -fexternal-dynamic-refs
146− '' + lib.optionalString enableDWARF ''
149− '' + lib.optionalString targetPlatform.useAndroidPrebuilt ''
103+ '' + stdenv.lib.optionalString targetPlatform.useAndroidPrebuilt ''
150 EXTRA_CC_OPTS += -std=gnu99
104 EXTRA_CC_OPTS += -std=gnu99
151− '' + lib.optionalString (!enableTerminfo) ''
105+ '' + stdenv.lib.optionalString (!enableTerminfo) ''
152 WITH_TERMINFO=NO
106 WITH_TERMINFO=NO
154− # musl doesn't have a system-linker. Only on x86, and on x86 we need it, as
155− # our elf linker for x86_64 is broken.
156− + lib.optionalString (targetPlatform.isAndroid || (targetPlatform.isMusl && !targetPlatform.isx86)) ''
157− compiler_CONFIGURE_OPTS += --flags=-dynamic-system-linker
159 # While split sections are now enabled by default in ghc 8.8 for windows,
108 # While split sections are now enabled by default in ghc 8.8 for windows,
160 # the seem to lead to `too many sections` errors when building base for
109 # the seem to lead to `too many sections` errors when building base for
161 # profiling.
110 # profiling.
163− # It appears that loading split sections through iserv on qemu-aarch64, is
164− # particularly slow. Let's disable them for now.
165− + lib.optionalString (targetPlatform.isWindows || targetPlatform.isAndroid) ''
111+ + stdenv.lib.optionalString targetPlatform.isWindows ''
166 SplitSections = NO
112 SplitSections = NO
167− '' + lib.optionalString (!enableLibraryProfiling) ''
168− BUILD_PROF_LIBS = NO
171 # Splicer will pull out correct variations
115 # Splicer will pull out correct variations
172− libDeps = platform: lib.optional enableTerminfo [ targetPackages.ncurses targetPackages.ncurses.dev ]
116+ libDeps = platform: stdenv.lib.optional enableTerminfo [ ncurses ]
173 ++ [targetLibffi]
117 ++ [targetLibffi]
174− ++ lib.optional (!enableIntegerSimple) gmp
118+ ++ stdenv.lib.optional (!enableIntegerSimple) gmp
175− ++ lib.optional (platform.libc != "glibc" && !targetPlatform.isWindows) libiconv
119+ ++ stdenv.lib.optional (platform.libc != "glibc" && !targetPlatform.isWindows) libiconv
176− ++ lib.optional (enableNUMA && platform.isLinux && !platform.isAarch32 && !platform.isAndroid) numactl
120+ ++ stdenv.lib.optional platform.isLinux numactl;
177− # Even with terminfo disabled some older ghc cross arm and windows compilers do not build unless `ncurses` is found and they seem to want the buildPlatform version
178− ++ lib.optional (!enableTerminfo && haskell-nix.haskellLib.isCrossTarget && (stdenv.targetPlatform.isAarch64 || stdenv.targetPlatform.isWindows) && builtins.compareVersions ghc-version "8.10" < 0) ncurses.dev;
180 toolsForTarget =
122 toolsForTarget =
181 if hostPlatform == buildPlatform then
123 if hostPlatform == buildPlatform then
182− [ targetPackages.stdenv.cc ] ++ lib.optional useLLVM llvmPackages.llvm
124+ [ targetPackages.stdenv.cc ] ++ stdenv.lib.optional useLLVM llvmPackages.llvm
183 else assert targetPlatform == hostPlatform; # build != host == target
125 else assert targetPlatform == hostPlatform; # build != host == target
184− [ stdenv.cc ] ++ lib.optional useLLVM buildLlvmPackages.llvm;
126+ [ stdenv.cc ] ++ stdenv.lib.optional useLLVM buildLlvmPackages.llvm;
186 targetCC = builtins.head toolsForTarget;
128 targetCC = builtins.head toolsForTarget;
188−in
130+in let configured-src = stdenv.mkDerivation (rec {
132+ version = ghc-version;
134+ patches = ghc-patches;
136+ name = "${targetPrefix}ghc-${ghc-version}-configured-src";
139+ nativeBuildInputs = [
140+ perl autoconf automake m4 python3 sphinx
141+ ghc bootPkgs.alex bootPkgs.happy bootPkgs.hscolour
142+ ] ++ stdenv.lib.optional (patches != []) autoreconfHook;
144+ # For building runtime libs
145+ depsBuildTarget = toolsForTarget;
147+ buildInputs = [ perl bash ] ++ (libDeps hostPlatform);
149+ propagatedBuildInputs = [ targetPackages.stdenv.cc ]
150+ ++ stdenv.lib.optional useLLVM llvmPackages.llvm;
152+ depsTargetTarget = map stdenv.lib.getDev (libDeps targetPlatform);
153+ depsTargetTargetPropagated = map (stdenv.lib.getOutput "out") (libDeps targetPlatform);
155+ postPatch = "patchShebangs .";
157+ src = fetchurl { inherit (src-spec) url sha256; };
159+ # GHC is a bit confused on its cross terminology.
161+ for env in $(env | grep '^TARGET_' | sed -E 's|\+?=.*||'); do
162+ export "''${env#TARGET_}=''${!env}"
164+ # GHC is a bit confused on its cross terminology, as these would normally be
166+ export CC="${targetCC}/bin/${targetCC.targetPrefix}cc"
167+ export CXX="${targetCC}/bin/${targetCC.targetPrefix}cxx"
168+ # Use gold to work around https://sourceware.org/bugzilla/show_bug.cgi?id=16177
169+ export LD="${targetCC.bintools}/bin/${targetCC.bintools.targetPrefix}ld${stdenv.lib.optionalString targetPlatform.isAarch32 ".gold"}"
170+ export AS="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}as"
171+ export AR="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ar"
172+ export NM="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}nm"
173+ export RANLIB="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ranlib"
174+ export READELF="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}readelf"
175+ export STRIP="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}strip"
177+ echo -n "${buildMK}" > mk/build.mk
178+ sed -i -e 's|-isysroot /Developer/SDKs/MacOSX10.5.sdk||' configure
179+ '' + stdenv.lib.optionalString (!stdenv.isDarwin) ''
180+ export NIX_LDFLAGS+=" -rpath $out/lib/ghc-${version}"
181+ '' + stdenv.lib.optionalString stdenv.isDarwin ''
182+ export NIX_LDFLAGS+=" -no_dtrace_dof"
183+ '' + stdenv.lib.optionalString targetPlatform.useAndroidPrebuilt ''
184+ sed -i -e '5i ,("armv7a-unknown-linux-androideabi", ("e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64", "cortex-a8", ""))' llvm-targets
185+ '' + stdenv.lib.optionalString targetPlatform.isMusl ''
186+ echo "patching llvm-targets for musl targets..."
187+ echo "Cloning these existing '*-linux-gnu*' targets:"
188+ grep linux-gnu llvm-targets | sed 's/^/ /'
189+ echo "(go go gadget sed)"
190+ sed -i 's,\(^.*linux-\)gnu\(.*\)$,\0\n\1musl\2,' llvm-targets
191+ echo "llvm-targets now contains these '*-linux-musl*' targets:"
192+ grep linux-musl llvm-targets | sed 's/^/ /'
194+ echo "And now patching to preserve '-musleabi' as done with '-gnueabi'"
195+ # (aclocal.m4 is actual source, but patch configure as well since we don't re-gen)
196+ for x in configure aclocal.m4; do
197+ substituteInPlace $x \
198+ --replace '*-android*|*-gnueabi*)' \
199+ '*-android*|*-gnueabi*|*-musleabi*)'
203+ configurePlatforms = [ "build" "host" "target" ];
204+ # `--with` flags for libraries needed for RTS linker
206+ "--datadir=$doc/share/doc/ghc"
207+ "--with-curses-includes=${ncurses.dev}/include" "--with-curses-libraries=${ncurses.out}/lib"
208+ ] ++ stdenv.lib.optionals (targetLibffi != null) ["--with-system-libffi" "--with-ffi-includes=${targetLibffi.dev}/include" "--with-ffi-libraries=${targetLibffi.out}/lib"
209+ ] ++ stdenv.lib.optional (!enableIntegerSimple) [
210+ "--with-gmp-includes=${targetGmp.dev}/include" "--with-gmp-libraries=${targetGmp.out}/lib"
211+ ] ++ stdenv.lib.optional (targetPlatform == hostPlatform && hostPlatform.libc != "glibc" && !targetPlatform.isWindows) [
212+ "--with-iconv-includes=${libiconv}/include" "--with-iconv-libraries=${libiconv}/lib"
213+ ] ++ stdenv.lib.optionals (targetPlatform != hostPlatform) [
214+ "--enable-bootstrap-with-devel-snapshot"
215+ ] ++ stdenv.lib.optionals (disableLargeAddressSpace) [
216+ "--disable-large-address-space"
217+ ] ++ stdenv.lib.optionals (targetPlatform.isAarch32) [
218+ "CFLAGS=-fuse-ld=gold"
219+ "CONF_GCC_LINKER_OPTS_STAGE1=-fuse-ld=gold"
220+ "CONF_GCC_LINKER_OPTS_STAGE2=-fuse-ld=gold"
223+ outputs = [ "out" ];
224+ phases = [ "unpackPhase" "patchPhase" ]
225+ ++ stdenv.lib.optional (ghc-patches != []) "autoreconfPhase"
226+ ++ [ "configurePhase" "installPhase" ];
227+ installPhase = "cp -r . $out";
189−stdenv.mkDerivation (rec {
230+ drv =stdenv.mkDerivation (rec {
190 version = ghc-version;
231 version = ghc-version;
191 name = "${targetPrefix}ghc-${version}";
232 name = "${targetPrefix}ghc-${version}";
193 patches = ghc-patches;
234 patches = ghc-patches;
195− src = if src-spec ? file
236+ # for this to properly work (with inheritance of patches, postPatch, ...)
196− then src-spec.file
237+ # this needs to be a function over the values we want to inherit and then called
197− else fetchurl { inherit (src-spec) url sha256; };
238+ # accordingly. Most trivial might be to just have args, and mash them into the
240+ src = configured-src;
199 # configure was run by configured-src already.
242 # configure was run by configured-src already.
200− phases = [ "unpackPhase" "patchPhase" ]
243+ phases = [ "unpackPhase" "buildPhase"
201− ++ lib.optional (ghc-patches != []) "autoreconfPhase"
202− ++ [ "configurePhase" "buildPhase"
203 "checkPhase" "installPhase"
244 "checkPhase" "installPhase"
204 "fixupPhase"
245 "fixupPhase"
205 "installCheckPhase"
246 "installCheckPhase"
206 "distPhase"
247 "distPhase"
209− # GHC is a bit confused on its cross terminology.
250+ # ghc hardcodes the TOP dir durcing config, this breaks when
210− preConfigure =
251+ # splitting the configured src from the the build process.
211− # This code is only included when cross compiling as it breaks aarch64-darwin native compilation
252+ postUnpack = ''
212− lib.optionalString (targetPlatform != hostPlatform) ''
253+ (cd $sourceRoot
213− for env in $(env | grep '^TARGET_' | sed -E 's|\+?=.*||'); do
254+ TOP=$(cat mk/config.mk|grep ^TOP|awk -F\ '{ print $3 }')
214− export "''${env#TARGET_}=''${!env}"
255+ PREFIX=$(cat mk/install.mk|grep ^prefix|awk -F\ '{ print $3 }')
216− # GHC is a bit confused on its cross terminology, as these would normally be
257+ # these two are required
217− # the *host* tools.
258+ substituteInPlace mk/config.mk --replace "$TOP" "$PWD" \
218− export CC="${targetCC}/bin/${targetCC.targetPrefix}cc"
259+ --replace "$PREFIX" "$out"
219− export CXX="${targetCC}/bin/${targetCC.targetPrefix}cxx"
260+
220− # Use gold to work around https://sourceware.org/bugzilla/show_bug.cgi?id=16177
261+ substituteInPlace mk/install.mk --replace "$TOP" "$PWD" \
221− export LD="${targetCC.bintools}/bin/${targetCC.bintools.targetPrefix}ld${lib.optionalString targetPlatform.isAarch32 ".gold"}"
262+ --replace "$PREFIX" "$out"
222− export AS="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}as"
263+
223− export AR="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ar"
264+ # these two only for convencience.
224− export NM="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}nm"
265+ substituteInPlace config.log --replace "$TOP" "$PWD"\
225− export RANLIB="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ranlib"
266+ --replace "$PREFIX" "$out"
226− export READELF="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}readelf"
267+ substituteInPlace config.status --replace "$TOP" "$PWD"\
227− export STRIP="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}strip"
268+ --replace "$PREFIX" "$out")
229− echo -n "${buildMK}" > mk/build.mk
270+
230− sed -i -e 's|-isysroot /Developer/SDKs/MacOSX10.5.sdk||' configure
271+ '';
231− '' + lib.optionalString useLLVM ''
232− export LLC="${llvmPackages.llvm}/bin/llc"
233− export OPT="${llvmPackages.llvm}/bin/opt"
234− '' + lib.optionalString (!stdenv.isDarwin) ''
235− export NIX_LDFLAGS+=" -rpath $out/lib/${targetPrefix}ghc-${ghc-version}"
236− '' + lib.optionalString stdenv.isDarwin ''
237− export NIX_LDFLAGS+=" -no_dtrace_dof"
238− '' + lib.optionalString targetPlatform.useAndroidPrebuilt ''
239− sed -i -e '5i ,("armv7a-unknown-linux-androideabi", ("e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64", "cortex-a8", ""))' llvm-targets
240− '' + lib.optionalString targetPlatform.isMusl ''
241− echo "patching llvm-targets for musl targets..."
242− echo "Cloning these existing '*-linux-gnu*' targets:"
243− grep linux-gnu llvm-targets | sed 's/^/ /'
244− echo "(go go gadget sed)"
245− sed -i 's,\(^.*linux-\)gnu\(.*\)$,\0\n\1musl\2,' llvm-targets
246− echo "llvm-targets now contains these '*-linux-musl*' targets:"
247− grep linux-musl llvm-targets | sed 's/^/ /'
249− echo "And now patching to preserve '-musleabi' as done with '-gnueabi'"
250− # (aclocal.m4 is actual source, but patch configure as well since we don't re-gen)
251− for x in configure aclocal.m4; do
252− substituteInPlace $x \
253− --replace '*-android*|*-gnueabi*)' \
254− '*-android*|*-gnueabi*|*-musleabi*)'
256− '' + lib.optionalString (src-spec.version != ghc-version) ''
257− substituteInPlace configure --replace 'RELEASE=YES' 'RELEASE=NO'
258− echo '${ghc-version}' > VERSION
259− '' + lib.optionalString (ghc-version-date != null) ''
260− substituteInPlace configure --replace 'RELEASE=YES' 'RELEASE=NO'
261− echo '${ghc-version-date}' > VERSION_DATE
262− '' + lib.optionalString (builtins.compareVersions ghc-version "9.2.3" >= 0) ''
266− configurePlatforms = [ "build" "host" "target" ];
267− # `--with` flags for libraries needed for RTS linker
269− "--datadir=$doc/share/doc/ghc"
270− "--with-curses-includes=${targetPackages.ncurses.dev}/include" "--with-curses-libraries=${targetPackages.ncurses.out}/lib"
271− ] ++ lib.optionals (targetLibffi != null) ["--with-system-libffi" "--with-ffi-includes=${targetLibffi.dev}/include" "--with-ffi-libraries=${targetLibffi.out}/lib"
272− ] ++ lib.optional (!enableIntegerSimple) [
273− "--with-gmp-includes=${targetGmp.dev}/include" "--with-gmp-libraries=${targetGmp.out}/lib"
274− ] ++ lib.optional (targetPlatform == hostPlatform && hostPlatform.libc != "glibc" && !targetPlatform.isWindows) [
275− "--with-iconv-includes=${libiconv}/include" "--with-iconv-libraries=${libiconv}/lib"
276− ] ++ lib.optional (targetPlatform != hostPlatform) [
277− "--with-iconv-includes=${targetIconv}/include" "--with-iconv-libraries=${targetIconv}/lib"
278− ] ++ lib.optionals (targetPlatform != hostPlatform) [
279− "--enable-bootstrap-with-devel-snapshot"
280− ] ++ lib.optionals (disableLargeAddressSpace) [
281− "--disable-large-address-space"
282− ] ++ lib.optionals (targetPlatform.isAarch32) [
283− "CFLAGS=-fuse-ld=gold"
284− "CONF_GCC_LINKER_OPTS_STAGE1=-fuse-ld=gold"
285− "CONF_GCC_LINKER_OPTS_STAGE2=-fuse-ld=gold"
286− ] ++ lib.optionals enableDWARF [
287− "--enable-dwarf-unwind"
288− "--with-libdw-includes=${lib.getDev elfutils}/include"
289− "--with-libdw-libraries=${lib.getLib elfutils}/lib"
292 enableParallelBuilding = true;
273 enableParallelBuilding = true;
293 postPatch = "patchShebangs .";
274 postPatch = "patchShebangs .";
295− outputs = [ "out" "doc" "generated" ];
276+ outputs = [ "out" "doc" ];
297− # Make sure we never relax`$PATH` and hooks support for compatibility.
278+ # Make sure we never relax`$PATH` and hooks support for compatability.
298 strictDeps = true;
279 strictDeps = true;
300 # Don’t add -liconv to LDFLAGS automatically so that GHC will add it itself.
281 # Don’t add -liconv to LDFLAGS automatically so that GHC will add it itself.
@@ -303,19 +284,22 @@ stdenv.mkDerivation (rec {
303 nativeBuildInputs = [
284 nativeBuildInputs = [
304 perl autoconf automake m4 python3 sphinx
285 perl autoconf automake m4 python3 sphinx
305 ghc bootPkgs.alex bootPkgs.happy bootPkgs.hscolour
286 ghc bootPkgs.alex bootPkgs.happy bootPkgs.hscolour
306− ] ++ lib.optional (patches != []) autoreconfHook;
287+ ] ++ stdenv.lib.optional (patches != []) autoreconfHook;
308 # For building runtime libs
289 # For building runtime libs
309 depsBuildTarget = toolsForTarget;
290 depsBuildTarget = toolsForTarget;
311 buildInputs = [ perl bash ] ++ (libDeps hostPlatform);
292 buildInputs = [ perl bash ] ++ (libDeps hostPlatform);
313− depsTargetTarget = map lib.getDev (libDeps targetPlatform);
294+ propagatedBuildInputs = [ targetPackages.stdenv.cc ]
314− depsTargetTargetPropagated = map (lib.getOutput "out") (libDeps targetPlatform);
295+ ++ stdenv.lib.optional useLLVM llvmPackages.llvm;
297+ depsTargetTarget = map stdenv.lib.getDev (libDeps targetPlatform);
298+ depsTargetTargetPropagated = map (stdenv.lib.getOutput "out") (libDeps targetPlatform);
316 # required, because otherwise all symbols from HSffi.o are stripped, and
300 # required, because otherwise all symbols from HSffi.o are stripped, and
317 # that in turn causes GHCi to abort
301 # that in turn causes GHCi to abort
318− stripDebugFlags = [ "-S" ] ++ lib.optional (!targetPlatform.isDarwin) "--keep-file-symbols";
302+ stripDebugFlags = [ "-S" ] ++ stdenv.lib.optional (!targetPlatform.isDarwin) "--keep-file-symbols";
320 # See #63511 - the only unstripped file is the debug rts which isn't meant to
304 # See #63511 - the only unstripped file is the debug rts which isn't meant to
321 # be stripped.
305 # be stripped.
@@ -324,21 +308,10 @@ stdenv.mkDerivation (rec {
324 checkTarget = "test";
308 checkTarget = "test";
326 hardeningDisable = [ "format" ]
310 hardeningDisable = [ "format" ]
327− ++ lib.optional stdenv.targetPlatform.isAarch32 "pic"
311+ ++ stdenv.lib.optional stdenv.targetPlatform.isAarch32 "pic"
328− ++ lib.optional stdenv.targetPlatform.isMusl "pie";
312+ ++ stdenv.lib.optional stdenv.targetPlatform.isMusl "pie";
330− postInstall = lib.optionalString (enableNUMA && targetPlatform.isLinux) ''
314+ postInstall = ''
331− # Patch rts.conf to ensure libnuma can be found
333− for file in $(find "$out/lib" -name "rts*.conf"); do
334− if grep -q numa $file; then
335− substituteInPlace $file \
336− --replace "library-dirs:" "library-dirs: ${targetNumactl}/lib" \
337− --replace "include-dirs:" "include-dirs: ${targetNumactl}/include"
338− "$out/bin/${targetPrefix}ghc-pkg" recache
342 # Install the bash completion file.
315 # Install the bash completion file.
343 install -D -m 444 utils/completion/ghc.bash $out/share/bash-completion/completions/${targetPrefix}ghc
316 install -D -m 444 utils/completion/ghc.bash $out/share/bash-completion/completions/${targetPrefix}ghc
@@ -349,122 +322,25 @@ stdenv.mkDerivation (rec {
349 # The ghcprog fixup is for musl (where runhaskell script just needs to point to the correct
322 # The ghcprog fixup is for musl (where runhaskell script just needs to point to the correct
350 # ghc program to work).
323 # ghc program to work).
352− -e '2i export PATH="$PATH:${lib.makeBinPath [ targetPackages.stdenv.cc.bintools coreutils ]}"' \
325+ -e '2i export PATH="$PATH:${stdenv.lib.makeBinPath [ targetPackages.stdenv.cc.bintools coreutils ]}"' \
353 -e 's/ghcprog="ghc-/ghcprog="${targetPrefix}ghc-/' \
326 -e 's/ghcprog="ghc-/ghcprog="${targetPrefix}ghc-/' \
356−
329+ '' + installDeps targetPrefix;
357− # Save generated files for needed when building ghc and ghcjs
358− mkdir -p $generated/includes/dist-derivedconstants/header
359− cp includes/dist-derivedconstants/header/GHCConstantsHaskell*.hs \
360− $generated/includes/dist-derivedconstants/header
361− if [[ -f includes/ghcplatform.h ]]; then
362− cp includes/ghcplatform.h $generated/includes
363− elif [[ -f includes/dist-install/build/ghcplatform.h ]]; then
364− cp includes/dist-install/build/ghcplatform.h $generated/includes
366− mkdir -p $generated/compiler/stage2/build
367− cp compiler/stage2/build/Config.hs $generated/compiler/stage2/build || true
368− if [[ -f compiler/stage2/build/GHC/Platform/Constants.hs ]]; then
369− mkdir -p $generated/compiler/stage2/build/GHC/Platform
370− cp compiler/stage2/build/GHC/Platform/Constants.hs $generated/compiler/stage2/build/GHC/Platform
372− if [[ -f compiler/stage2/build/GHC/Settings/Config.hs ]]; then
373− mkdir -p $generated/compiler/stage2/build/GHC/Settings
374− cp compiler/stage2/build/GHC/Settings/Config.hs $generated/compiler/stage2/build/GHC/Settings
376− cp compiler/stage2/build/*.hs-incl $generated/compiler/stage2/build || true
377− mkdir -p $generated/rts/build
378− cp rts/build/config.hs-incl $generated/rts/build || true
380− # Save generated files for needed when building ghc-boot
381− mkdir -p $generated/libraries/ghc-boot/dist-install/build/GHC/Platform
382− if [[ -f libraries/ghc-boot/dist-install/build/GHC/Version.hs ]]; then
383− cp libraries/ghc-boot/dist-install/build/GHC/Version.hs $generated/libraries/ghc-boot/dist-install/build/GHC/Version.hs
385− if [[ -f libraries/ghc-boot/dist-install/build/GHC/Platform/Host.hs ]]; then
386− cp libraries/ghc-boot/dist-install/build/GHC/Platform/Host.hs $generated/libraries/ghc-boot/dist-install/build/GHC/Platform/Host.hs
389− ${installDeps targetPrefix}
391− # Sanity checks for https://github.com/input-output-hk/haskell.nix/issues/660
392− if ! "$out/bin/${targetPrefix}ghc" --version; then
393− echo "ERROR: Missing file $out/bin/${targetPrefix}ghc"
396− if ! "$out/bin/${targetPrefix}ghc-pkg" --version; then
397− echo "ERROR: Missing file $out/bin/${targetPrefix}ghc-pkg"
400− if [[ ! -d "$out/lib/${targetPrefix}ghc-${version}" ]]; then
401− echo "ERROR: Missing directory $out/lib/${targetPrefix}ghc-${version}"
404− if (( $(ls -1 "$out/lib/${targetPrefix}ghc-${version}" | wc -l) < 30 )); then
405− echo "ERROR: Expected more files in $out/lib/${targetPrefix}ghc-${version}"
410 passthru = {
331 passthru = {
411 inherit bootPkgs targetPrefix;
332 inherit bootPkgs targetPrefix;
413 inherit llvmPackages;
334 inherit llvmPackages;
414 inherit enableShared;
335 inherit enableShared;
417 # Our Cabal compiler name
337 # Our Cabal compiler name
418 haskellCompilerName = "ghc-${version}";
338 haskellCompilerName = "ghc-${version}";
420− # This uses a similar trick to `pkgs.srcOnly` to get the configured src
340+ configured-src = configured-src;
421− # We could add `configured-src` as an output of the ghc derivation, but
422− # having it as its own derivation means it can be accessed quickly without
424− configured-src = stdenv.mkDerivation ({
425− name = name + "-configured-src";
435− depsTargetTargetPropagated
443− # Including all the outputs (not just $out) causes `mkDerivation` to use the nixpkgs multiple-outputs.sh hook.
444− # This hook changes the arguments passed to `configure`.
450− phases = [ "unpackPhase" "patchPhase" ]
451− ++ lib.optional (ghc-patches != []) "autoreconfPhase"
452− ++ [ "configurePhase" "installPhase"];
455− # Used to detect non haskell-nix compilers (accidental use of nixpkgs compilers can lead to unexpected errors)
342+ # Used to detect non haskell-nix compilers (accedental use of nixpkgs compilers can lead to unexpected errors)
456 isHaskellNixCompiler = true;
343 isHaskellNixCompiler = true;
458− # The same GHC, but with debug enabled (if it can be)
459− dwarf = lib.makeOverridable self (args // {
460− enableDWARF = stdenv.targetPlatform.isLinux
461− && builtins.compareVersions ghc-version "8.10.2" >= 0;
464− # The same GHC, but without the large (1TB) address space reservation
465− smallAddressSpace = lib.makeOverridable self (args // {
466− disableLargeAddressSpace = true;
468 } // extra-passthru;
344 } // extra-passthru;
@@ -474,39 +350,10 @@ stdenv.mkDerivation (rec {
474 inherit (ghc.meta) license platforms;
350 inherit (ghc.meta) license platforms;
477− # Needed for `haddock` to work on source that includes non ASCII chars
353+} // stdenv.lib.optionalAttrs targetPlatform.useAndroidPrebuilt {
478− LANG = "en_US.UTF-8";
479− LC_ALL = "en_US.UTF-8";
480−} // lib.optionalAttrs (stdenv.buildPlatform.libc == "glibc") {
481− LOCALE_ARCHIVE = "${buildPackages.glibcLocales}/lib/locale/locale-archive";
482−} // lib.optionalAttrs targetPlatform.useAndroidPrebuilt {
483 dontStrip = true;
354 dontStrip = true;
484 dontPatchELF = true;
355 dontPatchELF = true;
485 noAuditTmpdir = true;
356 noAuditTmpdir = true;
486−} // lib.optionalAttrs (stdenv.buildPlatform.isDarwin || stdenv.targetPlatform.isWindows) {
487− # ghc install on macOS wants to run `xattr -r -c`
488− # The macOS version fails because it wants python 2.
489− # The nix version of xattr does not support those args.
490− # Luckily setting the path to something that does not exist will skip the step.
491− preBuild = lib.optionalString stdenv.buildPlatform.isDarwin ''
492− export XATTR=$(mktemp -d)/nothing
494− # We need to point at a stand in `windows.h` header file so that the RTS headers can
495− # work on the hostPlatform. We also need to work around case sensitve file system issues.
496− + lib.optionalString stdenv.targetPlatform.isWindows ''
497− export NIX_CFLAGS_COMPILE_${
498− # We want this only to apply to the non windows hostPlatform (the
499− # windows gcc cross compiler has a full `windows.h`).
500− # This matches the way `suffixSalt` is calculated in nixpkgs.
501− # See https://github.com/NixOS/nixpkgs/blob/8411006d6bcd7f6e6a8a1a80ce8fcdccdd16c6ab/pkgs/build-support/cc-wrapper/default.nix#L58
502− lib.replaceStrings ["-" "."] ["_" "_"] stdenv.hostPlatform.config
503− }+=" -I${../windows/include}"
504− if [[ -f libraries/base/include/winio_structs.h ]]; then
505− substituteInPlace libraries/base/include/winio_structs.h --replace Windows.h windows.h
507− if [[ -f rts/win32/ThrIOManager.c ]]; then
508− substituteInPlace rts/win32/ThrIOManager.c --replace rts\\OSThreads.h rts/OSThreads.h
compiler/ghc/source-dist.nixdeleted−40
@@ -1,40 +0,0 @@
1−{ src, stdenv, pkgs, version, ghc, alex, happy, hscolour }:
6− name = "ghc-source-dist";
8− buildInputs = [ ghc alex happy hscolour ] ++ (with pkgs; [ automake bash git cacert python3 autoconf xorg.lndir ]);
12− phases = [ "unpackPhase" "buildPhase" "installPhase" ];
15− # Happy and Alex are confused about their data dirs. See
16− # https://github.com/haskell/cabal/issues/5862 for details.
18− # This is fixed in more recent builds. We can't rely on
19− # custom built tools as computing the source-dist is pretty
20− # much in the bootstrap lane.
22− export alex_datadir=$(find ${alex}/share -name "alex-*" -type d -and -not -path "*doc*")
23− export happy_datadir=$(find ${happy}/share -name "happy-*" -type d -and -not -path "*doc*")
25− # We need to --skip-url-rewrites, ghc is a bit too strict here.
26− python3 ./boot --skip-url-rewrites
27− # let's not flood the screen with garbage.
30− # this folder ends up being needed for the windows dists; just mock it.
37− install -Dm644 sdistprep/ghc-$(cat VERSION)-src.tar.xz $out/src.tar.xz
38− install -Dm644 sdistprep/ghc-$(cat VERSION)-testsuite.tar.xz $out/testsuite.tar.xz
compiler/ghcjs/ghcjs-src.json+2−2
@@ -1,6 +1,6 @@
2 "url": "https://github.com/ghcjs/ghcjs",
2 "url": "https://github.com/ghcjs/ghcjs",
3− "rev": "58ed01e77028108c2b1da10d52cb331788b6a466",
3+ "rev": "e87195eaa2bc7e320e18cf10386802bc90b7c874",
4− "sha256": "1lr3grk5jjm8bvvkndilm06ry1dj7i66k4g27fr009bggdy9q6ws",
4+ "sha256": "02mwkf7aagxqi142gcmq048244apslrr72p568akcab9s0fn2gvy",
5 "fetchSubmodules": true
5 "fetchSubmodules": true
compiler/ghcjs/ghcjs.nix+31−264
@@ -1,28 +1,18 @@
2, ghcjsSrcJson ? ./ghcjs-src.json
2, ghcjsSrcJson ? ./ghcjs-src.json
3, ghcjsSrc ? pkgs.buildPackages.fetchgit (builtins.fromJSON (builtins.readFile ghcjsSrcJson))
3, ghcjsSrc ? pkgs.buildPackages.fetchgit (builtins.fromJSON (builtins.readFile ghcjsSrcJson))
4−, ghcjsVersion ? "8.6.0.0.10"
4+, ghcjsVersion ? "8.6.0.1"
5, ghcVersion ? "8.6.5"
5, ghcVersion ? "8.6.5"
6−, compiler-nix-name ? if builtins.compareVersions ghcjsVersion "8.8.0.0" > 0
9, ghc ? pkgs.buildPackages.ghc
6, ghc ? pkgs.buildPackages.ghc
10−, overrideBootPackages ? [] # adds if not present, overrides if present.
7+, happy ? pkgs.buildPackages.haskellPackages.happy
8+, alex ? pkgs.buildPackages.haskellPackages.alex
9+, cabal-install ? pkgs.buildPackages.cabal-install
13− isGhcjs88 = builtins.compareVersions ghcjsVersion "8.8.0.0" >= 0;
14− isGhcjs810 = builtins.compareVersions ghcjsVersion "8.10.0.0" >= 0;
16 project = pkgs.buildPackages.haskell-nix.ghcjsProject {
12 project = pkgs.buildPackages.haskell-nix.ghcjsProject {
17 src = ghcjsSrc;
13 src = ghcjsSrc;
18− inherit ghcjsVersion compiler-nix-name overrideBootPackages;
14+ inherit ghc ghcjsVersion ghcVersion happy alex cabal-install;
19− index-state = "2020-04-25T00:00:00Z";
15+ index-state = "2019-12-10T00:00:00Z";
20− patches = if isGhcjs810
22− ./patches/810/fast-weak.patch
23− ./patches/810/boot-optimization-flags.patch
26# plan-sha256 = "1wy2lr08maxyi7r8jiwf2gj6pdayk5vxxwh42bj4s2gg4035z0yc";
16# plan-sha256 = "1wy2lr08maxyi7r8jiwf2gj6pdayk5vxxwh42bj4s2gg4035z0yc";
27# materialized = ../../materialized/ghcjs;
17# materialized = ../../materialized/ghcjs;
@@ -32,270 +22,47 @@ let
32 all-ghcjs = pkgs.buildPackages.symlinkJoin {
22 all-ghcjs = pkgs.buildPackages.symlinkJoin {
33 name = "ghcjs-${ghcjsVersion}-symlinked";
23 name = "ghcjs-${ghcjsVersion}-symlinked";
35− (ghcjs.getComponent "exe:ghcjs-boot")
25+ ghcjs.components.exes.ghcjs
36− ] ++ (if isGhcjs88
26+ ghcjs.components.exes.ghcjs-pkg
37− then [
27+ ghcjs.components.exes.haddock-ghcjs
38− (ghcjs.getComponent "exe:ghcjs")
28+ ghcjs.components.exes.hsc2hs-ghcjs
39− (ghcjs.getComponent "exe:ghcjs-pkg")
29+ ghcjs.components.exes.ghcjs-boot
40− (ghcjs.getComponent "exe:private-ghcjs-hsc2hs")
30+ ghcjs.components.exes.ghcjs-run
41− (ghcjs.getComponent "exe:haddock")
31+ ghcjs.components.exes.ghcjs-dumparchive
42− (ghcjs.getComponent "exe:ghcjs-dumparchive")
32+ ];
43− (ghcjs.getComponent "exe:private-ghcjs-run")
44− (ghcjs.getComponent "exe:private-ghcjs-unlit")
47− (ghcjs.getComponent "exe:private-ghcjs-ghcjs")
48− (ghcjs.getComponent "exe:private-ghcjs-ghcjs-pkg")
49− (ghcjs.getComponent "exe:private-ghcjs-run")
50− (ghcjs.getComponent "exe:private-ghcjs-unlit")
51− (ghcjs.getComponent "exe:private-ghcjs-hsc2hs")
52− (ghcjs.getComponent "exe:private-ghcjs-haddock")
53− (ghcjs.getComponent "exe:private-ghcjs-ghcjs-dumparchive")
56 libexec = "libexec/${builtins.replaceStrings ["darwin" "i686"] ["osx" "i386"] pkgs.stdenv.buildPlatform.system}-${ghc.name}/ghcjs-${ghcVersion}";
34 libexec = "libexec/${builtins.replaceStrings ["darwin" "i686"] ["osx" "i386"] pkgs.stdenv.buildPlatform.system}-${ghc.name}/ghcjs-${ghcVersion}";
57 booted-ghcjs = pkgs.stdenv.mkDerivation {
35 booted-ghcjs = pkgs.stdenv.mkDerivation {
58 name = "ghcjs-${ghcVersion}";
36 name = "ghcjs-${ghcVersion}";
59 src = project.configured-src;
37 src = project.configured-src;
61− nativeBuildInputs = project.bootInputs
39+ nativeBuildInputs = project.bootInputs;
62− ++ pkgs.lib.optional isGhcjs88 pkgs.buildPackages.procps;
63 passthru = {
40 passthru = {
64− inherit all-ghcjs bundled-ghcjs project;
41+ inherit all-ghcjs;
65− configured-src = project.configured-src + "/ghc";
42+ inherit (project) configured-src;
66− # Used to detect non haskell-nix compilers (accidental use of nixpkgs compilers can lead to unexpected errors)
43+ # Used to detect non haskell-nix compilers (accedental use of nixpkgs compilers can lead to unexpected errors)
67 isHaskellNixCompiler = true;
44 isHaskellNixCompiler = true;
68 } // ghcjs.components.exes;
45 } // ghcjs.components.exes;
69− dontUpdateAutotoolsGnuConfigScripts = true;
70 dontConfigure = true;
46 dontConfigure = true;
71 dontInstall = true;
47 dontInstall = true;
72 buildPhase = ''
48 buildPhase = ''
73− export HOME=$TMP
49+ export HOME=$TMP
74− mkdir $HOME/.cabal
50+ mkdir $HOME/.cabal
75− touch $HOME/.cabal/config
51+ touch $HOME/.cabal/config
76− cd lib/boot
52+ cd lib/boot
78− then ''
54+ mkdir -p $out/bin
79− mkdir -p $out/bin
55+ mkdir -p $out/lib/ghcjs-${ghcVersion}
80− mkdir -p $out/lib
56+ lndir ${all-ghcjs}/${libexec} $out/bin
81− lndir ${all-ghcjs}/bin $out/bin
83− rm $out/bin/ghcjs-boot
84− cp ${ghcjs.getComponent "exe:ghcjs-boot"}/bin/ghcjs-boot $out/bin
86− cp ${ghcjs.getComponent "exe:haddock"}/bin/haddock $out/bin
88− wrapProgram $out/bin/ghcjs --add-flags "-B$out/lib"
58+ wrapProgram $out/bin/ghcjs --add-flags "-B$out/lib/ghcjs-${ghcVersion}"
89− wrapProgram $out/bin/haddock --add-flags "-B$out/lib"
59+ wrapProgram $out/bin/haddock-ghcjs --add-flags "-B$out/lib/ghcjs-${ghcVersion}"
90− wrapProgram $out/bin/ghcjs-pkg --add-flags "--global-package-db=$out/lib/package.conf.d"
60+ wrapProgram $out/bin/ghcjs-pkg --add-flags "--global-package-db=$out/lib/ghcjs-${ghcVersion}/package.conf.d"
94− lndir ${all-ghcjs} $out
95− mkdir -p $out/lib/ghcjs-${ghcVersion}
96− rm $out/bin/ghcjs-boot
97− cp ${ghcjs.getComponent "exe:ghcjs-boot"}/bin/ghcjs-boot $out/bin
98− wrapProgram $out/bin/ghcjs-boot --set ghcjs_libexecdir $out/bin
99− mv $out/${libexec}/* $out/bin
101− wrapProgram $out/bin/private-ghcjs-ghcjs --add-flags "-B$out/lib"
62+ env PATH=$out/bin:$PATH $out/bin/ghcjs-boot -j1 --with-ghcjs-bin $out/bin
102− wrapProgram $out/bin/private-ghcjs-haddock --add-flags "-B$out/lib"
103− wrapProgram $out/bin/private-ghcjs-ghcjs-pkg --add-flags "--global-package-db=$out/lib/package.conf.d"
106− # Avoid timeouts while unix package runs hsc2hs (it does not print anything
107− # for more than 900 seconds).
109− for n in {1..50}; do
110− if [ ! -f $TMP/done ]; then
117− # Unsets NIX_CFLAGS_COMPILE so the osx version of iconv.h is not used by mistake
118− if isGhcjs810 then ''
119− env -u NIX_CFLAGS_COMPILE PATH=$out/bin:$PATH \
120− $out/bin/ghcjs-boot --with-emsdk=${project.emsdk} --no-haddock \
121− || (echo failed > $TMP/done; false)
123− else if isGhcjs88 then ''
124− env -u NIX_CFLAGS_COMPILE PATH=$out/bin:$PATH \
125− $out/bin/ghcjs-boot -j1 --with-emsdk=${project.emsdk} --no-prof --no-haddock \
126− || (echo failed > $TMP/done; false)
129− env -u NIX_CFLAGS_COMPILE PATH=$out/bin:$PATH \
130− $out/bin/ghcjs-boot -j1 --with-ghcjs-libdir=$out --with-emsdk=${project.emsdk} \
131− || (echo failed > $TMP/done; false)
136 # We hard code -j1 as a temporary workaround for
64 # We hard code -j1 as a temporary workaround for
137 # https://github.com/ghcjs/ghcjs/issues/654
65 # https://github.com/ghcjs/ghcjs/issues/654
138 # enableParallelBuilding = true;
66 # enableParallelBuilding = true;
140− ghcjs-relocatable-bin = pkgs.stdenv.mkDerivation {
68+in booted-ghcjs
141− name = "ghcjs-relocatable-bin-${ghcVersion}";
143− dontConfigure = true;
145− dontPatchShebangs = true;
146− dontPatchELF = true;
148− # Copy the ghcjs exectuables
150− cp $src/${libexec}/* $out/bin
152− # Add readlink (needed by bundleRootDir)
153− cp ${pkgs.coreutils}/bin/readlink $out/bin
155− '' + (pkgs.lib.optionalString pkgs.stdenv.isDarwin ''
156− # Make the executables location independent using install_name_tool and @executable_path
158− # Copy the libraries needed into place
159− cp ${pkgs.gmp}/lib/libgmp.10.dylib $out/bin
160− cp ${pkgs.ncurses}/lib/libncursesw.6.dylib $out/bin
161− cp ${pkgs.libffi}/lib/libffi.6.dylib $out/bin
163− # Set the ID of the libraries
164− chmod -R +w $out/bin
165− install_name_tool -id "@executable_path/libgmp.10.dylib" "$out/bin/libgmp.10.dylib"
166− install_name_tool -id "@executable_path/libncursesw.6.dylib" "$out/bin/libncursesw.6.dylib"
167− install_name_tool -id "@executable_path/libffi.6.dylib" "$out/bin/libffi.6.dylib"
169− # Modify all the references so we look for the libraries in the system location or
170− # @executable_path (the directory containin the exetubable itself).
171− for fn in $out/bin/*; do
172− install_name_tool -change "${pkgs.libiconv}/lib/libiconv.dylib" /usr/lib/libiconv.dylib "$fn"
173− install_name_tool -change "${pkgs.stdenv.libc}/lib/libSystem.B.dylib" /usr/lib/libSystem.B.dylib "$fn"
174− install_name_tool -change "${pkgs.gmp}/lib/libgmp.10.dylib" "@executable_path/libgmp.10.dylib" "$fn"
175− install_name_tool -change "${pkgs.ncurses}/lib/libncursesw.6.dylib" "@executable_path/libncursesw.6.dylib" "$fn"
176− install_name_tool -change "${pkgs.libffi}/lib/libffi.6.dylib" "@executable_path/libffi.6.dylib" "$fn"
180− + (pkgs.lib.optionalString pkgs.stdenv.isLinux ''
181− # Make the executables location independent using patchelf and $ORIGIN.
182− chmod -R +w $out/bin
183− # This interpreter setting will not work on nixOS, but this bundle is
184− # not really needed on nixOS systems.
185− patchelf --set-interpreter /lib64/ld-linux-x86-64.so.2 $out/bin/*
186− patchelf --set-rpath '$ORIGIN' $out/bin/*
187− # Link the libraries needed into place
188− ln -s ${pkgs.gmp}/lib/libgmp.so.* $out/bin
189− ln -s ${pkgs.ncurses}/lib/libncursesw.so.* $out/bin
190− ln -s ${pkgs.libffi}/lib/libffi.so.* $out/bin
193− # This is a way to find the location of the root directory of this bundle
194− # when one of the wrapper scripts runs. By using readlink (to avoid
195− # issues with symlinks that might be made to the script) and dirname
196− # we can find the directory even when it may have been moved.
197− bundleRootDir = ''"$(dirname "$(dirname "$(readlink -f "$0")")")"'';
199− compilerName ? "ghcjs", # Name for the compiler wrapper
200− db ? null, # A ghcjs package database this argument should can
201− # be `project.(shellFor { ... }).configFiles` or
202− # the result of a `makeConfigFiles` call.
203− hostDb ? null # Like db, but this will be passed as the `-host-package-db`.
206− libDeps = pkgs.lib.concatMapStrings (lib: "${lib} ") (pkgs.lib.unique (
207− [booted-ghcjs ghc db hostDb pkgs.ncurses pkgs.gmp pkgs.libffi]
208− ++ (pkgs.haskell-nix.haskellLib.flatLibDepends db.component)
209− ++ (pkgs.haskell-nix.haskellLib.flatLibDepends hostDb.component)
211− in pkgs.stdenv.mkDerivation {
212− name = "${compilerName}-${ghcVersion}-bundle";
214− nativeBuildInputs = [ pkgs.makeWrapper pkgs.xorg.lndir ];
215− dontConfigure = true;
217− dontPatchShebangs = true;
218− dontPatchELF = true;
220− # Copy the ghcjs exectuables
222− lndir ${ghcjs-relocatable-bin}/bin $out/bin
224− # Make the executables writeable for patchelf and install_name_tool
225− chmod -R +w $out/bin
227− # And links for the /lib directory of all the dependencies
228− # including the booted ghcjs
229− for lib in ${ libDeps }; do
230− if [ -d $lib/lib ]; then
231− mkdir -p $out/$(basename $lib)
232− lndir -silent $lib $out/$(basename $lib)
236− '' + (pkgs.lib.optionalString pkgs.stdenv.isDarwin ''
237− rm -rf $out/$(basename ${hostDb})/lib/links
238− cp -rL ${hostDb}/lib/links $out/$(basename ${hostDb})/lib
239− chmod -R +w $out/$(basename ${hostDb})/lib/links
241− # Modify all the references so we look for the libraries in the system location or
242− # @executable_path (the directory containin the exetubable itself).
243− for fn in $out/$(basename ${hostDb})/lib/links/*; do
244− install_name_tool -change "${pkgs.libiconv}/lib/libiconv.dylib" /usr/lib/libiconv.dylib "$fn"
245− install_name_tool -change "${pkgs.stdenv.libc}/lib/libSystem.B.dylib" /usr/lib/libSystem.B.dylib "$fn"
246− install_name_tool -change "${pkgs.gmp}/lib/libgmp.10.dylib" "@executable_path/libgmp.10.dylib" "$fn"
247− install_name_tool -change "${pkgs.ncurses}/lib/libncursesw.6.dylib" "@executable_path/libncursesw.6.dylib" "$fn"
248− install_name_tool -change "${pkgs.libffi}/lib/libffi.6.dylib" "@executable_path/libffi.6.dylib" "$fn"
252− # Wrap the programs to add the ghcjs library dir and package DB directories
253− wrapProgram $out/bin/ghcjs \
254− --add-flags '"-B${bundleRootDir}/$(basename ${booted-ghcjs})/lib/ghcjs-${ghcVersion}"' \
255− --add-flags '"-package-db ${db}/${db.packageCfgDir}"' ${
256− pkgs.lib.optionalString (hostDb != null)
257− " --add-flags '-host-package-db=${hostDb}/${hostDb.packageCfgDir}'"
259− wrapProgram $out/bin/ghcjs-pkg --add-flags '"--global-package-db=${db}/${db.packageCfgDir}"'
260− wrapProgram $out/bin/haddock-ghcjs --add-flags '"-B${bundleRootDir}/$(basename ${booted-ghcjs})/lib/ghcjs-${ghcVersion}"'
262− # Fix the bang pattern to use the systems bash.
263− # Replace the absolute output path ($out) with bundleRootDir
264− # (this will fix the references to the unwarpped executables).
265− # Replace the `/nix/store` refs (in the package DB paths) with
268− -e 's|${pkgs.stdenv.shell}|/usr/bin/env -S bash|' \
269− -e "s|$out/|"'${bundleRootDir}/|g' \
270− -e 's|/nix/store/|${bundleRootDir}/|g' \
271− $out/bin/ghcjs $out/bin/haddock-ghcjs $out/bin/ghcjs-pkg
273− # Update the ghcjs and ghc settings files so that `cc` looked up in the PATH.
274− rm $out/$(basename ${booted-ghcjs})/lib/ghcjs-${ghcVersion}/settings
275− sed -e 's|/nix/store/.*/bin/cc|cc|' \
276− < ${booted-ghcjs}/lib/ghcjs-${ghcVersion}/settings \
277− > $out/$(basename ${booted-ghcjs})/lib/ghcjs-${ghcVersion}/settings
278− rm $out/$(basename ${ghc})/lib/ghc-${ghcVersion}/settings
279− sed -e 's|/nix/store/.*/bin/cc|cc|' \
280− < ${ghc}/lib/ghc-${ghcVersion}/settings \
281− > $out/$(basename ${ghc})/lib/ghc-${ghcVersion}/settings
283− # Update the ghcjs settings files so that `node` looked up in the PATH.
284− rm $out/$(basename ${booted-ghcjs})/lib/ghcjs-${ghcVersion}/nodeSettings.json
285− sed -e 's|/nix/store/.*/bin/node|node|' \
286− < ${booted-ghcjs}/lib/ghcjs-${ghcVersion}/nodeSettings.json \
287− > $out/$(basename ${booted-ghcjs})/lib/ghcjs-${ghcVersion}/nodeSettings.json
289− # Update the ghcjs settings files so that `node` looked up in the PATH.
290− rm $out/$(basename ${booted-ghcjs})/lib/ghcjs-${ghcVersion}/ghc_libdir
291− sed -e 's|/nix/store/|../../../|' \
292− < ${booted-ghcjs}/lib/ghcjs-${ghcVersion}/ghc_libdir \
293− > $out/$(basename ${booted-ghcjs})/lib/ghcjs-${ghcVersion}/ghc_libdir
294− '' + (pkgs.lib.optionalString (compilerName != "ghcjs") ''
295− # Rename the wrappers based on the `compilerName` arg
296− mv $out/bin/ghcjs $out/bin/${compilerName}
297− mv $out/bin/ghcjs-pkg $out/bin/${compilerName}-pkg
298− mv $out/bin/haddock-ghcjs $out/bin/haddock-${compilerName}
compiler/ghcjs/ghcjs810-patched-boot-packages/aeson.patchdeleted−13
@@ -1,13 +0,0 @@
1−diff --git a/aeson.cabal b/aeson.cabal
2−index a0ebd59..552f160 100755
5−@@ -150,7 +150,7 @@ library
6− dlist >= 0.8.0.4 && < 0.9,
7− hashable >= 1.2.7.0 && < 1.4,
8− scientific >= 0.3.6.2 && < 0.4,
9−- th-abstraction >= 0.2.8.0 && < 0.4,
10−+ th-abstraction >= 0.2.8.0 && < 0.5,
11− uuid-types >= 1.0.3 && < 1.1,
12− vector >= 0.12.0.1 && < 0.13
compiler/ghcjs/ghcjs810-patched-boot-packages/default.nixdeleted−176
@@ -1,176 +0,0 @@
5− patch = p: path: pkgs.runCommand "patched" { buildInputs = [ pkgs.gnupatch ]; } ''
11− getSubdir = d: path: pkgs.runCommand "subdir" { } ''
12− cp -r ${path}/${d} $out
18− src = pkgs.fetchgit {
19− url = "https://github.com/haskell/primitive.git";
20− rev = "11ff865fd2157a1dfd7dfd525b1cf27e1a300633";
21− sha256 = "1skim1vlmf0v4ixm8h8ja3m1pz0h10xrfdh1rfzawsy8rvrp2cc0";
26− src = pkgs.fetchgit {
27− url = "https://github.com/spl/dlist.git";
28− rev = "567cfeb2f5da30f2e5faf167895b3ee04c698ca0";
29− sha256 = "0b8ij3ls7bccbp9rlm8dnflnf1wim9xsg42wmirvwxwmh2c0r0hg";
34− src = pkgs.fetchgit {
35− url = "https://github.com/haskell/vector.git";
36− rev = "de10fd281fa5d8beee3623e809a71385a5ef6864";
37− sha256 = "09vhbvrkw90xgqfrybmhy120rwcy4snw2f97004alr3n96lwpg1q";
42− src = patch ./ghcjs-base.patch (pkgs.fetchgit {
43− url = "https://github.com/ghcjs/ghcjs-base.git";
44− rev = "85e31beab9beffc3ea91b954b61a5d04e708b8f2";
45− sha256 = "15fdkjv0l7hpbbsn5238xxgzfdg61g666nzbv2sgxkwryn5rycv0";
50− src = pkgs.fetchgit {
51− url = "https://github.com/dfordivam/text.git";
52− rev = "126174753ea8e5f45df8fcbba609e3f1c453bf27";
53− sha256 = "0l7nbln2w77s12fm4ybhi0jsfnxkyiwskfx3b682pfisa6n32rgm";
58− src = patch ./hashable.patch (pkgs.fetchgit {
59− url = "https://github.com/haskell-unordered-containers/hashable.git";
60− rev = "819fdbeaeeb62ed1344fb057de17fa29b10fa3e1";
61− sha256 = "0xnwfwnnh0bxq16wx0qmdakvgvj8i22km3bhvvki15rd9jil04cc";
65− name = "integer-logarithms";
66− src = pkgs.fetchgit {
67− url = "https://github.com/haskellari/integer-logarithms.git";
68− rev = "df09cef2c8eb0d5899e2bcccee2a4fad413bdc11";
69− sha256 = "1k17hjnjmy44dfywx9nr804qiqmjjhkpfpll5bsfvzvpnl5r75nj";
74− src = pkgs.fetchgit {
75− url = "https://github.com/basvandijk/scientific.git";
76− rev = "1d049cdf04e2d92ab187754044b0df933c5e6b0d";
77− sha256 = "1v4fmfq8hyhdb5ck5r2b45s1izr7hx97v4g7s597ajbv72ldvilq";
82− src = pkgs.fetchgit {
83− url = "https://github.com/dfordivam/attoparsec.git";
84− rev = "cbfb944aeff61144059a28ada93c579e93ccf7d2";
85− sha256 = "0bbr4943439sy3grwpwbna4mk7iv87ijaiv3jjfhxhp7y67z51h8";
90− src = pkgs.fetchgit {
91− url = "https://github.com/haskellari/splitmix.git";
92− rev = "d8c1b57bb75178675423f87b1ff58429f37bc9fe";
93− sha256 = "1m8v439vlwqpqw28dbr04n6m0j2cfb169ly285lp0bjmzcwlr289";
98− src = pkgs.fetchgit {
99− url = "https://github.com/haskell/random.git";
100− rev = "8c59bd0fda84fa581d53069b45100d810f5a778f";
101− sha256 = "1drdipfbmpg2g2cdrnq1k8yysh86i7ljwm6zkrrs3g8l47n4ha4d";
105− name = "uuid-types";
106− src = getSubdir "uuid-types" (pkgs.fetchgit {
107− url = "https://github.com/haskell-hvr/uuid.git";
108− rev = "e8dc7126582ba4d3abc5e0f26dc1d8477caab01e";
109− sha256 = "037cnfz7rhkw383rn117b994jzs93i3bwdv47x5qiza5h5syd76f";
113− name = "unordered-containers";
114− src = pkgs.fetchgit {
115− url = "https://github.com/haskell-unordered-containers/unordered-containers.git";
116− rev = "db9ddde2b243366976a1bdfbb12a5e257ca762c3";
117− sha256 = "1wd5hxppj1gg9fa1ihcn3s2y0i70ykv2sf8sym6dlf3r4snda9zi";
121− name = "base-orphans";
122− src = pkgs.fetchgit {
123− url = "https://github.com/haskell-compat/base-orphans.git";
124− rev = "1af3a3512efbcc12e0c34637a0e433ab6e195932";
125− sha256 = "14b6qwc3dbnmrhqk66a2cn4pvv3nf6kb3h7ym1hjn5xs7n62zhw1";
129− name = "time-compat";
130− src = pkgs.fetchgit {
131− url = "https://github.com/haskellari/time-compat.git";
132− rev = "67b8b063295601fb1db185baad363a3f33ed63a9";
133− sha256 = "0nbjsn7yrygv4i1fd8x90mnf4janq536ffvkjd5zsnyzm8qk8k3j";
137− name = "th-abstraction";
138− src = pkgs.fetchgit {
139− url = "https://github.com/glguy/th-abstraction.git";
140− rev = "d75761bc5a0f912aeeb508e2c227b9fd830153fd";
141− sha256 = "070ihxncymzsbrgvwmrm717n0qq5bf9nvc2k210nkil1cwrsnhvc";
146− src = pkgs.fetchgit {
147− url = "https://github.com/ekmett/tagged.git";
148− rev = "15fcfe90c779efea951ecf4d451d709aed5f7d32";
149− sha256 = "1x1wr4zf7k1kvd6rj06h9shw7p5di1jra9fysyw0jx7riiq0v3ch";
153− name = "base-compat";
154− src = getSubdir "base-compat" (pkgs.fetchgit {
155− url = "https://github.com/haskell-compat/base-compat.git";
156− rev = "e8dbac72251e898fc4b1c1abb34d6578da12f476";
157− sha256 = "1gs15g8h7p8gab9j5fjvjlhrfv112w91plraf9chq80c5slvk016";
161− name = "base-compat-batteries";
162− src = getSubdir "base-compat-batteries" (pkgs.fetchgit {
163− url = "https://github.com/haskell-compat/base-compat.git";
164− rev = "e8dbac72251e898fc4b1c1abb34d6578da12f476";
165− sha256 = "1gs15g8h7p8gab9j5fjvjlhrfv112w91plraf9chq80c5slvk016";
170− src = patch ./aeson.patch (pkgs.fetchgit {
171− url = "https://github.com/dfordivam/aeson.git";
172− rev = "9a8f57a52eb748a030bc2bcf5c3159a5e2e696b2";
173− sha256 = "1y8j3ddxxddpnb7c0vi73ijb08sr09z1gdzfg1rfyzn82d6i38zv";
compiler/ghcjs/ghcjs810-patched-boot-packages/ghcjs-base.patchdeleted−471
@@ -1,471 +0,0 @@
1−diff --git a/Data/JSString.hs b/Data/JSString.hs
2−index 176aad4..9ca6693 100644
5−@@ -99,6 +99,7 @@ module Data.JSString ( JSString
13−@@ -1231,19 +1232,23 @@ splitAt (I# n) x = case js_splitAt n x of (# y, z #) -> (y, z)
14− -- of @t@ of elements that satisfy @p@, and whose second is the
15− -- remainder of the list.
16− span :: (Char -> Bool) -> JSString -> (JSString, JSString)
17−-span p x = case js_length x of
18−- 0# -> (empty, empty)
19−- l -> let c0 = js_uncheckedIndex 0# x
20−- in if p (C# (chr# c0)) then loop 0# l else (empty, x)
21−+span p x = let (# a, b #) = span_ p x in (a, b)
24−+span_ :: (Char -> Bool) -> JSString -> (# JSString, JSString #)
25−+span_ p x = case js_length x of
26−+ 0# -> (# empty, empty #)
27−+ l -> let c0 = js_uncheckedIndex 0# x
28−+ in if p (C# (chr# c0)) then loop 0# l else (# empty, x #)
31−- | isTrue# (i >=# l) = (x, empty)
32−+ | isTrue# (i >=# l) = (# x, empty #)
34− let c = js_uncheckedIndex i x
35− in if p (C# (chr# c))
36− then loop (i +# charWidth c) l
37−- else (js_substr 0# i x, js_substr1 i x)
39−+ else (# js_substr 0# i x, js_substr1 i x #)
42− -- | /O(n)/ 'break' is like 'span', but the prefix returned is
43− -- over elements that fail the predicate @p@.
44−diff --git a/GHCJS/Foreign.hs b/GHCJS/Foreign.hs
45−index 5bbc5c5..b128f24 100644
46−--- a/GHCJS/Foreign.hs
47−+++ b/GHCJS/Foreign.hs
48−@@ -82,7 +82,7 @@ import GHCJS.Marshal
49− import GHCJS.Marshal.Pure
51− import Data.String (IsString(..))
52−-import qualified Data.Text as T
53−+-- import qualified Data.Text as T
56− class ToJSString a where
57−diff --git a/GHCJS/Foreign/Internal.hs b/GHCJS/Foreign/Internal.hs
58−index 5ac81f0..449bfe4 100644
59−--- a/GHCJS/Foreign/Internal.hs
60−+++ b/GHCJS/Foreign/Internal.hs
61−@@ -100,10 +100,10 @@ import Data.Typeable (Typeable)
62− import Data.ByteString (ByteString)
63− import Data.ByteString.Unsafe (unsafePackAddressLen)
65−-import qualified Data.Text.Array as A
66−-import qualified Data.Text as T
67−-import qualified Data.Text.Internal as T
68−-import qualified Data.Text.Lazy as TL (Text, toStrict, fromStrict)
69−+-- import qualified Data.Text.Array as A
70−+-- import qualified Data.Text as T
71−+-- import qualified Data.Text.Internal as T
72−+-- import qualified Data.Text.Lazy as TL (Text, toStrict, fromStrict)
76−diff --git a/GHCJS/Marshal.hs b/GHCJS/Marshal.hs
77−index a36aca2..6256a73 100644
78−--- a/GHCJS/Marshal.hs
79−+++ b/GHCJS/Marshal.hs
82− module GHCJS.Marshal ( FromJSVal(..)
89−@@ -24,17 +24,17 @@ import Control.Applicative
91− import Control.Monad.Trans.Maybe (MaybeT(..), runMaybeT)
93−-import qualified Data.Aeson as AE
94−-import Data.Attoparsec.Number (Number(..))
95−+-- import qualified Data.Aeson as AE
96−+-- import Data.Attoparsec.Number (Number(..))
97− import Data.Bits ((.&.))
98− import Data.Char (chr, ord)
99−-import qualified Data.HashMap.Strict as H
100−+-- import qualified Data.HashMap.Strict as H
101− import Data.Int (Int8, Int16, Int32)
102− import qualified Data.JSString as JSS
103−-import qualified Data.JSString.Text as JSS
104−+-- import qualified Data.JSString.Text as JSS
106−-import Data.Scientific (Scientific, scientific, fromFloatDigits)
107−-import Data.Text (Text)
108−+-- import Data.Scientific (Scientific, scientific, fromFloatDigits)
109−+-- import Data.Text (Text)
110− import qualified Data.Vector as V
111− import Data.Word (Word8, Word16, Word32, Word)
112− import Data.Primitive.ByteArray
113−@@ -85,11 +85,11 @@ instance FromJSVal JSString where
114− {-# INLINE fromJSValUnchecked #-}
115− fromJSVal = fromJSVal_pure
116− {-# INLINE fromJSVal #-}
117−-instance FromJSVal Text where
118−- fromJSValUnchecked = fromJSValUnchecked_pure
119−- {-# INLINE fromJSValUnchecked #-}
120−- fromJSVal = fromJSVal_pure
121−- {-# INLINE fromJSVal #-}
122−+-- instance FromJSVal Text where
123−+-- fromJSValUnchecked = fromJSValUnchecked_pure
124−+-- {-# INLINE fromJSValUnchecked #-}
125−+-- fromJSVal = fromJSVal_pure
126−+-- {-# INLINE fromJSVal #-}
127− instance FromJSVal Char where
128− fromJSValUnchecked = fromJSValUnchecked_pure
129− {-# INLINE fromJSValUnchecked #-}
130−@@ -154,24 +154,24 @@ instance FromJSVal Double where
131− {-# INLINE fromJSValUnchecked #-}
132− fromJSVal = fromJSVal_pure
133− {-# INLINE fromJSVal #-}
134−-instance FromJSVal AE.Value where
135−- fromJSVal r = case jsonTypeOf r of
136−- JSONNull -> return (Just AE.Null)
137−- JSONInteger -> liftM (AE.Number . flip scientific 0 . (toInteger :: Int -> Integer))
139−- JSONFloat -> liftM (AE.Number . (fromFloatDigits :: Double -> Scientific))
141−- JSONBool -> liftM AE.Bool <$> fromJSVal r
142−- JSONString -> liftM AE.String <$> fromJSVal r
143−- JSONArray -> liftM (AE.Array . V.fromList) <$> fromJSVal r
145−- props <- OI.listProps (OI.Object r)
147−- propVals <- forM props $ \p -> do
148−- v <- MaybeT (fromJSVal =<< OI.getProp p (OI.Object r))
149−- return (JSS.textFromJSString p, v)
150−- return (AE.Object (H.fromList propVals))
151−- {-# INLINE fromJSVal #-}
152−+-- instance FromJSVal AE.Value where
153−+-- fromJSVal r = case jsonTypeOf r of
154−+-- JSONNull -> return (Just AE.Null)
155−+-- JSONInteger -> liftM (AE.Number . flip scientific 0 . (toInteger :: Int -> Integer))
157−+-- JSONFloat -> liftM (AE.Number . (fromFloatDigits :: Double -> Scientific))
159−+-- JSONBool -> liftM AE.Bool <$> fromJSVal r
160−+-- JSONString -> liftM AE.String <$> fromJSVal r
161−+-- JSONArray -> liftM (AE.Array . V.fromList) <$> fromJSVal r
163−+-- props <- OI.listProps (OI.Object r)
165−+-- propVals <- forM props $ \p -> do
166−+-- v <- MaybeT (fromJSVal =<< OI.getProp p (OI.Object r))
167−+-- return (JSS.textFromJSString p, v)
168−+-- return (AE.Object (H.fromList propVals))
169−+-- {-# INLINE fromJSVal #-}
170− instance (FromJSVal a, FromJSVal b) => FromJSVal (a,b) where
171− fromJSVal r = runMaybeT $ (,) <$> jf r 0 <*> jf r 1
172− {-# INLINE fromJSVal #-}
173−@@ -204,15 +204,15 @@ jf r n = MaybeT $ do
174− instance ToJSVal JSVal where
175− toJSVal = toJSVal_pure
176− {-# INLINE toJSVal #-}
177−-instance ToJSVal AE.Value where
178−- toJSVal = toJSVal_aeson
179−- {-# INLINE toJSVal #-}
180−+-- instance ToJSVal AE.Value where
181−+-- toJSVal = toJSVal_aeson
182−+-- {-# INLINE toJSVal #-}
183− instance ToJSVal JSString where
184− toJSVal = toJSVal_pure
185− {-# INLINE toJSVal #-}
186−-instance ToJSVal Text where
187−- toJSVal = toJSVal_pure
188−- {-# INLINE toJSVal #-}
189−+-- instance ToJSVal Text where
190−+-- toJSVal = toJSVal_pure
191−+-- {-# INLINE toJSVal #-}
192− instance ToJSVal Char where
193− toJSVal = return . pToJSVal
194− {-# INLINE toJSVal #-}
195−@@ -285,21 +285,21 @@ foreign import javascript unsafe "[$1,$2,$3,$4,$5]" arr5 :: JSVal -> J
196− foreign import javascript unsafe "[$1,$2,$3,$4,$5,$6]" arr6 :: JSVal -> JSVal -> JSVal -> JSVal -> JSVal -> JSVal -> IO JSVal
197− foreign import javascript unsafe "[$1,$2,$3,$4,$5,$6,$7]" arr7 :: JSVal -> JSVal -> JSVal -> JSVal -> JSVal -> JSVal -> JSVal -> IO JSVal
199−-toJSVal_aeson :: AE.ToJSON a => a -> IO JSVal
200−-toJSVal_aeson x = cv (AE.toJSON x)
203−+-- toJSVal_aeson :: AE.ToJSON a => a -> IO JSVal
204−+-- toJSVal_aeson x = cv (AE.toJSON x)
206−+-- cv = convertValue
208−- convertValue :: AE.Value -> IO JSVal
209−- convertValue AE.Null = return jsNull
210−- convertValue (AE.String t) = return (pToJSVal t)
211−- convertValue (AE.Array a) = (\(AI.SomeJSArray x) -> x) <$>
212−- (AI.fromListIO =<< mapM convertValue (V.toList a))
213−- convertValue (AE.Number n) = toJSVal (realToFrac n :: Double)
214−- convertValue (AE.Bool b) = return (toJSBool b)
215−- convertValue (AE.Object o) = do
216−- obj@(OI.Object obj') <- OI.create
217−- mapM_ (\(k,v) -> convertValue v >>= \v' -> OI.setProp (JSS.textToJSString k) v' obj) (H.toList o)
219−+-- convertValue :: AE.Value -> IO JSVal
220−+-- convertValue AE.Null = return jsNull
221−+-- convertValue (AE.String t) = return (pToJSVal t)
222−+-- convertValue (AE.Array a) = (\(AI.SomeJSArray x) -> x) <$>
223−+-- (AI.fromListIO =<< mapM convertValue (V.toList a))
224−+-- convertValue (AE.Number n) = toJSVal (realToFrac n :: Double)
225−+-- convertValue (AE.Bool b) = return (toJSBool b)
226−+-- convertValue (AE.Object o) = do
227−+-- obj@(OI.Object obj') <- OI.create
228−+-- mapM_ (\(k,v) -> convertValue v >>= \v' -> OI.setProp (JSS.textToJSString k) v' obj) (H.toList o)
232−diff --git a/GHCJS/Marshal/Pure.hs b/GHCJS/Marshal/Pure.hs
233−index 902fa20..268489d 100644
234−--- a/GHCJS/Marshal/Pure.hs
235−+++ b/GHCJS/Marshal/Pure.hs
236−@@ -28,11 +28,11 @@ import Data.Data
237− import Data.Int (Int8, Int16, Int32)
238− import Data.JSString.Internal.Type
240−-import Data.Text (Text)
241−+-- import Data.Text (Text)
242− import Data.Typeable
243− import Data.Word (Word8, Word16, Word32, Word)
244− import Data.JSString
245−-import Data.JSString.Text
246−+-- import Data.JSString.Text
247− import Data.Bits ((.&.))
248− import Unsafe.Coerce (unsafeCoerce)
250−@@ -65,8 +65,8 @@ instance PFromJSVal JSString where pFromJSVal = JSString
251− {-# INLINE pFromJSVal #-}
252− instance PFromJSVal [Char] where pFromJSVal = Prim.fromJSString
253− {-# INLINE pFromJSVal #-}
254−-instance PFromJSVal Text where pFromJSVal = textFromJSVal
255−- {-# INLINE pFromJSVal #-}
256−+-- instance PFromJSVal Text where pFromJSVal = textFromJSVal
257−+-- {-# INLINE pFromJSVal #-}
258− instance PFromJSVal Char where pFromJSVal x = C# (jsvalToChar x)
259− {-# INLINE pFromJSVal #-}
260− instance PFromJSVal Bool where pFromJSVal = isTruthy
261−@@ -103,8 +103,8 @@ instance PToJSVal JSString where pToJSVal = jsval
262− {-# INLINE pToJSVal #-}
263− instance PToJSVal [Char] where pToJSVal = Prim.toJSString
264− {-# INLINE pToJSVal #-}
265−-instance PToJSVal Text where pToJSVal = jsval . textToJSString
266−- {-# INLINE pToJSVal #-}
267−+-- instance PToJSVal Text where pToJSVal = jsval . textToJSString
268−+-- {-# INLINE pToJSVal #-}
269− instance PToJSVal Char where pToJSVal (C# c) = charToJSVal c
270− {-# INLINE pToJSVal #-}
271− instance PToJSVal Bool where pToJSVal True = jsTrue
272−diff --git a/JavaScript/JSON/Types/Instances.hs b/JavaScript/JSON/Types/Instances.hs
273−index 2b288ec..6d7074c 100644
274−--- a/JavaScript/JSON/Types/Instances.hs
275−+++ b/JavaScript/JSON/Types/Instances.hs
276−@@ -57,7 +57,7 @@ import Control.Applicative ((<$>), (<*>), (<|>), pure, empty)
278− import Data.JSString (JSString)
279− import qualified Data.JSString as JSS
280−-import qualified Data.JSString.Text as JSS
281−+-- import qualified Data.JSString.Text as JSS
283− import JavaScript.Array (JSArray)
284− import qualified JavaScript.Array as JSA
285−@@ -335,21 +335,21 @@ instance FromJSON JSString where
286− parseJSON = withJSString "JSString" pure
287− {-# INLINE parseJSON #-}
289−-instance ToJSON Text where
290−- toJSON = stringValue . JSS.textToJSString
291−- {-# INLINE toJSON #-}
292−+-- instance ToJSON Text where
293−+-- toJSON = stringValue . JSS.textToJSString
294−+-- {-# INLINE toJSON #-}
296−-instance FromJSON Text where
297−- parseJSON = withJSString "Text" ( pure . JSS.textFromJSString )
298−- {-# INLINE parseJSON #-}
299−+-- instance FromJSON Text where
300−+-- parseJSON = withJSString "Text" ( pure . JSS.textFromJSString )
301−+-- {-# INLINE parseJSON #-}
303−-instance ToJSON LT.Text where
304−- toJSON = stringValue . JSS.textToJSString . LT.toStrict
305−- {-# INLINE toJSON #-}
306−+-- instance ToJSON LT.Text where
307−+-- toJSON = stringValue . JSS.textToJSString . LT.toStrict
308−+-- {-# INLINE toJSON #-}
310−-instance FromJSON LT.Text where
311−- parseJSON = withJSString "Lazy Text" $ pure . LT.fromStrict . JSS.textFromJSString
312−- {-# INLINE parseJSON #-}
313−+-- instance FromJSON LT.Text where
314−+-- parseJSON = withJSString "Lazy Text" $ pure . LT.fromStrict . JSS.textFromJSString
315−+-- {-# INLINE parseJSON #-}
317− instance (ToJSON a) => ToJSON [a] where
318− toJSON = arrayValue . arrayValueList . map toJSON
319−diff --git a/JavaScript/Web/Canvas.hs b/JavaScript/Web/Canvas.hs
320−index 0a7684c..74490c2 100644
321−--- a/JavaScript/Web/Canvas.hs
322−+++ b/JavaScript/Web/Canvas.hs
323−@@ -69,7 +69,7 @@ import Control.Monad
326− import Data.Maybe (fromJust)
327−-import Data.Text (Text)
328−+-- import Data.Text (Text)
329− import Data.Typeable
331− import GHCJS.Foreign
332−diff --git a/ghcjs-base.cabal b/ghcjs-base.cabal
333−index 4a64694..acf8806 100644
334−--- a/ghcjs-base.cabal
335−+++ b/ghcjs-base.cabal
336−@@ -55,7 +55,7 @@ library
337− Data.JSString.RealFloat
338− Data.JSString.RegExp
339− Data.JSString.Internal
341−+ -- Data.JSString.Text
342− Data.JSString.Internal.Fusion
343− Data.JSString.Internal.Fusion.Types
344− Data.JSString.Internal.Fusion.Common
345−@@ -78,12 +78,12 @@ library
346− JavaScript.Array.Internal
350−- JavaScript.JSON.Types
351−- JavaScript.JSON.Types.Class
352−- JavaScript.JSON.Types.Generic
353−- JavaScript.JSON.Types.Instances
354−- JavaScript.JSON.Types.Internal
356−+ -- JavaScript.JSON.Types
357−+ -- JavaScript.JSON.Types.Class
358−+ -- JavaScript.JSON.Types.Generic
359−+ -- JavaScript.JSON.Types.Instances
360−+ -- JavaScript.JSON.Types.Internal
363− JavaScript.Object.Internal
364−@@ -115,11 +115,11 @@ library
365− JavaScript.Web.Storage
366− JavaScript.Web.Storage.Internal
367− JavaScript.Web.StorageEvent
368−- JavaScript.Web.XMLHttpRequest
369−+ -- JavaScript.Web.XMLHttpRequest
370− JavaScript.Web.WebSocket
371− JavaScript.Web.Worker
372−- other-modules: GHCJS.Internal.Types
373− Data.JSString.Internal.Type
374−+ other-modules: GHCJS.Internal.Types
375− JavaScript.TypedArray.Internal.Types
376− JavaScript.TypedArray.ArrayBuffer.Internal
377− JavaScript.TypedArray.DataView.Internal
378−@@ -144,15 +144,15 @@ library
380− binary >= 0.8 && < 0.11,
381− bytestring >= 0.10 && < 0.11,
382−- text >= 1.1 && < 1.3,
383−- aeson >= 0.8 && < 1.6,
384−- scientific >= 0.3 && < 0.4,
385−+ -- text >= 1.1 && < 1.3,
386−+ -- aeson >= 0.8 && < 1.6,
387−+ -- scientific >= 0.3 && < 0.4,
388− vector >= 0.10 && < 0.13,
389− containers >= 0.5 && < 0.7,
390− time >= 1.5 && < 1.10,
391−- hashable >= 1.2 && < 1.4,
392−- unordered-containers >= 0.2 && < 0.3,
393−- attoparsec >= 0.11 && < 0.15,
394−+ -- hashable >= 1.2 && < 1.4,
395−+ -- unordered-containers >= 0.2 && < 0.3,
396−+ -- attoparsec >= 0.11 && < 0.15,
397− transformers >= 0.3 && < 0.6,
398− primitive >= 0.5 && < 0.8,
399− deepseq >= 1.3 && < 1.5,
400−@@ -161,37 +161,37 @@ library
401− if !impl(ghcjs) && !os(ghcjs)
405−- type: exitcode-stdio-1.0
406−- hs-source-dirs: test
408−- other-modules: Tests.Marshal
410−- Tests.Properties.Numeric
411−- Tests.SlowFunctions
412−- Tests.QuickCheckUtils
430−- quickcheck-unicode,
432−- test-framework >= 0.4,
433−- test-framework-hunit >= 0.2,
434−- test-framework-quickcheck2 >= 0.2
435−- default-language: Haskell2010
436−- if !impl(ghcjs) && !os(ghcjs)
439−+-- type: exitcode-stdio-1.0
440−+-- hs-source-dirs: test
441−+-- main-is: Tests.hs
442−+-- other-modules: Tests.Marshal
444−+-- Tests.Properties.Numeric
445−+-- Tests.SlowFunctions
446−+-- Tests.QuickCheckUtils
447−+-- Tests.Regressions
453−+-- QuickCheck >= 2.7,
464−+-- quickcheck-unicode,
466−+-- test-framework >= 0.4,
467−+-- test-framework-hunit >= 0.2,
468−+-- test-framework-quickcheck2 >= 0.2
469−+-- default-language: Haskell2010
470−+-- if !impl(ghcjs) && !os(ghcjs)
compiler/ghcjs/ghcjs810-patched-boot-packages/hashable.patchdeleted−99
@@ -1,99 +0,0 @@
1−diff --git a/hashable.cabal b/hashable.cabal
2−index 4197060..8c339b1 100755
5−@@ -88,6 +88,8 @@ library
6− build-depends: ghc-bignum ==1.0.* || ==1.2.*
10−+ build-depends: ghcjs-base
12− build-depends: integer-gmp >=0.4 && <1.1
14−diff --git a/src/Data/Hashable/Class.hs b/src/Data/Hashable/Class.hs
15−index c7dd8c5..0e3bbe7 100755
16−--- a/src/Data/Hashable/Class.hs
17−+++ b/src/Data/Hashable/Class.hs
20− {-# LANGUAGE Trustworthy #-}
23−+{-# LANGUAGE JavaScriptFFI, UnboxedTuples, GHCForeignImportPrim #-}
26− #if __GLASGOW_HASKELL__ >= 801
27− {-# LANGUAGE PolyKinds #-} -- For TypeRep instances
29−@@ -72,7 +76,9 @@ import Data.Int (Int8, Int16, Int32, Int64)
30− import Data.List (foldl')
31− import Data.Ratio (Ratio, denominator, numerator)
32− import qualified Data.Text as T
34− import qualified Data.Text.Array as TA
36− import qualified Data.Text.Internal as T
37− import qualified Data.Text.Lazy as TL
38− import Data.Version (Version(..))
39−@@ -152,7 +158,11 @@ import GHC.Exts (Int (..), sizeofByteArray#)
40− # define MIN_VERSION_integer_gmp_1_0_0
44− import GHC.Exts (Int(..))
46−+import GHC.Exts (Int(..), Int#)
48− import GHC.Integer.GMP.Internals (Integer(..))
49− # if defined(MIN_VERSION_integer_gmp_1_0_0)
50− import GHC.Exts (sizeofByteArray#)
51−@@ -195,6 +205,10 @@ import Data.Kind (Type)
52− import Data.Hashable.Imports
53− import Data.Hashable.LowLevel
56−+import Data.JSString (JSString)
59− #include "MachDeps.h"
61− infixl 0 `hashWithSalt`
62−@@ -676,17 +690,18 @@ instance Hashable BSI.ShortByteString where
65− instance Hashable T.Text where
67− hashWithSalt salt (T.Text arr off len) =
68− hashByteArrayWithSalt (TA.aBA arr) (off `shiftL` 1) (len `shiftL` 1)
69− (hashWithSalt salt len)
71−+ hashWithSalt salt (T.Text txt) =
72−+ let (# ba, len #) = js_textFromJSString txt
73−+ in hashByteArrayWithSalt ba (0 `shiftL` 1) (I# len `shiftL` 1) salt
76− instance Hashable TL.Text where
77−- hashWithSalt salt = finalise . TL.foldlChunks step (SP salt 0)
79−- finalise (SP s l) = hashWithSalt s l
80−- step (SP s l) (T.Text arr off len) = SP
81−- (hashByteArrayWithSalt (TA.aBA arr) (off `shiftL` 1) (len `shiftL` 1) s)
83−+ hashWithSalt = TL.foldlChunks hashWithSalt
85− -- | Compute the hash of a ThreadId.
86− hashThreadId :: ThreadId -> Int
87−@@ -880,6 +895,12 @@ instance Hashable1 Option where liftHashWithSalt h salt (Option a) = liftHashWit
92−+foreign import javascript unsafe
94−+ js_textFromJSString :: JSString -> (# ByteArray#, Int# #)
97− -- instances for @Data.Functor.{Product,Sum,Compose}@, present
98− -- in base-4.9 and onward.
99− #if MIN_VERSION_base(4,9,0)
compiler/ghcjs/ghcjs810-src.jsondeleted−6
@@ -1,6 +0,0 @@
2− "url": "https://github.com/ghcjs/ghcjs",
3− "rev": "bb403ec3a1506831aae2d608b7b21c1937e4fb20",
4− "sha256": "0bs3hijwn0p4wvphwg78mwbz8qyi10wqgfh8yfaszaj1766892ba",
5− "fetchSubmodules": true
compiler/ghcjs/ghcjs88-src.jsondeleted−6
@@ -1,6 +0,0 @@
2− "url": "https://github.com/ghcjs/ghcjs",
3− "rev": "1af48a877fdf1f647a3b81e828a1e61adb0baceb",
4− "sha256": "sha256-B4LFpd1nl96SO6/gsTjkizMGSglMkrujmwgXVjahC68=",
5− "fetchSubmodules": true
compiler/ghcjs/patches/810/boot-optimization-flags.patchdeleted−14
@@ -1,14 +0,0 @@
1−diff --git a/src-bin/Boot.hs b/src-bin/Boot.hs
2−index 2e35a26..5db2f9b 100755
5−@@ -721,6 +721,9 @@ cabalConfigureFlags = do
6− , "--prefix", T.pack (locs ^. blGhcjsTopDir)
7− , "--configure-option", "--host=js-unknown-ghcjs"
8− , "--ghcjs-options=-fwrite-ide-info"
9−+ , "--ghcjs-options=-O2"
10−+ , "--ghcjs-options=-fexpose-all-unfoldings"
11−+ , "--ghcjs-options=-fspecialise-aggressively"
12− , "--enable-debug-info"
13− , "--disable-library-stripping"
14− , "--disable-executable-stripping"
compiler/ghcjs/patches/810/fast-weak.patchdeleted−87
@@ -1,87 +0,0 @@
1−diff --git a/lib/boot/shims/src/gc.js.pp b/lib/boot/shims/src/gc.js.pp
2−index 76321b2..a2cf416 100644
3−--- a/lib/boot/shims/src/gc.js.pp
4−+++ b/lib/boot/shims/src/gc.js.pp
5−@@ -444,6 +444,50 @@ function h$follow(obj, sp) {
6− } else if(typeof c.len === 'number' && c.buf instanceof ArrayBuffer) {
7− TRACE_GC("marking ByteArray");
9−+ } else if(c instanceof h$FastWeak) {
11−+ if(c.ticket !== null && !IS_MARKED(c.ticket)) {
12−+ c.ticket = null; // If the ticket isn't reachable, this will let it get cleaned up by the JS gc; if it is reachable, it'll fill this back in
14−+ } else if(c instanceof h$FastWeakTicket) {
16−+ if(!IS_MARKED(c.val)) {
19−+ if(IS_MARKED(c.weak)) {
20−+ // In this case, the weak side has been marked first, which means it's been cleared; restore it
23−+ } else if(c instanceof h$FastWeakBag) {
25−+ var j = 0; // j should always be equal to the number of not-yet-necessarily-dead tickets that have been traversed; this should always be less than or equal to i
26−+ for(i = 0; i < c.tickets.length; i++) {
27−+ // Any nulls left in the array prior to checking on the tickets must be tickets that died in the last GC, so we ignore them
28−+ if(c.tickets[i] !== null) {
30−+ c.tickets[i].pos = j;
32−+ if(!IS_MARKED(c.tickets[i])) {
33−+ // If the ticket isn't reachable, this will let it get cleaned up by the JS gc; if it is reachable, it'll fill this back in
34−+ c.tickets[j] = null;
35−+ } else if(j !== i) {
36−+ // We need to move the item
37−+ c.tickets[j] = c.tickets[i];
38−+ } // If it's marked and not moving, don't do anything
42−+ c.tickets.length = j; // Shrink the array if any nulls have been dropped
43−+ } else if(c instanceof h$FastWeakBagTicket) {
45−+ if(!IS_MARKED(c.val)) {
48−+ if(IS_MARKED(c.bag)) {
49−+ // In this case, the weak side has been marked first, which means it's been cleared; restore it
50−+ c.bag.tickets[c.pos] = c;
53− } else if(c instanceof h$Weak) {
55− } else if(c instanceof h$MVar) {
56−diff --git a/lib/boot/shims/src/weak.js.pp b/lib/boot/shims/src/weak.js.pp
57−index 8df313b..d537027 100644
58−--- a/lib/boot/shims/src/weak.js.pp
59−+++ b/lib/boot/shims/src/weak.js.pp
60−@@ -87,3 +87,27 @@ function h$finalizeWeak(w) {
61− RETURN_UBX_TUP2(r, 1);
65−+function h$FastWeak(ticket) {
66−+ this.ticket = ticket;
70−+function h$FastWeakTicket(val) {
72−+ this.weak = new h$FastWeak(this);
76−+function h$FastWeakBag() {
81−+function h$FastWeakBagTicket(bag, val) {
84−+ this.pos = bag.tickets.length;
85−+ bag.tickets.push(this);
compiler/old-ghc-nix/default.nixnew file+10
@@ -0,0 +1,10 @@
1+{ pkgs ? import <nixpkgs> {} }:
5+ let spec = fromJSON (readFile jsonFile);
8+ inherit (spec) sha256 url rev;
10+in import (fetch ./old-ghc-nix.json) { inherit pkgs; }
compiler/old-ghc-nix/old-ghc-nix.jsonnew file+7
@@ -0,0 +1,7 @@
2+ "url": "https://github.com/angerman/old-ghc-nix",
3+ "rev": "2a41a09127f6dc7a6384823d1acd51ba257f95bd",
4+ "date": "2020-06-03T12:50:09+08:00",
5+ "sha256": "1cp6aksb6ldgjb5zyqikyjrjij79n9z7wd86migph0wp19vmszkf",
6+ "fetchSubmodules": false
compiler/windows/include/synchapi.hdeleted−1
compiler/windows/include/windows.hdeleted−18
@@ -1,18 +0,0 @@
1−// Just enoough windows.h stuff to make rts headers usable when building GHC cross compiler.
2−// See compiler/ghc/default.nix for where this is used.
8−typedef unsigned long DWORD;
11−typedef struct _RTL_CONDITION_VARIABLE { PVOID Ptr; } RTL_CONDITION_VARIABLE;
12−typedef RTL_CONDITION_VARIABLE CONDITION_VARIABLE;
14−typedef struct _RTL_SRWLOCK { PVOID Ptr; } RTL_SRWLOCK;
15−typedef RTL_SRWLOCK SRWLOCK;
@@ -2,7 +2,20 @@
2 # allow building for windows
2 # allow building for windows
3 allowUnsupportedSystem = true;
3 allowUnsupportedSystem = true;
4 # we want the 64bit wine version
4 # we want the 64bit wine version
5+ # See overlays/wine.nix as well!
5 wine.build = "wine64";
6 wine.build = "wine64";
6 wine.release = "stable";
7 wine.release = "stable";
9+ # This is marked insecure on 20.03, but many packages still depend on it
10+ permittedInsecurePackages = [ "openssl-1.0.2u" ];
12+ # sadly we need to patch GHC a bit.
13+ packageOverrides = ps: with ps; let
15+ rocksdb = with ps.stdenv;
16+ if hostPlatform.isWindows
17+ then pkgs.callPackage ./pkgs/rocksdb-prebuilt.nix { inherit (buildPackages) fetchurl unzip; }
@@ -1,29 +1,49 @@
1−{...}@args:
1+let haskellNix = {
2+ checkMaterialization ? false, # Allows us to easily switch on materialization checking
3+ defaultCompilerNixName ? null, # Quick way to override the default compiler e.g. "ghc883"
4+ system ? builtins.currentSystem,
7+ sources = (import ./nix/sources.nix) // sourcesOverride;
3−let
9+ config = import ./config.nix;
4− nixpkgsSrc =
10+ overlays = [ allOverlays.combined ] ++ (
5− builtins.fetchTarball {
11+ if checkMaterialization == true
6− url = "https://github.com/NixOS/nixpkgs/archive/110a2c9ebbf5d4a94486854f18a37a938cfacbbb.tar.gz";
12+ then [(
7− sha256 = "sha256-leWXLchbAbqOlLT6tju631G40SzQWPqaAXQG3zH1Imw=";
13+ final: prev: {
8− };
14+ haskell-nix = prev.haskell-nix // {
9− pkgs = args.pkgs or (import nixpkgsSrc {});
15+ checkMaterialization = true;
12− url = "https://github.com/edolstra/flake-compat/archive/5523c47f13259b981c49b26e28499724a5125fd8.tar.gz";
18+ )]
13− sha256 = "sha256-7IySNHriQjzOZ88DDk6VDPf1GoUaOrOeUdukY62o52o=";
19+ else []
15− self = import flake-compat {
21+ if defaultCompilerNixName != null
16− # We bypass flake-compat's rootSrc cleaning by evading its detection of this as a git
22+ then [(
17− # repo.
23+ final: prev: {
18− # This is done for 3 reasons:
24+ haskell-nix = prev.haskell-nix // {
19− # * To workaround https://github.com/edolstra/flake-compat/issues/25
25+ inherit defaultCompilerNixName;
20− # * Make `updateMaterilized` scripts work (if filtering is done by `flake-compat`
26+ };
21− # the `updateMaterilized` scripts will try to update the copy in the store).
27+ }
22− # * Allow more granular filtering done by the tests (the use of `cleanGit` and `cleanSourceWith`
28+ )]
23− # in `test/default.nix`). If `flake-compat` copies the whole git repo, any change to the
29+ else []
24− # repo causes a change of input for all tests.
30+ );
25− src = { outPath = ./.; };
31+ allOverlays = import ./overlays args;
26− inherit pkgs;
32+ nixpkgsArgs = { inherit config overlays system; };
33+ pkgs = import sources.nixpkgs-default nixpkgsArgs;
28−in self.defaultNix // (self.defaultNix.internal.compat
35+
29−({ system = args.pkgs.system or builtins.currentSystem; } // args))
36+ haskellNixV1 = (haskellNix {}).nixpkgsArgs;
37+ haskellNixV2 = haskellNix;
39+ v1DeprecationMessage = "Version 1 is deprecated: use version 2 (nixpkgs arguments are available as the `nixpkgsArgs` attribute of version 2)";
40+# If no arguments, then you get V1
41+# I'd like to make importing directly issue a warning, but I couldn't figure out a way to make it happen
43+ __functor = _: { version ? 2, ... }@args:
45+ then builtins.trace v1DeprecationMessage haskellNixV1
47+ then haskellNixV2 args
48+ else builtins.throw ("haskell.nix: unknown version: " + (builtins.toString version));
@@ -61,7 +61,7 @@ of packages available on hackage.
61[stackage.nix][] is similar to hackage.nix but provides all stackage
61[stackage.nix][] is similar to hackage.nix but provides all stackage
62snapshots (lts, and nightly) as nix expressions. It naturally depends
62snapshots (lts, and nightly) as nix expressions. It naturally depends
63on hackage.nix to resolve package names, versions and revisions to the
63on hackage.nix to resolve package names, versions and revisions to the
64−respective packages from hackage.nix.
64+repsective packages from hackage.nix.
66[haskell.nix]: https://github.com/input-output-hk/haskell.nix
66[haskell.nix]: https://github.com/input-output-hk/haskell.nix
67[hackage.nix]: https://github.com/input-output-hk/hackage.nix
67[hackage.nix]: https://github.com/input-output-hk/hackage.nix
docs/dev/adding-new-ghc.mddeleted−34
@@ -1,34 +0,0 @@
1−# Adding a new GHC version to haskell.nix
3−## Update `overlays/bootstrap.nix`
5−Each ghc version is defined in this file. Duplicate one of the existing
6−ghc version definitions and replace the version numbers. Make sure
7−you update the `spec.sha256` or the other versions source will be used.
8−Check the LLVM version that should be used in the
9−[ghc wiki](https://gitlab.haskell.org/ghc/ghc/-/wikis/commentary/compiler/backends/llvm/installing).
11−## Update the list of cached GHC versions in `ci.nix`
13−## Update [supported ghc versions](../reference/supported-ghc-versions.md) document
15−## Add the materialized files
17−In the haskell.nix repo run:
20−mkdir materialized/ghc884
21−nix-build scripts/check-compiler-materialization --argstr compiler-nix-name ghc884
24−The `nix-build` command will fail with something like:
27−Materialized nix used for dummy-data-x86_64-unknown-linux-musl-ghc-8.10.1 incorrect. To fix run: /nix/store/wnwpyrhv4nxgyljz3f20gdpspjxvm7h4-updateMaterialized
30−Run the `updateMaterialized` script and repeat the `nix-build` until it no longer fails.
31−If the failure is not a problem with materialization and no `updateMaterialized` script
32−is provided then you may need to fix the failure another way or (if it only relates to
33−one of the cross compilers) modify `scripts/check-compiler-materialization/default.nix`
34−so that it skips that compiler.
docs/dev/coverage.mddeleted−180
@@ -1,180 +0,0 @@
1−# Developer Coverage Overview
5−The implementation of coverage starts with the "doCoverage" flag on
6−the builder in `comp-builder.nix`. The doCoverage flag enables and
7−disables the Cabal coverage flag and copies any generated coverage
8−data to "$out/share/hpc".
12−The coverage information for any derivation consists of "mix" and
15−Mix files record static information about a source file and are
16−generated at build time. They primarily contain a path to the source
17−file and information about expressions and regions of the source file,
18−which are later referenced by tix files.
20−Tix files contain dynamic information about a test run, recording when
21−a portion of a source file is touched by a test. These are generated
24−### Multiple local packages
26−In the context of multiple local packages, there are a few types of
27−coverage we might be interested in:
28− - How well does the tests for this package cover the package library?
29− - How well does the tests for this package cover the libraries of
30− other packages in this project?
33−To facilitate expressing any of these classifications of coverage, the
34−`lib/cover.nix` function provides the `mixLibraries` argument. If
35−you're just interested in how the tests cover the package library, you
36−provide that library as an argument to `mixLibraries`. If you're
37−interested in how the tests also cover other local packages in the
38−project, you can also provide those libraries as arguments to
41−The `projectCoverageReport` and `coverageReport` attributes that are
42−provided by default on projects and packages respectively provide
43−coverage information for *all* local packages in the project. This is
44−to mimic the behaviour of Stack, which seems to be the expectation of
45−most people. Of course, you can use the `projectCoverageReport` and
46−`coverageReport` functions to construct your own custom coverage
47−reports (as detailed in the [coverage tutorial](../tutorials/coverage.md#custom)).
53−The coverage information generated will look something like this:
56−/nix/store/...-my-project-0.1.0.0-coverage-report/
61− │ └── my-library-0.1.0.0
62− │ ├── my-library-0.1.0.0-48EVZBwW9Kj29VTaRMhBDf
63− │ │ ├── My.Lib.Config.hs.html
64− │ │ ├── My.Lib.Types.hs.html
65− │ │ └── My.Lib.Util.hs.html
66− │ ├── hpc_index_alt.html
67− │ ├── hpc_index_exp.html
68− │ ├── hpc_index_fun.html
71− │ └── my-library-0.1.0.0
72− │ └── my-library-0.1.0.0-48EVZBwW9Kj29VTaRMhBDf
73− │ ├── My.Lib.Config.mix
74− │ ├── My.Lib.Types.mix
75− │ └── My.Lib.Util.mix
77− └── my-library-0.1.0.0
78− ├── my-library-0.1.0.0.tix
85−- The mix files are copied verbatim from the library built with
87−- The tix files for each test are copied from the check run verbatim
88− and are output to ".../tix/<libraryname>/<testname>/<testname>.tix".
89−- The tix files for each library are generated by summing the tix
90− files for each test, but excluding any test modules. This tix file
91− is output to ".../tix/<libraryname>/<libraryname>.tix".
92− - Test modules are determined by inspecting the plan for the project
93− (i.e. for the project "my-project" and test-suite "my-test-1", the
94− test modules are read from:
95− `my-project.checks.my-test-1.config.modules`)
96−- The hpc HTML reports for each library are generated from their
97− respective tix files (i.e. the
98− `share/hpc/vanilla/html/my-library-0.1.0.0` report is generated from
100− `share/hpc/vanilla/tix/my-library-0.1.0.0/my-library-0.1.0.0.tix`
103−### Project-wide reports
105−The coverage information for an entire project will look something
109−/nix/store/...-coverage-report
116− │ │ ├── my-library-0.1.0.0-ERSaOroBZhe9awsoBkhmcV
117− │ │ │ ├── My.Lib.Config.hs.html
118− │ │ │ ├── My.Lib.Types.hs.html
119− │ │ │ └── My.Lib.Util.hs.html
120− │ │ ├── other-library-0.1.0.0-48EVZBwW9Kj29VTaRMhBDf
121− │ │ │ ├── Other.Lib.A.hs.html
122− │ │ │ └── Other.Lib.B.hs.html
123− │ │ ├── hpc_index_alt.html
124− │ │ ├── hpc_index_exp.html
125− │ │ ├── hpc_index_fun.html
126− │ │ └── hpc_index.html
127− │ ├── my-library-0.1.0.0
128− │ │ ├── my-library-0.1.0.0-ERSaOroBZhe9awsoBkhmcV
129− │ │ │ ├── My.Lib.Config.hs.html
130− │ │ │ ├── My.Lib.Types.hs.html
131− │ │ │ └── My.Lib.Util.hs.html
132− │ │ ├── hpc_index_alt.html
133− │ │ ├── hpc_index_exp.html
134− │ │ ├── hpc_index_fun.html
135− │ │ └── hpc_index.html
136− │ └── other-libray-0.1.0.0
137− │ ├── other-library-0.1.0.0-48EVZBwW9Kj29VTaRMhBDf
138− │ │ ├── Other.Lib.A.hs.html
139− │ │ └── Other.Lib.B.hs.html
140− │ ├── hpc_index_alt.html
141− │ ├── hpc_index_exp.html
142− │ ├── hpc_index_fun.html
143− │ └── hpc_index.html
145− │ ├── my-library-0.1.0.0-ERSaOroBZhe9awsoBkhmcV
146− │ │ ├── My.Lib.Config.mix
147− │ │ ├── My.Lib.Types.mix
148− │ │ └── My.Lib.Util.mix
149− │ └── other-library-0.1.0.0-48EVZBwW9Kj29VTaRMhBDf
150− │ ├── Other.Lib.A.mix
151− │ └── Other.Lib.B.mix
155− ├── my-library-0.1.0.0
156− │ ├── my-library-0.1.0.0.tix
158− │ │ └── my-test-1.tix
161− └── another-library-0.1.0.0
162− ├── another-library-0.1.0.0.tix
169−All of the coverage information is copied verbatim from the coverage
170−reports for each of the constituent packages. A few additions are
172− - `tix/all/all.tix` is generated from the union of all the library
174− - We use this file when generating coverage reports for
176− - An index page (`html/index.html`) is generated which links to the
177− HTML coverage reports of the constituent packages.
178− - A synthetic HTML report is generated from the `tix/all/all.tix`
179− file. This shows the union of all the coverage information
180− generated by each constituent coverage report.
docs/dev/dev-architecture.md+1−1
@@ -77,7 +77,7 @@ nixpkgs (*This has undergone substantially less testing*).
78### Component builder
78### Component builder
80−To prevent depending on multiple instances of the same libraries, the
80+To prevent depending on mutliple instances of the same libraries, the
81component builder will try to build every package from scratch and
81component builder will try to build every package from scratch and
82rely as little as possible on packages that are shipped with the GHC
82rely as little as possible on packages that are shipped with the GHC
83distribution. The exceptions are packages that are known to not be
83distribution. The exceptions are packages that are known to not be
docs/dev/hix.mddeleted−27
@@ -1,27 +0,0 @@
1−# Making changes to Hix
3−When making changes to the way Hix works it is often useful to be able to
4−test the changes locally before uploading them to github.
6−## Hix Command Wrappers
8−Install the hix command wrappers after making changes to a local clone of haskell.nix:
11−nix-env -iA hix -f /path/to/local/haskell.nix
15−Or override the version of haskell.nix used by the commands with the `HIX_ROOT` environment variable:
18−HIX_ROOT=/path/to/local/haskell.nix hix-shell
23−For flakes use `--override-input` to point to the modified haskell.nix:
26−nix develop --override-input haskellNix /path/to/local/haskell.nix
docs/dev/installing-nix-tools.mddeleted−28
@@ -1,28 +0,0 @@
1−## Installing `nix-tools`
3−To build the latest `nix-tools` and store the result at `./nt`, run:
6−nix build -f https://github.com/input-output-hk/haskell.nix/archive/master.tar.gz pkgs.haskell-nix.nix-tools.ghc884 --out-link nt
9−If you would like to then install `nix-tools` into your profile, run:
15−## Optional: Installing via [Haskell.nix][] source
17−The [Haskell.nix][] and `nix-tools` source will be useful if you would
18−like to contribute improvements, or read the source code to fully
19−understand something that the documentation doesn't cover.
22−git clone https://github.com/input-output-hk/nix-tools
23−git clone https://github.com/input-output-hk/haskell.nix
25−nix build -f . pkgs.haskell-nix.nix-tools.ghc884 --arg sourcesOverride '{ nix-tools = ../nix-tools; }' --out-link nt
28−[haskell.nix]: https://github.com/input-output-hk/haskell.nix
docs/dev/manually-generating-nix-expressions.mddeleted−179
@@ -1,179 +0,0 @@
1−# Manually generating Nix expressions
3−We believe that imports from derivations (IFDs) provide tremendous
4−value in nix and the aversion towards them stems mostly from
5−poor tooling and ci support for them. We do not believe
6−that poor tooling or ci support should cripple nix capability
7−of abstraction. Hence haskell.nix makes excessive use of
10−We do note however that there are users who prefer to
11−have IFD-free expressions. For this group of users we
12−detail how to expand the IFD dependent high level functions
13−into their IFD free building blocks.
15−The general structure will be the same, independent of the use of
18−Let us assume for now that we have already generated a `pkgs.nix`
19−expression (see the links bellow). The following file then produces a package set:
24− # Import the Haskell.nix library,
25− pkgs = import <nixpkgs> (import (builtins.fetchTarball https://github.com/input-output-hk/haskell.nix/archive/master.tar.gz) {}).nixpkgsArgs;
27− # Import the file you will create in the stack-to-nix or cabal-to-nix step.
28− my-pkgs = import ./pkgs.nix;
30− # Stack projects use this:
31− pkgSet = pkgs.haskell-nix.mkStackPkgSet {
32− stack-pkgs = my-pkgs;
34− # these extras will provide additional packages
35− # ontop of the package set. E.g. extra-deps
36− # for stack packages. or local packages for
40− # specific package overrides would go here
42− # packages.cbors.package.ghcOptions = "-Werror";
43− # packages.cbors.patches = [ ./one.patch ];
44− # packages.cbors.flags.optimize-gmp = false;
45− # It may be better to set flags in stack.yaml instead
46− # (`stack-to-nix` will include them as defaults).
50− # Cabal projects use this:
51− pkgSet = pkgs.haskell-nix.mkCabalProjectPkgSet {
55− # specific package overrides would go here
57− # packages.cbors.package.ghcOptions = "-Werror";
58− # packages.cbors.patches = [ ./one.patch ];
59− # packages.cbors.flags.optimize-gmp = false;
60− # It may be better to set flags in `cabal.project` instead
61− # (`plan-to-nix` will include them as defaults).
65−in pkgSet.config.hsPkgs // { _config = pkgSet.config; }
68−With this setup you can then start building the components of
72−nix build -f default.nix $pkg.components.library
75−to build the library for `$pkg` or
78−nix build -f default.nix $pkg.components.exes.$exe
81−to build a specific executable. The same holds for test suites and benchmarks.
85−With [nix-tools installed](./installing-nix-tools.md), we can simply run the
86−following command on a stack project:
89−stack-to-nix --output . --stack-yaml stack.yaml
92−This will produce a `pkgs.nix` file that looks like the following:
95− resolver = "lts-12.17";
99− "o-clock" = hackage.o-clock."0.1.1".revisions.default;
102− my-package = ./my-package.nix;
109−This file contains the stackage resolver, as well as set of extra
110−packages. The extras specifies which `extra-deps` (here:
111−`o-clock-0.1.1`) we wanted to add over the stackage snapshot, and what
112−local packages we want (here: `my-package`).
116−### Generating `plan.json`
118−To get a plan, you need Cabal and GHC. See the [How to install a
119−compiler section of the Nixpkgs Manual][compiler] for information
120−about how to choose a specific compiler version.
122−[compiler]: https://nixos.org/nixpkgs/manual/#how-to-install-a-compiler
124−!!! note "Cabal version"
125− The minimum Cabal version is 2.4. This version is available
126− in the NixOS 19.03 release.
128−For this example, we will run a `nix-shell` with the default GHC
132−nix-shell -p haskellPackages.cabal-install haskellPackages.ghc \
133− --run "cabal new-configure"
136−If all goes well, you should now have the file
137−`dist-newstyle/cache/plan.json`.
139−!!! tip "Specifying the GHC version"
140− To use a specific compiler version, replace `haskellPackages.ghc`
141− with something like `haskell-nix.compiler.ghc865`. The given compiler
142− must exist in your Nixpkgs version, of course. See also the
143− [Nixpkgs Manual][compiler].
145−### Using `plan-to-nix`
147−With [nix-tools installed](./installing-nix-tools.md), we can then run the
148−following command on a Cabal project and its build plan. Omit the
149−`--cabal-project` option if you don't have a project file.
152−# convert the plan.json file into a pkgs.nix file
153−plan-to-nix --output . \
154− --plan-json dist-newstyle/cache/plan.json
155− --cabal-project cabal.project
158−This will produce a `pkgs.nix` file that looks like the following:
165− "o-clock" = hackage.o-clock."0.1.1".revisions.default;
172− { packages = { my-package = ./.plan.nix/my-package.nix; }; };
176−It has converted Cabal's build plan into a Nix expression that selects
177−dependencies from `hackage.nix`. All local packages in the project are
178−generated with `cabal-to-nix` and added to the package set
docs/dev/nix-tools-pin.mddeleted−16
@@ -1,16 +0,0 @@
1−## How to update [`nix-tools`](https://github.com/input-output-hk/nix-tools)
3−1. Use niv to update the sources.json:
10−2. If `nix-tools.cabal` or `plan-to-nix` have changed, check the
11− materialized files for each of the compiler nix name in
12− `ls -d materialized/ghc*/nix-tools` with:
15− nix-build scripts/check-compiler-materialization --argstr compiler-nix-name ghc884
docs/dev/nixpkgs-pin.md+15−7
@@ -1,17 +1,25 @@
1# Haskell.nix Nixpkgs Pin
1# Haskell.nix Nixpkgs Pin
3−Haskell.nix contains several Nixpkgs pins imanaged by `niv` in
3+Haskell.nix contains a Nixpkgs pin in
4−`nix/sources.json`.
4+[`nixpkgs/github.json`](https://github.com/input-output-hk/haskell.nix/blob/master/nixpkgs/github.json).
5−
5+This is the version of Nixpkgs used for builds of `nix-tools` and
6−These are used in testing various versions of nixpkgs.
6+running the tests.
8To use haskell.nix the `config` and `overlays` need to be applied to
8To use haskell.nix the `config` and `overlays` need to be applied to
9Nixpkgs. Users should probably pin a suitable version of nixpkgs, although things might not work for them if their Nixpkgs version is
9Nixpkgs. Users should probably pin a suitable version of nixpkgs, although things might not work for them if their Nixpkgs version is
10too different.
10too different.
12We aim to keep this pin somewhere on a channel of the **Nixpkgs latest
12We aim to keep this pin somewhere on a channel of the **Nixpkgs latest
13−stable release**. That is currently 20.09.
13+stable release**. That is currently 19.09.
15We also execute tests on MacOS (darwin). The darwin channel is usually
15We also execute tests on MacOS (darwin). The darwin channel is usually
16−behind the NixOS channel. So we follow the `nixpkgs-20.09-darwin`
16+behind the NixOS channel. So we choose the `nixpkgs-19.09-darwin`
20+nix-prefetch-git https://github.com/NixOS/nixpkgs-channels refs/heads/nixpkgs-19.09-darwin
23+Keep the URL in `github.json` pointing at
24+<https://github.com/NixOS/nixpkgs>. Case matters because the Hydra
25+trusted URL whitelist is case-sensitive.
docs/dev/pkg-map.mdnew file+41
@@ -0,0 +1,41 @@
1+# Mapping non-Haskell dependencies to Nixpkgs
3+Cabal files may contain dependencies to external non-Haskell
5+* [`build-tool-depends`](https://cabal.readthedocs.io/en/latest/developing-packages.html#pkg-field-build-tool-depends)
6+* [`pkgconfig-depends`](https://cabal.readthedocs.io/en/latest/developing-packages.html#pkg-field-pkgconfig-depends).
7+* [`frameworks`](https://cabal.readthedocs.io/en/latest/developing-packages.html#pkg-field-frameworks)
8+* [`extra-libraries`](https://cabal.readthedocs.io/en/latest/developing-packages.html#pkg-field-extra-libraries)
10+If there is a `pkgs` attribute in Nixpkgs that matches the name given
11+in the Cabal file, then it will be added as a dependency (see the
12+output of `cabal-to-nix`). Otherwise, there needs to be a mapping from
13+Cabal file names (decided by the package author) to Nix package
18+The user may solve it by themself by overriding Nixpkgs and adding a
19+package alias. For example:
31+### Mapping in Haskell.nix
33+Alternatively, if the name is commonly used, an alias can be added to
34+the Haskell.nix sources, so that it's solved for all users.
36+* [`lib/pkgconf-nixpkgs-map.nix`](https://github.com/input-output-hk/haskell.nix/blob/master/lib/pkgconf-nixpkgs-map.nix) - for `pkgconfig-depends`
37+* [`lib/system-nixpkgs-map.nix`](https://github.com/input-output-hk/haskell.nix/blob/master/lib/system-nixpkgs-map.nix) - for `build-tool-depends`, `frameworks`, `extra-libraries`, etc.
40+ Please go ahead and open a [pull request](https://github.com/input-output-hk/haskell.nix/pulls)
41+ to improve the package mappings.
@@ -4,12 +4,12 @@
7−- Drop-in support for Cabal projects
7+- autogenerate Nix expressions for Cabal project
8−- Drop-in support for Stack projects
8+- autogenerate Nix expressions for Stack
9−- Build any package of specific version in Stackage or Hackage
9+- overridable configuration
10−- Overridable configuration
10+- cross-compilation
11−- Cross compile Haskell packages
13−[^1]: See [Nixpkgs current Users' Guide to Haskell Infrastructure](https://haskell4nix.readthedocs.io/) for comparison.
12+[^1]: See [Nixpkgs current Users' Guide to Haskell Infrastructure][nixpkgs] for comparison.
13+[nixpkgs]: https://nixos.org/nixpkgs/manual/#users-guide-to-the-haskell-infrastructure
@@ -1,9 +1,9 @@
1# Motivation
1# Motivation
3−Why do we need another Haskell infrastructure for Nix?
3+Why do we need another Haskell infrastructure for Nix?
5Doesn't nixpkgs
5Doesn't nixpkgs
6−provide a sufficiently good Haskell infrastructure already?
6+provide a sufficiently good Haskell infrastructure already?
8Problems with
8Problems with
9the nixpkgs haskell infrastructure are covered in the following sections:
9the nixpkgs haskell infrastructure are covered in the following sections:
docs/reference/commands.md+5−9
@@ -1,8 +1,4 @@
1−# Command line tools
1+# stack-to-nix
3−To install the command line tools refer to the [Installing nix-tools](https://input-output-hk.github.io/haskell.nix/dev/manually-generating-nix-expressions/) section.
8stack-to-nix - a stack to nix converter
4stack-to-nix - a stack to nix converter
@@ -23,7 +19,7 @@ Available options:
24Use this for stack projects. If a `default.nix` does not exist in the
20Use this for stack projects. If a `default.nix` does not exist in the
25output directory, it will create a basic one with a
21output directory, it will create a basic one with a
26−[`mkStackPkgSet`](../manually-generating-nix-expressions#Using-Stack) function.
22+[`mkStackPkgSet`](../user-guide/stack-projects.md) function.
29 If you find that there are missing files which should have been
25 If you find that there are missing files which should have been
@@ -32,7 +28,7 @@ output directory, it will create a basic one with a
33[cache-issue]: https://github.com/input-output-hk/haskell.nix/issues/57
29[cache-issue]: https://github.com/input-output-hk/haskell.nix/issues/57
35−## plan-to-nix
31+# plan-to-nix
38plan-to-nix - a stack to nix converter
34plan-to-nix - a stack to nix converter
@@ -53,7 +49,7 @@ Available options:
54Use this for Cabal new-build projects (even if you don't have a
50Use this for Cabal new-build projects (even if you don't have a
55`cabal.project`). Before running, you need to create a plan. For more
51`cabal.project`). Before running, you need to create a plan. For more
56−information, see [Cabal Projects](../manually-generating-nix-expressions#Using-Cabal) in the user
52+information, see [Cabal Projects](../user-guide/cabal-projects.md) in the user
59It will create a template `default.nix` in the output directory,
55It will create a template `default.nix` in the output directory,
@@ -69,7 +65,7 @@ these files.
69 generated, remove `.nix-tools.cache`
65 generated, remove `.nix-tools.cache`
70 (The open issue is [#57][cache-issue]).
66 (The open issue is [#57][cache-issue]).
72−## cabal-to-nix
68+# cabal-to-nix
75Usage: cabal-to-nix FILE.cabal
71Usage: cabal-to-nix FILE.cabal
docs/reference/library.md+26−94
@@ -1,14 +1,14 @@
1[Haskell.nix][] contains a library of functions for creating buildable
1[Haskell.nix][] contains a library of functions for creating buildable
2package sets from their Nix expression descriptions. The library is
2package sets from their Nix expression descriptions. The library is
3what you get when importing [Haskell.nix][]. It might be helpful to
3what you get when importing [Haskell.nix][]. It might be helpful to
4−load the library in the [Nix REPL](../tutorials/development.md#using-nix-repl) to
4+load the library in the [Nix REPL](../user-guide.md#using-nix-repl) to
5test things.
5test things.
7− * [Data structures](#data-structures) — the kinds of data that you will encounter working with [Haskell.nix][].
7+ * [Types](#types) — the kinds of data that you will encounter working with [Haskell.nix][].
8 * [Top-level attributes](#top-level-attributes) — Functions and derivations defined in the Haskell.nix attrset.
8 * [Top-level attributes](#top-level-attributes) — Functions and derivations defined in the Haskell.nix attrset.
9 * [Package-set functions](#package-set-functions) — Helper functions defined on the `hsPkgs` package set.
9 * [Package-set functions](#package-set-functions) — Helper functions defined on the `hsPkgs` package set.
11−# Data structures
11+# Types
13## Package Set
13## Package Set
@@ -70,6 +70,7 @@ components = {
70 exes = { NAME = COMPONENT; };
70 exes = { NAME = COMPONENT; };
71 tests = { NAME = COMPONENT; };
71 tests = { NAME = COMPONENT; };
72 benchmarks = { NAME = COMPONENT; };
72 benchmarks = { NAME = COMPONENT; };
@@ -79,6 +80,9 @@ In [Haskell.nix][], a _component_ is a derivation corresponding to a
79[Cabal component](https://www.haskell.org/cabal/users-guide/developing-packages.html)
80[Cabal component](https://www.haskell.org/cabal/users-guide/developing-packages.html)
80of a package.
81of a package.
83+[Haskell.nix][] also defines a special `all` component, which is the
84+union of all components in the package.
82## Identifier
86## Identifier
84A package identifier is an attrset pair of `name` and `version`.
88A package identifier is an attrset pair of `name` and `version`.
@@ -94,7 +98,7 @@ attrset of package descriptions.
94Modules are the primary method of configuring building of the package
98Modules are the primary method of configuring building of the package
95set. They are either:
99set. They are either:
97−1. an attrset containing [option declarations](./modules.md), or
101+1. an attrset containing [option declarations](./options.md), or
982. a function that returns an attrset containing option declarations.
1022. a function that returns an attrset containing option declarations.
100If using the function form of a module, the following named parameters
104If using the function form of a module, the following named parameters
@@ -112,70 +116,6 @@ will be passed to it:
113# Top-level attributes
117# Top-level attributes
117−Function that accepts attribute set with a `src` attribute and looks for `stack.yaml` file relative to it.
119−If file exists, it calls [stackProject](#stackproject') function. Otherwise it will call [cabalProject](#cabalproject') function.
124−pkgs.haskell-nix.project' {
125− # 'cleanGit' cleans a source directory based on the files known by git
126− src = pkgs.haskell-nix.haskellLib.cleanGit {
127− name = "haskell-nix-project";
135−A function calling [callStackToNix](#callstacktonix) with all arguments.
137−Then feeding its result into [mkStackPkgSet](#mkstackpkgset) passing also
138−`pkg-def-extras` and `modules` arguments.
142−| Attribute | Type | Description |
143−|-------------------|--------------------------------------------------|----------------------------------------------------------------------------|
144−| `hsPkgs` | Attrset of [Haskell Packages](#haskell-package) | Buildable packages, created from `packages` |
145−| `stack-nix` | | `projectNix` attribute of [`callStackToNix`](#callstacktonix) return value |
146−| `shellFor` | Function | [`shellFor`](#shellfor) |
147−| `ghcWithHoogle` | Function | [`ghcWithHoogle`](#ghcwithhoogle) |
148−| `ghcWithPackages` | Function | [`ghcWithPackages`](#ghcwithpackages) |
153−A function calling [callCabalProjectToNix](#callcabalprojecttonix) with all arguments.
155−Then feeding its result into [mkCabalProjectPkgSet](#mkcabalprojectpkgset) passing also
156−`pkg-def-extras`, `extra-hackages` and `modules` arguments.
160−| Attribute | Type | Description |
161−|-------------------|--------------------------------------------------|-----------------------------------------------------------------------------|
162−| `hsPkgs` | Attrset of [Haskell Packages](#haskell-package) | Buildable packages, created from `packages` |
163−| `plan-nix` | | `projectNix` attribute of [`callCabalProjectToNix`](#callcabalprojecttonix) return value |
164−| `index-state` | | `index-state` attribute of [`callCabalProjectToNix`](#callcabalprojecttonix) return value |
165−| `shellFor` | Function | [`shellFor`](#shellfor) |
166−| `ghcWithHoogle` | Function | [`ghcWithHoogle`](#ghcwithhoogle) |
167−| `ghcWithPackages` | Function | [`ghcWithPackages`](#ghcwithpackages) |
168−| `projectCross` | Attrset | Like `pkgs.pkgsCross.<system>` from nixpkgs `p.projectCross.<system>` returns the project results for cross compilation (where system is a member of nixpkgs lib.systems.examples). So `p.projectCross.ghcjs.hsPkgs` is the same as `hsPkgs` but compiled with ghcjs |
169−| `appendModule` | Function | Re-eval the project with an extra module (or module list). |
170−| `extend` and `appendOverlays` | Function | Modify a project, or add attributes, through overlays: `p.extend(final: prev: { })`. The overlays are carried-over `projectCross` and `appendModule` invocations. |
172−## project, cabalProject and stackProject
174−These versions of the function are the same as project', cabalProject'
175−and stackProject', but `hsPkgs` attributes are also included in the
176−return value directly. That way a package can be referenced as
177−`(project {...}).foo` instead of `(project' {...}).hsPkgs.foo`.
179## mkStackPkgSet
119## mkStackPkgSet
181Creates a [package set](#package-set) based on the `pkgs.nix` output
121Creates a [package set](#package-set) based on the `pkgs.nix` output
@@ -268,22 +208,19 @@ needed for `importAndFilterProject`.
268 })).pkgs;
208 })).pkgs;
271−| Argument | Type | Description |
211+| Argument | Type | Description |
272−|----------------------|------|---------------------|
212+|------------------|------|---------------------|
273−| `name` | String | Optional name for better error messages. |
213+| `name` | String | Optional name for better error messages. |
274−| `src` | Path | Location of the cabal project files. |
214+| `src` | Path | Location of the cabal project files. |
275−| `compiler-nix-name` | String | The name of the ghc compiler to use eg. "ghc884" |
215+| `index-state` | Timestamp | Optional hackage index-state, eg. "2019-10-10T00:00:00Z". |
276−| `index-state` | Timestamp | Optional hackage index-state, eg. "2019-10-10T00:00:00Z". |
216+| `index-sha256` | Sha256 | Optional hash of the truncated hackage index-state. |
277−| `index-sha256` | Sha256 | Optional hash of the truncated hackage index-state. |
217+| `plan-sha256` | Sha256 | Optional hash of the plan-to-nix output (makes the plan-to-nix step a fixed output derivation). |
278−| `plan-sha256` | Sha256 | Optional hash of the plan-to-nix output (makes the plan-to-nix step a fixed output derivation). |
218+| `cabalProject` | Path | Optional cabal project file (defaults to "${src}/cabal.project"). |
279−| `cabalProject` | String | Optional cabal project file contents (defaults to readFile "${src}/cabal.project"). |
219+| `ghc` | | Optional ghc to use |
280−| `cabalProjectLocal` | String | Optional cabal project file contents (defaults to readFile "${src}/cabal.project.local"). |
220+| `nix-tools` | | Optional nix-tools to use |
281−| `cabalProjectFreeze` | String | Optional cabal project file contents (defaults to readFile "${src}/cabal.project.freeze"). |
221+| `hpack` | | Optional hpack to use |
282−| `ghc` | | Deprecated. Use `compiler-nix-name` instead. Optional ghc to use |
222+| `cabal-install` | | Optional cabal-install to use |
283−| `nix-tools` | | Optional nix-tools to use |
223+| `configureArgs` | String | Optional extra arguments to pass to `cabal new-configure` (--enable-tests is included by default, include `--disable-tests` to override that). |
284−| `hpack` | | Optional hpack to use |
285−| `cabal-install` | | Optional cabal-install to use |
286−| `configureArgs` | String | Optional extra arguments to pass to `cabal new-configure` (--enable-tests is included by default, include `--disable-tests` to override that). |
288## importAndFilterProject
225## importAndFilterProject
@@ -410,16 +347,14 @@ Sub-component types identify [components](#component) and are one of:
410 - `tests`
347 - `tests`
411 - `benchmarks`
348 - `benchmarks`
413−# Project functions
350+# Package-set functions
415−These functions are included in the `project` return values.
352+These functions exist within the `hsPkgs` package set.
416−In the past they also existed within `project.hsPkgs`,
417−but have now been removed from there.
419## shellFor
354## shellFor
421Create a `nix-shell` [development
356Create a `nix-shell` [development
422−environment](../tutorials/development.md) for developing one or more
357+environment](../user-guide/development.md) for developing one or more
423packages with `ghci` or `cabal v2-build` (but not Stack).
358packages with `ghci` or `cabal v2-build` (but not Stack).
@@ -431,13 +366,10 @@ shellFor =
431| Argument | Type | Description |
366| Argument | Type | Description |
432|----------------|------|---------------------|
367|----------------|------|---------------------|
433| `packages` | Function | Package selection function. It takes a list of [Haskell packages](#haskell-package) and returns a subset of these packages. |
368| `packages` | Function | Package selection function. It takes a list of [Haskell packages](#haskell-package) and returns a subset of these packages. |
434−| `components` | Function | Similar to `packages`, by default all the components of the selected packages are selected. |
435| `additional` | Function | Similar to `packages`, but the selected packages are built and included in `ghc-pkg list` (not just their dependencies). |
369| `additional` | Function | Similar to `packages`, but the selected packages are built and included in `ghc-pkg list` (not just their dependencies). |
436| `withHoogle` | Boolean | Whether to build a Hoogle documentation index and provide the `hoogle` command. |
370| `withHoogle` | Boolean | Whether to build a Hoogle documentation index and provide the `hoogle` command. |
437| `exactDeps` | Boolean | Prevents the Cabal solver from choosing any package dependency other than what are in the package set. |
371| `exactDeps` | Boolean | Prevents the Cabal solver from choosing any package dependency other than what are in the package set. |
438−| `tools` | Function | AttrSet of tools to make available e.g. `{ cabal = "3.2.0.0"; }` or `{ cabal = { version = "3.2.0.0"; }; }`. If an AttrSet is provided for a tool, the additional arguments will be passed to the function creating the derivation for that tool. So you can provide an `index-state` or a `materialized` argument like that `{ cabal = { version = "3.2.0.0"; index-state = "2020-10-30T00:00:00Z"; materialized = ./cabal.materialized; }; }` for example. You can specify and materialize the version of hoogle used to construct the hoogle index by including something like `{ hoogle = { version = "5.0.17.15"; index-state = "2020-05-31T00:00:00Z"; materialized = ./hoogle.materialized; }`. Uses a default version of hoogle if omitted. |
372+| `tools` | Function | AttrSet of tools to make available e.g. `{ cabal = "3.2.0.0"; }` or `{ cabal = { version = "3.2.0.0"; }; }` |
439−| `inputsFrom` | List | List of other shells to include in this one. The `buildInputs` and `nativeBuildInputs` of each will be included using [mkShell](https://nixos.org/manual/nixpkgs/stable/#sec-pkgs-mkShell).
440−| `crossPlatforms` | Function | Platform selection function for cross compilation targets to support eg. `ps: with ps; [ghcjs mingwW64]` (see nixpkgs lib.systems.examples for list of platform names). |
441| `{ ... }` | Attrset | All the other arguments are passed to [`mkDerivation`](https://nixos.org/nixpkgs/manual/#sec-using-stdenv). |
373| `{ ... }` | Attrset | All the other arguments are passed to [`mkDerivation`](https://nixos.org/nixpkgs/manual/#sec-using-stdenv). |
443**Return value**: a derivation
375**Return value**: a derivation
@@ -454,7 +386,7 @@ shellFor =
454## ghcWithPackages
386## ghcWithPackages
456Creates a `nix-shell` [development
388Creates a `nix-shell` [development
457−environment](../tutorials/development.md) including the given
389+environment](../user-guide/development.md) including the given
458packages selected from this package set.
390packages selected from this package set.
460**Parameter**: a package selection function.
392**Parameter**: a package selection function.
docs/reference/modules-preamble.mdnew file+10
@@ -0,0 +1,10 @@
1+Haskell.nix modules options for packages and components.
3+!!! note "Undocumented"
6+ This documentation is generated from Nix sources in the
7+ [`modules`](https://github.com/input-output-hk/haskell.nix/tree/master/modules)
10+ The Markdown generation script could also be improved.
docs/reference/supported-ghc-versions.mddeleted−49
@@ -1,49 +0,0 @@
1−# Supported GHC Versions
3−The following GHC versions are defined in `haskell.nix` (there is a derivation
4−for each, though not all are cached or tested by CI):
13−The following table shows the Nixpkgs/GHC versions which are built/cached, and
14−which of those are further tested. If you use a combination of Nixpkgs version
15−and GHC version which is in this table, you should hit our cache, saving
16−considering time by not building GHC and a few additional tools.
18−Note that if you try to use `haskell.nix` as an overlay over Nixpkgs from a
19−standard Nixpkgs channel you will likely get a cache miss. To hit our cache you
20−really should use an instance of Nixpkgs provided by `haskell.nix` itself.
22−| Nixpkgs version | Nixpkgs pinning | GHC version | `compiler-nix-name` | Tested in CI? |
23−|------------------|--------------------|-------------|-----------------------|---------------|
24−| 21.11 | `nixpkgs-2111` | 8.6.5 | `ghc865` | No |
25−| 21.11 | `nixpkgs-2111` | 8.10.7 | `ghc8107` | Yes |
26−| unstable | `nixpkgs-unstable` | 8.6.5 | `ghc865` | No |
27−| unstable | `nixpkgs-unstable` | 8.8.4 | `ghc884` | No |
28−| unstable | `nixpkgs-unstable` | 8.10.7 | `ghc8107` | Yes |
29−| unstable | `nixpkgs-unstable` | 9.0.2 | `ghc902` | Yes |
30−| unstable | `nixpkgs-unstable` | 9.2.4 | `ghc924` | Yes |
32−See [ci.nix](https://github.com/input-output-hk/haskell.nix/blob/master/ci.nix)
33−for the source of truth about what is built and tested (in the off chance this
34−document is out-of-sync with your checkout).
36−See the [getting started guide](../tutorials/getting-started.md) for
37−instructions on how to set up Nix to take advantage of our cache when building.
38−This guide also covers where to use the Nixpkgs pinning and `compiler-nix-name`
39−settings from the table above. For further information, see the [instructions
40−for how to pin Nixpkgs](../dev/nixpkgs-pin.md).
43−[overlays/bootstrap.nix](https://github.com/input-output-hk/haskell.nix/blob/master/overlays/bootstrap.nix)
44−for a full list of all the valid `compiler-nix-name`s beyond what's
45−cached/tested in CI. You're free to use these, but be ready for longer build
48−Lastly, see [instructions on adding new GHC versions](../dev/adding-new-ghc.md)
49−in the event that what's in `haskell.nix` doesn't suit your needs.
docs/troubleshooting.mddeleted−90
@@ -1,90 +0,0 @@
3−## Issues with building and garbage-collection
5−### Why am I building GHC?
7−It's easier to list the reverse: when will you *not* build GHC?
9−- You have configured the [binary cache](tutorials/getting-started.md) correctly.
10−- You are using one of the GHC versions which [we support](reference/supported-ghc-versions.md).
11−- You are using one of the nixpkgs versions used by our CI (you can access the sources for these [through haskell.nix](tutorials/getting-started.md).
13−If you think you are doing all of these and you still find you're building GHC, drop us a line.
15−### Why am I building lots of Haskell packages?
17−We don't generally cache much of Hackage (there's a lot of it!), except for the parts which are used by our tests.
18−So this is expected, unfortunately.
20−### How do I prevent the evaluation-time dependencies of my project from being garbage-collected?
22−The `haskell-nix.roots "ghc884"` should include all the evaluation-time dependencies
23−and the main build time dependencies of a project using ghc 8.8.4.
24−So you can add that to the relevant GC root.
25−In practice, if you're using a CI system like Hydra/Hercules, this means adding it to a job in `release.nix`/`ci.nix`.
27−## General troubleshooting when using `cabalProject`/`stackProject`/`project`
29−### Does the cabal/stack build work?
31−In `haskell.nix`, we strive to take the build configuration from the cabal/stack configuration files.
32−So if you have a problem with your cabal/stack configuration, it is likely that you will have a problem with the `haskell.nix` build too.
34−So the first thing to do is make sure that the build works with `cabal` or `stack` as normal.
35−If it *does* work, then the `haskell.nix` one should as well.
36−If, on the other hand, there is a failure, the `cabal` or `stack` build is usually easier to debug (or at least it is no longer a `haskell.nix` problem).
38−### Is the `haskell.nix` configuration completely in line with the cabal/stack configuration?
40−The `haskell.nix` configuration can come apart from the cabal/stack configuration in a number of ways:
44−(Cabal users only. For stack users this comes from the snapshot, so stack and `haskell.nix` will agree.)
46−The compiler version used by `haskell.nix` is selected by the `compiler-nix-name` argument; or if you do not specify it, by some default version (we recommend specifying it!).
47−Cabal does not provide an easy way to pin a *version* of the compiler (`with-compiler` lets you pick a particular executable, which is nearly but not quite what we want).
48−Hence, the two can come apart.
50−Make sure you are using the same compiler for the cabal build as for the `haskell.nix` build.
52−#### Hackage index state
54−(Cabal users only. For stack users, package versions come from the snapshot, so stack and `haskell.nix` will agree.)
56−Cabal has the concept of the Hackage "index state".
57−This is a timestamp, and it tells Cabal to behave "as if" it was seeing Hackage at that point in time.
58−Pinning it is generally good for reproducibility regardless of whether you use `haskell.nix` (you can do so in `cabal.project`).
60−If you do not set an `index-state` in `cabal.project`, then Cabal will use the latest one based on when you last called `cabal update`, and `haskell.nix` will use the latest one it knows about from `hackage.nix`.
61−These may not be the same!
62−So if you use `haskell.nix` we strongly recommend pinning the `index-state`.
64−#### Nix-only configuration options
66−You can set configuration options in your Nix code that are not present in the cabal/stack configuration.
67−For example, you might enable profiling.
69−Where possible, try to do the configuration in your cabal/stack configuration, e.g. setting `profiling: true` in `cabal.project`.
70−This will ensure that the two builds agree.
72−If you want or need to set some of them in Nix, try bringing the two into sync temporarily for troubleshooting.
74−## Other specific issues
76−### Why does the build complain about some files being missing?
78−Sometimes your build works fine outside `haskell.nix`, but inside the `haskell.nix` build, cabal complains that some file is missing.
81−The answer is that `haskell.nix` *thoroughly* cleans the source *by following what is mentioned as required in the cabal file*.
82−So we only include Haskell sources if they appear in a `hs-source-dirs` somewhere; and we only include non-Haskell files if they are included in `extra-source-files` or similar.
84−This is good practice anyway: if you do not include such files in `extra-source-files` then they will not be included in `cabal sdist`, which will cause problems if you ever upload your package to Hackage.
85−But `haskell.nix` is very picky about it.
87−### Why does my executable depend on GHC/GCC?
89−You may want to set the `dontStrip` option to `false` (see https://github.com/input-output-hk/haskell.nix/issues/829).
90−This is not set by default because it can occasionally cause breakage.
docs/tutorials/building-package-from-stackage-hackage.mddeleted−43
@@ -1,43 +0,0 @@
2−# Build a specific package from Hackage or Stackage
4−## From a [Stackage][] snapshot
6−To build a package, say [lens][], from a Stackage snapshot, say
7−[lts-13.28][], you could run:
9−nix build '(with import <nixpkgs> (import (builtins.fetchTarball "https://github.com/input-output-hk/haskell.nix/archive/master.tar.gz") {}).nixpkgsArgs; haskell-nix.snapshots."lts-13.28").lens.components.library'
11−This would build the (public) library component of the [lens][] package as
12−fixed by the [lts-13.28][] stackage snapshot. Nightly snapshots like
13−`nightly-2020-06-21` are also available.
15−## A specific version from Hackage
17−To build any package from hackage, say [lens][], at any version, say 4.17.1,
20−nix build '(with import <nixpkgs> (import (builtins.fetchTarball "https://github.com/input-output-hk/haskell.nix/archive/master.tar.gz") {}).nixpkgsArgs; (haskell-nix.hackage-package { name = "lens"; version = "4.17.1"; compiler-nix-name = "ghc8102"; })).components.library'
22−This would build the (public) library component of the [lens-4.17.1][] package
25−### Pinning hackage index
27−The dependencies would be resolved against the most recent
28−[hackage-index-state][] which comes with your [haskell.nix][] checkout via the
29−[hackage.nix][] pin. A specific one can be specified as well:
31−nix build '(with import <nixpkgs> (import (builtins.fetchTarball "https://github.com/input-output-hk/haskell.nix/archive/master.tar.gz") {}).nixpkgsArgs; (haskell-nix.hackage-package { name = "lens"; version = "4.17.1"; compiler-nix-name = "ghc8102"; index-state = "2019-07-14T00:00:00Z"; })).components.library'
33−This would use the hackage index as of `2019-07-14T00:00:00Z` to produce a
34−build plan for the [lens-4.17.1][] package.
36−[Stackage]: https://stackage.org
37−[Hackage]: https://hackage.haskell.org
38−[hackage.nix]: https://github.com/input-output-hk/hackage.nix
39−[haskell.nix]: https://github.com/input-output-hk/haskell.nix
40−[lts-13.28]: https://www.stackage.org/lts-13.28
41−[lens]: https://hackage.haskell.org/package/lens
42−[lens-4.17.1]: https://hackage.haskell.org/package/lens-4.17.1
43−[hackage-index-state]: https://github.com/input-output-hk/hackage.nix/blob/master/index-state-hashes.nix
docs/tutorials/ca-derivations.mddeleted−65
@@ -1,65 +0,0 @@
1−# Content addressed derivations
4−Floating content addressed derivations (from now *CA derivations*) is an experimental feature which substantially change how the hashes in the store paths are calculated.
5−Indeed, normally derivations are input addressed i.e. the outputs store paths depends only on the derivation inputs, instead with CA derivations they depend on the content of the outputs.
7−This has two main advantages:
9−- The so-called "early cutoff", namely the ability of Nix to stop a build if the build outputs would be something already built.
10−For example suppose you add a comment in an Haskell source, at this point Nix will rebuild the component depending on this source but since the output will be the same (adding a comment is an "output-invariant" change for `ghc`) every other component that depends on that will not be rebuilt.
11−- Users of the same Nix store does not need to trust each other when using substituters.
13−You can find more information in the [ca-derivations page on the wiki](https://nixos.wiki/wiki/Ca-derivations) (and in the other resources linked there).
16−### Enable CA derivations in your system
17−First of all your Nix installation must support the `ca-derivations` experimental feature, this can done by adding the following in your `nix.conf`:
20−experimental-features = ca-derivations
26− experimental-features = ca-derivations
30−## Enable CA derivations in your project
31−At this point you can pass a new module to `project'` that tells `haskell.nix` to build every component in the project as CA derivation.
34−haskell-nix.project' {
38− contentAddressed = true;
39− # packages.project-name.components.exes.executable.contentAddressed = true;
44−Optionally you can also specify which components you don't want to be content addressed.
47−### Limitation of the current CA derivations implementation
49−As explained in the [RFC 62](https://github.com/tweag/rfcs/blob/cas-rfc/rfcs/0062-content-addressed-paths.md)
51−> The current implementation has a naive approach that just forbids fetching a path if the local system has a different realisation for the same drv output. This approach is simple and correct, but it's possible that it might not be good-enough in practice as it can result in a totally useless binary cache in some pathological cases.
53−For example, suppose that your machine builds a derivation `A` producing an output `A.out` in your store and that after that a CI machine builds the same derivation `A` but producing a different output `A.out'` and populating a cache with this output.
54−At this point, if you need to build a derivation `B` that depends on `A`, since you already have the realisation `A.out` in your local store and you can't get `B.out` from the cache and you will end up building `B` even if one of its realisation is in the cache.
56−This means that, in some cases, enabling CA derivations would lead to more rebuilds than not having it.
59−Hydra currently doesn't support CA derivations, efforts are being made in this direction.
62−### GHC is not deterministic
63−Currently `ghc` is determinstic only disabling the parallel building i.e. passing `-j1`. [Here](https://gitlab.haskell.org/ghc/ghc/-/issues/12935) the upstream issue.
65−Having a deterministic `ghc` would be a dream since it will automatically fix all the pathological cases about substituters discussed above and would allow `haskell.nix` to parallel build even when using CA derivations.
docs/tutorials/coverage.mddeleted−123
@@ -1,123 +0,0 @@
3−haskell.nix can generate coverage information for your package or
4−project using Cabal's inbuilt hpc support.
8−To get a sensible coverage report, you need to enable coverage on each
9−of the packages of your project:
12−pkgs.haskell-nix.project {
13− src = pkgs.haskell-nix.haskellLib.cleanGit {
14− name = "haskell-nix-project";
17− compiler-nix-name = "ghc884";
20− packages.$pkg.components.library.doCoverage = true;
25−If you would like to make coverage optional, add an argument to your nix expression:
28−{ withCoverage ? false }:
30−pkgs.haskell-nix.project {
31− src = pkgs.haskell-nix.haskellLib.cleanGit {
32− name = "haskell-nix-project";
35− compiler-nix-name = "ghc884";
37− modules = pkgs.lib.optional withCoverage [{
38− packages.$pkg.components.library.doCoverage = true;
46−nix-build default.nix -A "projectWithCoverage.$pkg.coverageReport"
49−This will generate a coverage report for the package you requested.
50−All tests that are enabled (configured with `doCheck == true`) are
51−included in the coverage report.
53−See the [developer coverage docs](../dev/coverage.md#package-reports) for more information.
58−nix-build default.nix -A "projectWithCoverage.projectCoverageReport"
61−This will generate a coverage report for all the local packages in
64−See the [developer coverage docs](../dev/coverage.md#project-wide-reports) for more information.
68−By default, the behaviour of the `coverageReport` attribute is to
69−generate a coverage report that describes how that package affects the
70−coverage of all local packages (including itself) in the project.
72−The default behaviour of `projectCoverageReport` is to sum the
73−default coverage reports (produced by the above process) of all local
74−packages in the project.
76−You can modify this behaviour by using the `coverageReport` and
77−`projectCoverageReport` functions found in the haskell.nix library:
81− inherit (pkgs.haskell-nix) haskellLib;
83− project = haskellLib.project {
84− src = pkgs.haskell-nix.haskellLib.cleanGit {
85− name = "haskell-nix-project";
88− compiler-nix-name = "ghc884";
91− packages.$pkgA.components.library.doCoverage = true;
92− packages.$pkgB.components.library.doCoverage = true;
96− # Generate a coverage report for $pkgA that only includes the
97− # unit-test check and only shows coverage information for $pkgA, not
99− custom$pkgACoverageReport = haskellLib.coverageReport rec {
100− name = "$pkgA-unit-tests-only"
101− inherit (project.$pkgA.components) library;
102− checks = [project.$pkgA.components.checks.unit-test];
103− # Note that this is the default value of the "mixLibraries"
104− # argument and so this line isn't really necessary.
105− mixLibraries = [project.$pkgA.components.library];
108− custom$pkgBCoverageReport = haskellLib.coverageReport rec {
109− name = "$pkgB-unit-tests-only"
110− inherit (project.$pkgB.components) library;
111− checks = [project.$pkgB.components.checks.unit-test];
112− mixLibraries = [project.$pkgB.components.library];
115− # Generate a project coverage report that only includes the unit
116− # tests of the project, and only shows how each unit test effects
117− # the coverage of it's package, and not other packages in the
119− allUnitTestsProjectReport = haskellLib.projectCoverageReport [custom$pkgACoverageReport custom$pkgBCoverageReport];
121− inherit project custom$pkgACoverageReport custom$pkgBCoverageReport allUnitTestsProjectCoverageReport;
docs/tutorials/getting-started-flakes.mddeleted−142
@@ -1,142 +0,0 @@
1−# Getting started with flakes
3−This version of the getting started guide is for users who
4−are using [Nix Flakes](https://nixos.wiki/wiki/Flakes).
5−The non flakes version of the guide is [here](getting-started.md).
7−`haskell.nix` can automatically translate your
8−[Cabal](https://cabal.readthedocs.io/en/latest/cabal-project.html)
9−or [Stack](https://docs.haskellstack.org/en/stable/README/#quick-start-guide)
10−project and its dependencies into Nix code.
12−Assuming you have [Nix](https://nixos.org/download.html) installed, you can
13−start setting up your project.
15−## Setting up the binary cache
17−IMPORTANT: you *must* do this or you *will* build several copies of GHC!
19−You can configure Nix to use our binary cache, which is pushed to by CI, so should contain the artifacts that you need.
21−You need to add the following sections to `/etc/nix/nix.conf` or, if you are a trusted user, `~/.config/nix/nix.conf` (if you don't know what a "trusted user" is, you probably want to do the former).
24−trusted-public-keys = [...] hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ= [...]
25−substituters = [...] https://cache.iog.io [...]
28−If you're running NixOS, you need to add/update the following in your `/etc/nixos/configuration.nix` files instead.
31−# Binary Cache for Haskell.nix
32−nix.settings.trusted-public-keys = [
33− "hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ="
35−nix.settings.substituters = [
36− "https://cache.iog.io"
40−NixOS-21.11 and older use slightly different settings.
43−# Binary Cache for Haskell.nix
44−nix.binaryCachePublicKeys = [
45− "hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ="
48− "https://cache.iog.io"
52−This can be tricky to get setup properly. If you're still having trouble getting cache hits, consult the corresponding [troubleshooting section](../troubleshooting.md#why-am-i-building-ghc).
56−The following work with `stack.yaml` and `cabal.project` based
63− description = "A very basic flake";
64− inputs.haskellNix.url = "github:input-output-hk/haskell.nix";
65− inputs.nixpkgs.follows = "haskellNix/nixpkgs-unstable";
66− inputs.flake-utils.url = "github:numtide/flake-utils";
67− outputs = { self, nixpkgs, flake-utils, haskellNix }:
68− flake-utils.lib.eachSystem [ "x86_64-linux" "x86_64-darwin" ] (system:
70− overlays = [ haskellNix.overlay
72− # This overlay adds our project to pkgs
74− final.haskell-nix.project' {
76− compiler-nix-name = "ghc8104";
77− # This is used by `nix develop .` to open a shell for use with
78− # `cabal`, `hlint` and `haskell-language-server`
82− haskell-language-server = {};
84− # Non-Haskell shell tools go here
85− shell.buildInputs = with pkgs; [
88− # This adds `js-unknown-ghcjs-cabal` to the shell.
89− # shell.crossPlatforms = p: [p.ghcjs];
93− pkgs = import nixpkgs { inherit system overlays; inherit (haskellNix) config; };
94− flake = pkgs.helloProject.flake {
95− # This adds support for `nix build .#js-unknown-ghcjs-cabal:hello:exe:hello`
96− # crossPlatforms = p: [p.ghcjs];
99− # Built by `nix build .`
100− defaultPackage = flake.packages."hello:exe:hello";
105−!!! note "git dependencies"
106− If you have git dependencies in your project, you'll need
107− to [calculate sha256 hashes for them](./source-repository-hashes.md).
109−### Working with a project
111−Top-level attributes are Haskell packages (incl. dependencies) part of your project.
113−To build the library component of a package in the project run:
116−nix build .#your-package-name:lib:your-package-name
119−There are also other components such as `exe`, `test` and `benchmark`.
120−To build an executable:
123−nix build .#your-package-name:exe:your-exe-name
126−To use the `devShell` provided by the flake run:
130−cabal repl your-package-name:lib:your-package-name
131−cabal build your-package-name
134−To open a shell for use with `stack` see [the following issue](https://github.com/input-output-hk/haskell.nix/issues/689#issuecomment-643832619).
138−Read through [project](../reference/library.md#project) function reference to see how the API works.
140−There are a number of things to explore further in the tutorials section.
142−[haskell.nix]: https://github.com/input-output-hk/haskell.nix
docs/tutorials/getting-started-hix.mddeleted−227
@@ -1,227 +0,0 @@
1−# Getting started with Hix
3−The `hix` tools are wrappers for the various `nix` tools that
4−use `haskell.nix` without the need to add any `.nix` files.
8−* A quick way to try out haskell.nix for new users.
10−* Using haskell.nix to work on projects that do not have
13−* Testing to see if `haskell.nix` can build a project.
15−* Making `flake` and `non flake` configurations to check `haskell.nix`
16− treats them the same.
20−To use Hix you will need to install [Nix](https://nixos.org/download.html).
22−## Setting up the binary cache
24−IMPORTANT: you *must* do this or you *will* build several copies of GHC!
26−You can configure Nix to use our binary cache, which is pushed to by CI, so should contain the artifacts that you need.
28−You need to add the following sections to `/etc/nix/nix.conf` or, if you are a trusted user, `~/.config/nix/nix.conf` (if you don't know what a "trusted user" is, you probably want to do the former).
31−trusted-public-keys = [...] hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ= [...]
32−substituters = [...] https://cache.iog.io [...]
35−If you're running NixOS, you need to add/update the following in your `/etc/nixos/configuration.nix` files instead.
38−# Binary Cache for Haskell.nix
39−nix.settings.trusted-public-keys = [
40− "hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ="
42−nix.settings.substituters = [
43− "https://cache.iog.io"
47−NixOS-21.11 and older use slightly different settings.
50−# Binary Cache for Haskell.nix
51−nix.binaryCachePublicKeys = [
52− "hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ="
55− "https://cache.iog.io"
59−This can be tricky to get setup properly. If you're still having trouble getting cache hits, consult the corresponding [troubleshooting section](../troubleshooting.md#why-am-i-building-ghc).
64−nix-env -iA hix -f https://github.com/input-output-hk/haskell.nix/tarball/master
67−## Updating Hix (also updates hackage)
73−This is also necessary to make the latest nightly snapshot of hackage
78−To run `cabal build` in a nix-shell with all the dependencies required:
83−hix-shell --run 'cabal build'
89−hix-build -A hsPkgs.hello.components.exes.hello
92−Cross compile to JavaScript:
95−hix-build -A projectCross.ghcjs.hsPkgs.hello.components.exes.hello
100−The configuration arguments for `Hix` can be (from highest precedence to lowest):
102−* Passed on the command line with `--arg` (or `--argstr` for string args).
104−* Placed in `nix/hix.nix` file in the project dir.
106−* Placed in `~/.config/hix/hix.conf`
108−For example to build with GHC 8.10.7:
111−hix-shell --argstr compiler-nix-name ghc8107 --run 'cabal build'
114−or add a `nix/hix.nix` or `~/.config/hix/hix.conf` file:
117−{ compiler-nix-name = "ghc8107"; }
120−Here are just a few of the other configuration arguments you could use
121−in the files or on the command line (they are all optional):
124−{ name = "hello"; # for better error messages and derivation names
125− nixpkgsPin = "nixpkgs-unstable"; # or nixpkgs-2111 or nixpkgs-2105
126− nixpkgs = <nixpkgs>; # use this instead of nixpkgsPin
127− subDir = "some/sub/dir"; # sub dir containing the haskell project
128− projectFileName = "stack.yaml"; # use this project file
129− tools.haskell-language-server = "latest";
130− tools.hlint = "latest"; # Include the latest hls and hlint in the shell
131− index-state = "2021-02-22T00:00:00Z"; # It is normally best to put this in `cabal.project` (not here)
133−# PLUS MANY MORE! Almost any argument you can pass to the project functions
134−# or to `shellFor` can be used in as a Hix configuration argument.
139−## Adding Nix Support with Niv
141−If you have a `nix/hix.nix` file with suitable configuration that
142−you want to make available to users with Nix (without having to
145−[Niv](https://github.com/nmattia/niv) is a command line tool for keeping track of Nix project dependencies.
147−After installing niv you can initialize niv and pin the latest haskell.nix
148−commit by running the following in the root directory of the project:
152−niv add input-output-hk/haskell.nix -n haskellNix
158−(import (import nix/sources.nix).haskellNix {}).hix.project { src = ./.; }
161−If you want to also pin `nixpkgs` with Niv use:
165− sources = import nix/sources.nix;
167− (import sources.haskellNix {}).hix.project {
168− inherit (sources) nixpkgs;
179−When you want to update to the latest version of haskell.nix use:
182−niv update haskellNix
185−## Adding Nix Flake Support
187−To add flake support that uses the `nix/hix.nix` configuration in your
188−follow the [Getting started with flakes](getting-started.md) guide, but
189−use `haskell-nix.hix.project` instead of `haskell-nix.project'`
191−The `nixpkgs` used will need to be selected as a flake input (any selection
192−made in `nix/hix.nix` will be ignored).
194−Example `flake.nix` file:
198− description = "A very basic flake";
199− inputs.haskellNix.url = "github:input-output-hk/haskell.nix";
200− inputs.nixpkgs.follows = "haskellNix/nixpkgs-unstable";
201− inputs.flake-utils.url = "github:numtide/flake-utils";
202− outputs = { self, nixpkgs, flake-utils, haskellNix }:
203− flake-utils.lib.eachSystem [ "x86_64-linux" "x86_64-darwin" ] (system:
205− overlays = [ haskellNix.overlay
207− # This overlay adds our project to pkgs
209− final.haskell-nix.hix.project {
211− # Other project options can be put in `nix/hix.nix`
215− pkgs = import nixpkgs { inherit system overlays; inherit (haskellNix) config; };
216− flake = pkgs.helloProject.flake {
217− # This adds support for `nix build .#js-unknown-ghcjs:hello:exe:hello`
218− crossPlatforms = p: [p.ghcjs];
221− # Built by `nix build .`
222− defaultPackage = flake.packages."hello:exe:hello";
docs/tutorials/getting-started.mddeleted−203
@@ -1,203 +0,0 @@
3−`haskell.nix` can automatically translate your
4−[Cabal](https://cabal.readthedocs.io/en/latest/cabal-project.html)
5−or [Stack](https://docs.haskellstack.org/en/stable/README/#quick-start-guide)
6−project and its dependencies into Nix code.
8−Assuming you have [Nix](https://nixos.org/download.html) installed, you can
9−start setting up your project.
11−## Setting up the binary cache
13−IMPORTANT: you *must* do this or you *will* build several copies of GHC!
15−You can configure Nix to use our binary cache, which is pushed to by CI, so should contain the artifacts that you need.
17−You need to add the following sections to `/etc/nix/nix.conf` or, if you are a trusted user, `~/.config/nix/nix.conf` (if you don't know what a "trusted user" is, you probably want to do the former).
20−trusted-public-keys = [...] hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ= [...]
21−substituters = [...] https://cache.iog.io [...]
24−If you're running NixOS, you need to add/update the following in your `/etc/nixos/configuration.nix` files instead.
27−# Binary Cache for Haskell.nix
28−nix.settings.trusted-public-keys = [
29− "hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ="
31−nix.settings.substituters = [
32− "https://cache.iog.io"
36−NixOS-21.11 and older use slightly different settings.
39−# Binary Cache for Haskell.nix
40−nix.binaryCachePublicKeys = [
41− "hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ="
44− "https://cache.iog.io"
48−This can be tricky to get setup properly. If you're still having trouble getting cache hits, consult the corresponding [troubleshooting section](../troubleshooting.md#why-am-i-building-ghc).
52−[Niv](https://github.com/nmattia/niv) is a command line tool for keeping track of Nix project dependencies.
54−This guide assumes that the `sources.haskellNix` will be set to point
55−a pinned copy of the haskell.nix github repo. One easy way to do this
56−is to use Niv. If you prefer not to use Niv another option is described
57−in the in the "Using haskell.nix without niv" section of this document.
59−If you want to use Nix Flakes to pin your dependencies then you should
60−consider following the [Getting started with flakes](./getting-started-flakes.md)
61−document instead of this one.
63−After installing niv you can initialize niv and pin the latest haskell.nix
64−commit by running the following in the root directory of the project:
68−niv add input-output-hk/haskell.nix -n haskellNix
71−Then when you want to update to the latest version of haskellNix use:
79−The following work with `stack.yaml` and `cabal.project` based
86− # Read in the Niv sources
87− sources = import ./nix/sources.nix {};
88− # If ./nix/sources.nix file is not found run:
90− # niv add input-output-hk/haskell.nix -n haskellNix
92− # Fetch the haskell.nix commit we have pinned with Niv
93− haskellNix = import sources.haskellNix {};
94− # If haskellNix is not found run:
95− # niv add input-output-hk/haskell.nix -n haskellNix
97− # Import nixpkgs and pass the haskell.nix provided nixpkgsArgs
99− # haskell.nix provides access to the nixpkgs pins which are used by our CI,
100− # hence you will be more likely to get cache hits when using these.
101− # But you can also just use your own, e.g. '<nixpkgs>'.
102− haskellNix.sources.nixpkgs-unstable
103− # These arguments passed to nixpkgs, include some patches and also
104− # the haskell.nix functionality itself as an overlay.
105− haskellNix.nixpkgsArgs;
106−in pkgs.haskell-nix.project {
107− # 'cleanGit' cleans a source directory based on the files known by git
108− src = pkgs.haskell-nix.haskellLib.cleanGit {
109− name = "haskell-nix-project";
112− # Specify the GHC version to use.
113− compiler-nix-name = "ghc8102"; # Not required for `stack.yaml` based projects.
117−!!! note "git dependencies"
118− If you have git dependencies in your project, you'll need
119− to [calculate sha256 hashes for them](./source-repository-hashes.md).
121−### Working with a project
123−Top-level attributes are Haskell packages (incl. dependencies) part of your project.
125−To build the library component of a package in the project run:
128−nix-build -A your-package-name.components.library
131−There are also other components such as `exes`, `tests`, `benchmarks` and `all`.
132−To build an executable:
135−nix-build -A your-package-name.components.exes.your-exe-name
138−To cross compile use the `projectCross` attribute:
141−nix-build -A projectCross.ghcjs.hsPkgs.your-package-name.components.exes.your-exe-name
142−nix-build -A projectCross.mingwW64.hsPkgs.your-package-name.components.exes.your-exe-name
145−To open a shell for use with `cabal`, `hlint` and `haskell-language-server` add `shell.nix`:
148−(import ./default.nix).shellFor {
152− haskell-language-server = "latest";
161−cabal new-repl your-package-name:library:your-package-name
162−cabal new-build your-package-name
165−To open a shell for use with `stack` see [the following issue](https://github.com/input-output-hk/haskell.nix/issues/689#issuecomment-643832619).
167−## Using haskell.nix without Niv
169−If you would prefer not to use niv you can replace
170−`sources = import ./nix/sources.nix {};` in the examples with:
174− haskellNix = builtins.fetchTarball "https://github.com/input-output-hk/haskell.nix/archive/master.tar.gz";
178−The `fetchTarball` call above will always get the latest version, and is
179−similar to an auto-updating Nix channel.
181−However, in your own project, you may wish to pin [haskell.nix][] (as
182−you would pin Nixpkgs). This will make your builds reproducible, more
183−predictable, and faster (because the fixed version is cached).
185−Straightforward way of doing this is to change the branch name to a revision.
189− haskellNix = builtins.fetchTarball "https://github.com/input-output-hk/haskell.nix/archive/f1a94a4c82a2ab999a67c3b84269da78d89f0075.tar.gz";
193−There are other possible schemes for pinning. See
194−[Bumping Hackage and Stackage snapshots](./hackage-stackage.md) and
195−[Nix tutorial on reproducibility using pinning](https://nix.dev/tutorials/towards-reproducibility-pinning-nixpkgs.html).
199−Read through [project](../reference/library.md#project) function reference to see how the API works.
201−There are a number of things to explore further in the tutorials section.
203−[haskell.nix]: https://github.com/input-output-hk/haskell.nix
docs/tutorials/hackage-stackage.mddeleted−36
@@ -1,36 +0,0 @@
1−# Bumping Hackage and Stackage snapshots
3−`haskell.nix` relies on some generated data providing information about packages in Hackage and Stackage snapshots.
4−These are kept in [`hackage.nix`](https://github.com/input-output-hk/hackage.nix) and [`stackage.nix`](https://github.com/input-output-hk/stackage.nix) respectively.
5−If your project depends on a Hackage package, then the `hackage.nix` revision used must be new enough to contain that, and likewise for Stackage snaphots and `stackage.nix`.
7−## Updating and pinning `hackage.nix` and `stackage.nix`
9−`haskell.nix` pins particular revisions of these repositories internally, both for our own usage in testing, and so that users have a sensible default when getting started.
10−These revisions are updated nightly, so you can get newer revisions of `hackage.nix` and `stackage.nix` by updating your revision of `haskell.nix` itself.
12−However, this exposes you to changes in `haskell.nix` which you may not want, such as changes that force compiler rebuilds, or the occasional bug.
13−Instead, you can pin `hackage.nix` and `stackage.nix` independently. For example:
17− # You can use a tool like `niv` to manage this boilerplate
18− hackageSrc = builtins.fetchTarball https://github.com/input-output-hk/hackage.nix/archive/master.tar.gz;
19− stackageSrc = builtins.fetchTarball https://github.com/input-output-hk/stackage.nix/archive/master.tar.gz;
20− haskellSrc = builtins.fetchTarball https://github.com/input-output-hk/haskell.nix/archive/master.tar.gz;
22− haskellNix = import haskellSrc {
23− # This allows you to override the pins used by `haskell.nix` internally
25− hackage = hackageSrc;
26− stackage = stackageSrc;
32−This way you can change the revisions of `hackage.nix` and `stackage.nix`
33−without changing `haskell.nix`.
35−However, bear in mind that Stackage refers to Hackage, so your Stackage pin
36−should never be newer than your Hackage pin.
docs/tutorials/materialization.mddeleted−258
@@ -1,258 +0,0 @@
3−## What is materialization?
5−Capturing and storing the Nix files for a project so that they do
6−not need to be built (or checked). This allows us to cache the input
7−of an IFD (import from derivation).
9−## Why use materialization?
11−Using functions like `project`, `cabalProject`, `stackProject`
12−and `hackage-package` results in a lot of dependencies (all the
13−dependencies of nix-tools for instance).
15−* They can be slow to calculate (even if no work needs to be done it
16− is not unusual for it to take 5 seconds per project).
18−* They can be slow to build (or download) on machines that do not
19− yet have them in the Nix store.
21−* Hydra does not show progress because it does not provide feedback until it
22− has a list of jobs and the list of jobs cannot depend on the Nix expressions
23− being present (although this is often blamed on IFD it would be the same if
24− it wrote out JSON files and read them in)
26−## When is it OK to materialize?
28−* The Nix expressions are unlikely to change frequently (and when it does you
29− are happy to manually update it).
31−* You are happy to script something to update the materialized Nix files
34−* You are certain that the IFD you materialize is not `system`-dependent. If it
35− was you'd obtain different Nix expressions depending on which `system` the
38−## How can we materialize the Nix files?
40−Lets say we want to build `hlint`. We might start with an `hlint.nix`
41−file that looks like this:
44−let inherit (import ./. {}) sources nixpkgsArgs;
45− pkgs = import sources.nixpkgs nixpkgsArgs;
46− hlint = pkgs.haskell-nix.hackage-package {
47− compiler-nix-name = "ghc8102";
54−Building this may result in a lot of output, but if you build
55−it again it should give just:
58−$ nix-build hlint.nix -A components.exes.hlint
59−trace: No index state specified for hlint, using the latest index state that we know about (2021-01-04T00:00:00Z)!
60−/nix/store/2ybrfmcp79gg75ad4pr1cbxjak70yg8b-hlint-exe-hlint-2.2.11
63−To materialize the Nix files we need to take care to pin down the inputs. Stack
64−projects have their inputs pinned through specifying the snapshot. For cabal
65−projects this means we must specify the `index-state` of hackage we want to
69−let inherit (import ./. {}) sources nixpkgsArgs;
70− pkgs = import sources.nixpkgs nixpkgsArgs;
71− hlint = pkgs.haskell-nix.hackage-package {
72− compiler-nix-name = "ghc8102";
75− index-state = "2021-01-04T00:00:00Z";
80−Now if we build again we get a hint telling use how to calculate a suitable
81−sha256 hash to turn the derivation containing the Nix files into a fixed-output
85−$ nix-build hlint.nix -A components.exes.hlint
86−trace: To make project.plan-nix for hlint a fixed-output derivation but not materialized, set `plan-sha256` to the output of the 'calculateMaterializedSha' script in 'passthru'.
87−trace: To materialize project.plan-nix for hlint entirely, pass a writable path as the `materialized` argument and run the 'updateMaterialized' script in 'passthru'.
88−/nix/store/2ybrfmcp79gg75ad4pr1cbxjak70yg8b-hlint-exe-hlint-2.2.11
90−$ nix-build hlint.nix -A project.plan-nix.passthru.calculateMaterializedSha | bash
91−trace: To make project.plan-nix for hlint a fixed-output derivation but not materialized, set `plan-sha256` to the output of the 'calculateMaterializedSha' script in 'passthru'.
92−trace: To materialize project.plan-nix for hlint entirely, pass a writable path as the `materialized` argument and run the 'updateMaterialized' script in 'passthru'.
93−04hdgqwpaswmyb0ili7fwi6czzihd6x0jlvivw52d1i7wv4gaqy7
96−For a Stack project all occurences of `plan-nix` and `plan-sha256` are replaced
97−by `stack-nix` and `stack-sha256`, respectively. We can add the hash as
101−let inherit (import ./. {}) sources nixpkgsArgs;
102− pkgs = import sources.nixpkgs nixpkgsArgs;
103− hlint = pkgs.haskell-nix.hackage-package {
104− compiler-nix-name = "ghc8102";
107− index-state = "2021-01-04T00:00:00Z";
108− plan-sha256 = "04hdgqwpaswmyb0ili7fwi6czzihd6x0jlvivw52d1i7wv4gaqy7";
113−Just adding the hash might help reuse of the cached Nix expressions, but Nix
114−will still calculate all the dependencies (which can add seconds to `nix-build`
115−and `nix-shell` commands when no other work is needed) and users who do not yet
116−have the dependencies in their store will have to wait while they are built or
119−Running `nix-build` again gives us a hint on what we can do next:
122−$ nix-build hlint.nix -A components.exes.hlint
123−trace: To materialize project.plan-nix for hlint entirely, pass a writable path as the `materialized` argument and run the 'updateMaterialized' script in 'passthru'.
124−/nix/store/2ybrfmcp79gg75ad4pr1cbxjak70yg8b-hlint-exe-hlint-2.2.11
127−To capture the Nix expressions we can do something like:
130−let inherit (import ./. {}) sources nixpkgsArgs;
131− pkgs = import sources.nixpkgs nixpkgsArgs;
132− hlint = pkgs.haskell-nix.hackage-package {
133− compiler-nix-name = "ghc8102";
136− index-state = "2021-01-04T00:00:00Z";
137− plan-sha256 = "04hdgqwpaswmyb0ili7fwi6czzihd6x0jlvivw52d1i7wv4gaqy7";
138− materialized = ./hlint.materialized;
143−Now we can copy the Nix files needed and build with:
146−$ nix-build hlint.nix 2>&1 | grep -om1 '/nix/store/.*-updateMaterialized' | bash
147−$ nix-build hlint.nix -A components.exes.hlint
148−building '/nix/store/wpxsgzl1z4jnhfqzmzg3xxv3ljpmzr5h-hlint-plan-to-nix-pkgs.drv'...
149−/nix/store/2ybrfmcp79gg75ad4pr1cbxjak70yg8b-hlint-exe-hlint-2.2.11
152−## How can we check `sha256` and `materialized` are up to date?
154−Let's pretend we had to go back to `hlint` version `2.2.10`.
155−We can tell haskell.nix to check the materialization either by:
157−* Removing the materialization files with `rm -rf hlint.materialized`
159−* Temporarily adding `checkMaterialization = true;`
161−If we choose to add the `checkMaterialization` flag you would have:
164−let inherit (import ./. {}) sources nixpkgsArgs;
165− pkgs = import sources.nixpkgs nixpkgsArgs;
166− hlint = pkgs.haskell-nix.hackage-package {
167− compiler-nix-name = "ghc8102";
170− index-state = "2021-01-04T00:00:00Z";
171− plan-sha256 = "04hdgqwpaswmyb0ili7fwi6czzihd6x0jlvivw52d1i7wv4gaqy7";
172− materialized = ./hlint.materialized;
173− checkMaterialization = true;
178−This will fail and report the details of what is wrong and how to fix it:
181−$ nix-build hlint.nix -A components.exes.hlint
185−Calculated hash for hlint-plan-to-nix-pkgs was not 04hdgqwpaswmyb0ili7fwi6czzihd6x0jlvivw52d1i7wv4gaqy7. New hash is :
186− plan-sha256 = "0jsgdmii0a6b35sd42cpbc83s4sp4fbx8slphzvamq8n9x49i5b6";
187−Materialized nix used for hlint-plan-to-nix-pkgs incorrect. To fix run: /nix/store/6wp0zzal40ls874f5ddpaac7qmii9y4z-updateMaterialized
188−builder for '/nix/store/61a0vginv76w4p9ycyd628pjanav06pl-hlint-plan-to-nix-pkgs.drv' failed with exit code 1
189−error: build of '/nix/store/61a0vginv76w4p9ycyd628pjanav06pl-hlint-plan-to-nix-pkgs.drv' failed
190−(use '--show-trace' to show detailed location information)
193−Checking the materialization requires Nix to do all the work that
194−materialization avoids. So while it might be tempting to leave
195−`checkMaterialization = true` all the time, we would be better off just
196−removing `materialized` and `plan-sha256`.
198−## How can we update the Nix files with a script?
200−We can simply put the commands we used earlier in a script:
205−# Output new plan-sha256
206−nix-build hlint.nix -A project.plan-nix.passthru.calculateMaterializedSha | bash
208−# Update materialized Nix expressions
209−nix-build hlint.nix 2>&1 | grep -om1 '/nix/store/.*-updateMaterialized' | bash
212−## Can we skip making a copy and use `materialized = /nix/store/...`?
214−Yes and it gives us the same speed improvement, however:
216−* It does not help at all in `restricted-eval` mode (Hydra).
218−* Users will still wind up building or downloading the dependencies
219− needed to build the Nix files (if they do not have them).
221−For those reasons it might be best to make a copy instead
222−of using the `/nix/store/...` path directly.
224−If you really want to use the `/nix/store/...` path directly
225−you should guard against the path not existing as passing in
226−a non-existing path is now an error:
229−let inherit (import ./. {}) sources nixpkgsArgs;
230− pkgs = import sources.nixpkgs nixpkgsArgs;
231− hlintPlan = /nix/store/63k3f8bvsnag7v36vb3149208jyx61rk-hlint-plan-to-nix-pkgs;
232− hlint = pkgs.haskell-nix.hackage-package {
233− compiler-nix-name = "ghc8102";
236− index-state = "2021-01-04T00:00:00Z";
237− plan-sha256 = "04hdgqwpaswmyb0ili7fwi6czzihd6x0jlvivw52d1i7wv4gaqy7";
238− materialized = if __pathExists hlintPlan then hlintPlan else null;
243−Running when no building is needed is still slow in restricted evaluation mode.
246−$ time nix-build --option restrict-eval true -I . --option allowed-uris "https://github.com/NixOS https://github.com/input-output-hk" hlint.nix -A components.exes.hlint --show-trace
247−/nix/store/2ybrfmcp79gg75ad4pr1cbxjak70yg8b-hlint-exe-hlint-2.2.11
252−$ time nix-build hlint.nix -A components.exes.hlint
253−/nix/store/2ybrfmcp79gg75ad4pr1cbxjak70yg8b-hlint-exe-hlint-2.2.11
docs/tutorials/pkg-map.mddeleted−68
@@ -1,68 +0,0 @@
1−# Mapping non-Haskell dependencies to Nixpkgs
3−Cabal files may contain dependencies to external non-Haskell
6−* [`build-tool-depends`](https://cabal.readthedocs.io/en/latest/cabal-package.html#pkg-field-build-tool-depends)
7−* [`pkgconfig-depends`](https://cabal.readthedocs.io/en/latest/cabal-package.html#pkg-field-pkgconfig-depends)
8−* [`frameworks`](https://cabal.readthedocs.io/en/latest/cabal-package.html#pkg-field-frameworks)
9−* [`extra-libraries`](https://cabal.readthedocs.io/en/latest/cabal-package.html#pkg-field-extra-libraries)
11−If there is a `pkgs` attribute in Nixpkgs that matches the name given
12−in the Cabal file, then it will be added as a dependency (see the
13−output of `cabal-to-nix`). Otherwise, there needs to be a mapping from
14−Cabal file names (decided by the package author) to Nix package
19−The user may solve it by themself by overriding Nixpkgs and adding a
20−package alias. For example:
32−### Replace libraries of components
34−If a component is missing a dependency it can be added via modules. For example:
37−project = pkgs.haskell-nix.project' {
39− compiler-nix-name = "ghc8102";
41− # Replace `extra-libraries` dependencies
42− packages.X11.components.library.libs = pkgs.lib.mkForce (with pkgs.xorg;
43− [ libX11 libXrandr libXext libXScrnSaver libXinerama ]);
48−### Mapping in Haskell.nix
50−Alternatively, if the name is commonly used, an alias can be added to
51−the Haskell.nix sources, so that it's solved for all users.
53−* [`lib/pkgconf-nixpkgs-map.nix`](https://github.com/input-output-hk/haskell.nix/blob/master/lib/pkgconf-nixpkgs-map.nix)
54− — for `pkgconfig-depends`.
56− Each mapping entry is a list of packages.
58−* [`lib/system-nixpkgs-map.nix`](https://github.com/input-output-hk/haskell.nix/blob/master/lib/system-nixpkgs-map.nix)
59− — for `build-tool-depends`, `frameworks`, `extra-libraries`, etc.
61− Each name can be mapped to:
62− 1. A single package from nixkpgs.
63− 2. `null` — eliminates the dependency
64− 3. A list of packages — sometimes needed for dependencies such as `X11`.
67− Please go ahead and open a [pull request](https://github.com/input-output-hk/haskell.nix/pulls)
68− to improve the package mappings.
docs/user-guide.mdnew file+310
@@ -0,0 +1,310 @@
3+[Haskell.nix][] can be use for two different use cases:
5+### Use 1 : to build a specific package from hackage or a [stackage][] lts or nightly set.
7+To build a package, say [lens][], from a stackage snapshot, say [lts-13.28][],
10+nix build '(with import <nixpkgs> (import ./. {}).nixpkgsArgs; haskell-nix.snapshots."lts-13.28").lens.components.library'
12+which would build the [lens][] library component from the lens package as fixed
13+by the [lts-13.28][] stackage snapshot.
15+To build any package from hackage, say [lens][], in version, say 4.17.1, you
18+nix build '(with import <nixpkgs> (import ./. {}).nixpkgsArgs; (haskell-nix.hackage-package { name = "lens"; version = "4.17.1"; })).components.library'
20+which would build the [lens][] library component from the [lens-4.17.1][] package
21+from hackage. The dependencies would be solved against the most recent
22+[hackage-index-state][] that comes via the [hackage.nix][] pin with your
23+[haskell.nix][] checkout. A specific one can be specified as well:
25+nix build '(with import <nixpkgs> (import ./. {}).nixpkgsArgs; (haskell-nix.hackage-package { name = "lens"; version = "4.17.1"; index-state = "2019-07-14T00:00:00Z"; })).components.library'
27+which would use the hackage index as of `2019-07-14T00:00:00Z` to produce a build plan
28+for the [lens-4.17.1][] package.
31+### Use 2 : to build a stack or cabal project.
33+So you want to use [Haskell.nix][] with your stack or cabal project. The
34+general approach will be to pick the right tool from `nix-tools` and
35+produce a `pkgs.nix` expression. Getting a copy of the `nix-tools`
36+(and potentially the [Haskell.nix][] source), will then equip us to
37+produce derivations that we can `nix build`.
39+[haskell.nix]: https://github.com/input-output-hk/haskell.nix
40+[stackage]: https://stackage.org
41+[lts-13.28]: https://www.stackage.org/lts-13.28
42+[lens]: https://hackage.haskell.org/package/lens
43+[lens-4.17.1]: https://hackage.haskell.org/package/lens-4.17.1
44+[hackage.nix]: https://github.com/input-output-hk/hackage.nix
45+[hackage-index-state]: https://github.com/input-output-hk/hackage.nix/blob/master/index-state-hashes.nix
47+## Installing `nix-tools`
49+To build the latest `nix-tools` and store the result at `./nt`, run:
52+nix build 'let haskellNix = import (builtins.fetchTarball https://github.com/input-output-hk/haskell.nix/archive/master.tar.gz) {}; in (import haskellNix.sources.nixpkgs-2003 haskellNix.nixpkgsArgs).haskell-nix.nix-tools' --out-link nt
55+If you would like to then install `nix-tools` into your profile, run:
61+## Getting the [Haskell.nix][] source (optional)
63+The [Haskell.nix][] and `nix-tools` source will be useful if you would
64+like to contribute improvements, or read the source code to fully
65+understand something that the documentation doesn't cover.
68+git clone https://github.com/input-output-hk/nix-tools
69+git clone https://github.com/input-output-hk/haskell.nix
71+nix build -f . haskell-nix.nix-tools --out-link nt
74+## Setting up the Cachix binary cache
76+CI pushes to [cachix](https://cachix.org) so you can benefit from the cache if
77+you pin a combination of `haskell.nix` and `nixpkgs` built by CI. You'll need
78+to configure the [iohk cachix](https://iohk.cachix.org) as a
79+`substituter` for `nix` and add the public key found at the url to
80+`trusted-public-keys`.
82+## Using [Haskell.nix][] with your project
84+The easiest way to get a hold of [Haskell.nix][] is with
85+[`fetchTarball`](https://nixos.org/nix/manual/#ssec-builtins).
88+import <nixpkgs> (import (builtins.fetchTarball https://github.com/input-output-hk/haskell.nix/archive/master.tar.gz) {}).nixpkgsArgs
91+### Using your cabal.project file
93+If your project has a `cabal.project` you can add a `default.nix` like this:
96+{ pkgs ? import <nixpkgs> (import (builtins.fetchTarball https://github.com/input-output-hk/haskell.nix/archive/master.tar.gz) {}).nixpkgsArgs
97+, compiler-nix-name ? "ghc865"
99+ pkgs.haskell-nix.cabalProject {
100+ src = pkgs.haskell-nix.haskellLib.cleanGit { src = ./.; };
101+ inherit compiler-nix-name;
102+ # pkg-def-extras = [
103+ # # Additional packages ontop of all those listed in `cabal.project`
106+ # # Specific package overrides would go here for example:
107+ # packages.cbors.package.ghcOptions = "-Werror";
108+ # packages.cbors.patches = [ ./one.patch ];
109+ # packages.cbors.flags.optimize-gmp = false;
110+ # # It may be better to set flags in `cabal.project` instead
111+ # # (`plan-to-nix` will include them as defaults).
116+Note: The `cleanGit` call will exclude any files not in the index file
117+in the local `.git` directory. This is extremely useful as it avoids
118+unwanted builds (for instance when the contents of `dist-newstyle` are
119+modified by cabal). It is important that `src` is the root directory
120+of the repo (so `cleanGit` can find the `.git` directory). If the project
121+is not at the root of the repo, then also pass `subDir` to `cleanGit` with the
122+location of the project relative to `src` as a string ([more information
123+on using cleanGit](clean-git.md)). For example:
126+ src = pkgs.haskell-nix.haskellLib.cleanGit
127+ { src = ./.; subDir = "subdir/another-subdir"; };
130+If you want to use a custom filtering function, don't use the built-in nix `filterSource` function.
131+Due to some technicalities about how filtering and the nix store work, it will cause all components in
132+your project to be rebuilt any time any part of the project source changes. Use `cleanSourceWith` instead:
135+ src = pkgs.haskell-nix.haskellLib.cleanSourceWith
136+ { src = ./.; filter = myFilterFunction; };
139+Note that `cleanSourceWith` will also take the `subDir` argument.
141+You can build a component from your project with `nix-build` (in this
142+case the `hello` executable in a `helloworld` package):
145+nix-build -A helloworld.components.exes.hello
148+For interactive development you can run:
151+nix-shell -A shellFor
154+The resulting shell will include all the dependencies of the local packages
155+listed in your `cabal.project` file (but it will not build those local
158+Inside the shell use `cabal new-build` and `cabal new-repl` to work on the
159+cabal project as you normally would. They will use the packages provided
160+by nix whenever possible.
162+It is a good idea to add `write-ghc-environment-files: never` to your
163+`cabal.project` file to prevent unwanted `.ghc.environment.*` files
164+(they will prevent subsequent `nix-shell` invocations from working
167+Adding an `index-state` to your `cabal.project` can pin the plan used so that
168+the same packages will be built each time (until you change the index-state
169+or one of the constraints in your local `.cabal` files).
171+### Using your stack.yaml file
173+If your project has a `stack.yaml` you can add a `default.nix` like this:
176+{ pkgs ? import <nixpkgs> (import (builtins.fetchTarball https://github.com/input-output-hk/haskell.nix/archive/master.tar.gz) {}).nixpkgsArgs
178+ pkgs.haskell-nix.stackProject {
179+ src = pkgs.haskell-nix.haskellLib.cleanGit { src = ./.; };
180+ # pkg-def-extras = [
181+ # # Additional packages ontop of all those listed in `stack.yaml`
184+ # # Specific package overrides would go here for example:
185+ # packages.cbors.package.ghcOptions = "-Werror";
186+ # packages.cbors.patches = [ ./one.patch ];
187+ # packages.cbors.flags.optimize-gmp = false;
188+ # # It may be better to set flags in `stack.yaml` instead
189+ # # (`stack-to-nix` will include them as defaults).
194+You can build a component from your project with `nix-build` (in this
195+case the `hello` executable in a `helloworld` package):
198+nix-build -A helloworld.components.exes.hello
201+### Pinning the [Haskell.nix][] version
203+For simplicity's sake we will use `fetchTarball` for the examples in
204+this documentation. This will always get the latest version, and is
205+similar to an auto-updating Nix channel.
207+However, in your own project, you may wish to pin [Haskell.nix][] (as
208+you would pin Nixpkgs). This will make your builds reproducable, more
209+predictable, and faster (because the fixed version is cached).
211+One way of doing this is to use `nix-prefetch-git` to get a JSON file
212+with a revision and SHA-256 hash of [Haskell.nix][].
215+$ nix-prefetch-git --quiet https://github.com/input-output-hk/haskell.nix | tee haskell-nix-src.json
217+ "url": "https://github.com/input-output-hk/haskell.nix",
218+ "rev": "f1a94a4c82a2ab999a67c3b84269da78d89f0075",
219+ "date": "2019-06-05T01:06:12+00:00",
220+ "sha256": "0ggxsppjlb6q6a83y12cwgrdnqnw1s128rpibgzs5p1966bdfqla",
221+ "fetchSubmodules": false
225+(The `tee` command is just to show you the result.)
226+Use the following expression to import that version:
229+{ nixpkgs ? <nixpkgs> }:
232+ spec = builtins.fromJSON (builtins.readFile ./haskell-nix-src.json);
233+ haskell-nix-src = (import nixpkgs {}).fetchgit {
234+ name = "haskell-lib";
235+ inherit (spec) url rev sha256 fetchSubmodules;
238+ import nixpkgs (import haskell-nix-src)
241+There are other possible schemes for pinning. See
242+[`haskell.nix/lib/fetch-external.nix`](https://github.com/input-output-hk/haskell.nix/blob/master/lib/fetch-external.nix),
243+the [niv](https://github.com/nmattia/niv) tool, or the Nix Flakes
246+### Overriding the Hackage version
248+Sometimes you might want to use a chosen version of Haskell.nix with a
249+recent update of Hackage or Stackage. This can be done with JSON pins:
252+nix-prefetch-git https://github.com/input-output-hk/hackage.nix | tee hackage-src.json
253+nix-prefetch-git https://github.com/input-output-hk/stackage.nix | tee stackage-src.json
256+The resulting JSON files will correspond to the latest revision of
257+[hackage.nix][] and [stackage.nix][]. See
258+[Architecture](architecture.md) for more information about how
259+these Git repositories correspond to the actual Hackage and Stackage.
261+[hackage.nix]: https://github.com/input-output-hk/hackage.nix
262+[stackage.nix]: https://github.com/input-output-hk/stackage.nix
265+{ pkgs ? import <nixpkgs> (haskellNixArgs // { overlays = haskellNixArgs.overlays ++ [
267+ haskell-nix = super.haskell-nix // {
268+ hackageSourceJSON = ./hackage-src.json;
269+ stackageSourceJSON = ./stackage-src.json;
272+, haskellNixArgs ? (import (builtins.fetchTarball https://github.com/input-output-hk/haskell.nix/archive/master.tar.gz) {}).nixpkgsArgs
279+It's sometimes useful to load [Haskell.nix][] in the REPL to explore
280+attrsets and try examples.
284+{ nixpkgs ? <nixpkgs> }:
286+ haskell = import nixpkgs (import (builtins.fetchTarball https://github.com/input-output-hk/haskell.nix/archive/master.tar.gz) {}).nixpkgsArgs;
287+ pkgNames = haskell.pkgs.lib.attrNames haskell.haskell-nix.snapshots."lts-13.18";
291+Load the example file:
294+$ nix repl '<nixpkgs>' example.nix
295+Welcome to Nix version 2.3pre6631_e58a7144. Type :? for help.
297+Loading '<nixpkgs>'...
298+Added 10403 variables.
300+Loading 'example2.nix'...
303+nix-repl> lib.take 5 pkgNames
304+[ "ALUT" "ANum" "Allure" "Boolean" "BoundedChan" ]
309+Now that you have `nix-tools` and are able to import [Haskell.nix][],
310+you can continue to the next chapter.
docs/user-guide/cabal-projects.mdnew file+96
@@ -0,0 +1,96 @@
1+Here we will look into how to generate the `pkgs.nix` file for a
2+`cabal.project` project. For the full integration see the [previous
5+Generating package sets for Cabal projects, is slightly more involved,
6+because you need to let Cabal calculate a build plan for the
7+dependencies of your package(s).
9+## Generating `plan.json`
11+To get a plan, you need Cabal and GHC. See the [How to install a
12+compiler section of the Nixpkgs Manual][compiler] for information
13+about how to choose a specific compiler version.
15+[compiler]: https://nixos.org/nixpkgs/manual/#how-to-install-a-compiler
17+!!! note "Cabal version"
18+ The minimum Cabal version is 2.4. This version is available
19+ in the NixOS 19.03 release.
21+For this example, we will run a `nix-shell` with the default GHC
25+nix-shell -p haskellPackages.cabal-install haskellPackages.ghc \
26+ --run "cabal new-configure"
29+If all goes well, you should now have the file
30+`dist-newstyle/cache/plan.json`.
32+!!! tip "Specifying the GHC version"
33+ To use a specific compiler version, replace `haskellPackages.ghc`
34+ with something like `haskell-nix.compiler.ghc865`. The given compiler
35+ must exist in your Nixpkgs version, of course. See also the
36+ [Nixpkgs Manual][compiler].
38+## Using `plan-to-nix`
40+With [nix-tools installed](../user-guide.md), we can then run the
41+following command on a Cabal project and its build plan. Omit the
42+`--cabal-project` option if you don't have a project file.
45+# convert the plan.json file into a pkgs.nix file
46+plan-to-nix --output . \
47+ --plan-json dist-newstyle/cache/plan.json
48+ --cabal-project cabal.project
51+This will produce a `pkgs.nix` file that looks like the following:
58+ "o-clock" = hackage.o-clock."0.1.1".revisions.default;
65+ { packages = { my-package = ./.plan.nix/my-package.nix; }; };
69+It has converted Cabal's build plan into a Nix expression that selects
70+dependencies from `hackage.nix`. All local packages in the project are
71+generated with `cabal-to-nix` and added to the package set
74+## Creating the package set
76+Import the generated `pkgs.nix` and pass to
77+[`mkCabalPkgSet`](../reference/library.md#mkcabalprojectpkgset) to
78+instantiate a package set.
83+ # Import the Haskell.nix library,
84+ haskellNix = import (builtins.fetchTarball https://github.com/input-output-hk/haskell.nix/archive/master.tar.gz) {};
85+ nixpkgs = import haskellNix.sources.nixpkgs-1909 haskellNix.nixpkgsArgs;
86+ haskell = nixpkgs.haskell-nix;
88+ # Instantiate a package set using the generated file.
89+ pkgSet = haskell.mkCabalProjectPkgSet {
90+ plan-pkgs = import ./pkgs.nix;
docs/tutorials/clean-git.md → docs/user-guide/clean-git.mdrenamed+3−3
@@ -29,7 +29,7 @@ in a change to the `.cabal` file the test will still be built the same).
30components.tests.test.extraSrcFiles = [ "subdir-needed-by-test" ];
30components.tests.test.extraSrcFiles = [ "subdir-needed-by-test" ];
32−Or alternatively, override the source with a suitable filter function.
32+Or alternatively, override the source with a suitable filter function.
34components.tests.test.src = haskell-nix.haskellLib.cleanSourceWith {
34components.tests.test.src = haskell-nix.haskellLib.cleanSourceWith {
35 inherit src;
35 inherit src;
@@ -64,7 +64,7 @@ sub directories containing git repos.
65For example if `repoA` and `repoB` are two git repos with
65For example if `repoA` and `repoB` are two git repos with
66cabal packages and want to use the `repoB` package when building
66cabal packages and want to use the `repoB` package when building
67−`repoA`. First we can add `../repoB` to `repoA/cabal.project`:
67+`repoA. First we can add `../repoB` to `repoA/cabal.project`:
@@ -75,7 +75,7 @@ packages:
75Then in `repoA/default.nix` we can use:
75Then in `repoA/default.nix` we can use:
78−haskell-nix.project {
78+haskell-nix.cabalProject {
79 src = haskell-nix.haskellLib.cleanSourceWith {
79 src = haskell-nix.haskellLib.cleanSourceWith {
80 src = haskell-nix.haskellLib.cleanGits {
80 src = haskell-nix.haskellLib.cleanGits {
81 name = "root";
81 name = "root";
docs/tutorials/cross-compilation.md → docs/user-guide/cross-compilation.mdrenamed+1−1
@@ -90,7 +90,7 @@ executables you must add package overrides to:
92 packages.bench.components.exes.bench.configureFlags =
92 packages.bench.components.exes.bench.configureFlags =
93− lib.optionals stdenv.hostPlatform.isMusl [
93+ stdenv.lib.optionals stdenv.hostPlatform.isMusl [
94 "--disable-executable-dynamic"
94 "--disable-executable-dynamic"
95 "--disable-shared"
95 "--disable-shared"
96 "--ghc-option=-optl=-pthread"
96 "--ghc-option=-optl=-pthread"
docs/tutorials/development.md → docs/user-guide/development.mdrenamed+38−68
@@ -4,14 +4,14 @@ your Haskell package dependencies, but also the required system
4libraries and build tools.
4libraries and build tools.
6Inside the development shell, you can run commands such as `ghc`,
6Inside the development shell, you can run commands such as `ghc`,
7−`ghci`, or `cabal new‑build` (`cabal build` on Cabal 3.0),
7+`ghci`, or `cabal new‑build`, and they will have all dependencies
8−and they will have all dependencies available.
8+available.
10Every dependency will be cached in your Nix store. If you have set up
10Every dependency will be cached in your Nix store. If you have set up
11Hydra CI, then your team can share pre-built dependencies.
11Hydra CI, then your team can share pre-built dependencies.
13These examples assume that you have created your package set as
13These examples assume that you have created your package set as
14−described in [Creating Nix builds for your projects](getting-started.md) and
14+described in [Creating Nix builds for your projects](projects.md) and
15it exists in a file called `default.nix`.
15it exists in a file called `default.nix`.
@@ -21,12 +21,27 @@ it exists in a file called `default.nix`.
21 rebuild all dependencies, even though they are available in the
21 rebuild all dependencies, even though they are available in the
22 shell. However, if you have a Stack project, you can generate the
22 shell. However, if you have a Stack project, you can generate the
23 package set with Haskell.nix, then use `cabal new‑build` to work
23 package set with Haskell.nix, then use `cabal new‑build` to work
24− on it. Starting Cabal 3.0 `cabal build` will work out of the box, as
24+ on it.
25− new style builds are the default.
27−## How to get a development shell
26+## How to get a development shell for a package
29−If you have a Cabal or Stack project with one or more packages
28+Run a `nix‑shell` on `components.all` of your package. `all` is a
29+synthetic component whose dependencies are the union of the
30+dependencies of all components in the package. Therefore, you will be
31+able to build the test suites because their dependencies will be
37+ hsPkgs = import ./default.nix {};
39+ hsPkgs.my-package.components.all
42+## How to get a development shell for a multi-package project
44+If you have a Cabal or Stack project with multiple packages
30(i.e. multiple `.cabal` files, not a single package with multiple
45(i.e. multiple `.cabal` files, not a single package with multiple
31components), then you will need a development environment that
46components), then you will need a development environment that
32contains the _dependencies_ of your packages, but not the packages
47contains the _dependencies_ of your packages, but not the packages
@@ -34,14 +49,13 @@ themselves. This is what the [`shellFor`][shellFor] function does.
36# shell.nix
51# shell.nix
52+{ pkgs ? import <nixpkgs> {} }:
38− project = import ./default.nix;
55+ hsPkgs = import ./default.nix { inherit pkgs; };
40− project.shellFor {
57+ hsPkgs.shellFor {
41− # ALL of these arguments are optional.
58+ # Include only the *local* packages of your project.
43− # List of packages from the project you want to work on in
44− # the shell (default is all the projects local packages).
45 packages = ps: with ps; [
59 packages = ps: with ps; [
@@ -51,22 +65,15 @@ in
51 # and provides a "hoogle" command to search the index.
65 # and provides a "hoogle" command to search the index.
52 withHoogle = true;
66 withHoogle = true;
68+ # You might want some extra tools in the shell (optional).
54 # Some common tools can be added with the `tools` argument
70 # Some common tools can be added with the `tools` argument
55− tools = {
71+ tools = { cabal = "3.2.0.0"; hlint = "2.2.11"; };
57− hlint = "latest"; # Selects the latest version in the hackage.nix snapshot
58− haskell-language-server = "latest";
60 # See overlays/tools.nix for more details
72 # See overlays/tools.nix for more details
62 # Some you may need to get some other way.
74 # Some you may need to get some other way.
63− buildInputs = [ (import <nixpkgs> {}).git ];
75+ buildInputs = with pkgs.haskellPackages;
65− # Sellect cross compilers to include.
66− crossPlatforms = ps: with ps; [
67− ghcjs # Adds support for `js-unknown-ghcjs-cabal build` in the shell
68− # mingwW64 # Adds support for `x86_64-W64-mingw32-cabal build` in the shell
71 # Prevents cabal from choosing alternate plans, so that
78 # Prevents cabal from choosing alternate plans, so that
72 # *all* dependencies are provided by Nix.
79 # *all* dependencies are provided by Nix.
@@ -85,15 +92,15 @@ If you need a local Hoogle for all the dependencies of your project create this
86# shell-hoogle.nix
93# shell-hoogle.nix
88− project = import ./default.nix {};
95+ hsPkgs = import ./default.nix {};
90− project.shellFor {
97+ hsPkgs.shellFor {
91 packages = ps: [ps.my-package];
98 packages = ps: [ps.my-package];
92 withHoogle = true;
99 withHoogle = true;
96−and run `nix-shell shell-hoogle.nix --run "hoogle server --local"`.
103+and run `nix-shell shell-hoogle.nix --run "hoogle server --local"`.
97This will open a local Hoogle server at `http://127.0.0.1:8080`.
104This will open a local Hoogle server at `http://127.0.0.1:8080`.
@@ -108,7 +115,7 @@ selects packages from the larger package set.
108# shell.nix
115# shell.nix
110 haskellNix = import (builtins.fetchTarball https://github.com/input-output-hk/haskell.nix/archive/master.tar.gz) {};
117 haskellNix = import (builtins.fetchTarball https://github.com/input-output-hk/haskell.nix/archive/master.tar.gz) {};
111− nixpkgs = import haskellNix.sources.nixpkgs haskellNix.nixpkgsArgs;
118+ nixpkgs = import haskellNix.sources.nixpkgs-1909 haskellNix.nixpkgsArgs;
112 haskell = nixpkgs.haskell-nix;
119 haskell = nixpkgs.haskell-nix;
114 haskell.haskellPackages.ghcWithPackages (ps: with ps;
121 haskell.haskellPackages.ghcWithPackages (ps: with ps;
@@ -127,7 +134,7 @@ project.
129 haskellNix = import (builtins.fetchTarball https://github.com/input-output-hk/haskell.nix/archive/master.tar.gz) {};
136 haskellNix = import (builtins.fetchTarball https://github.com/input-output-hk/haskell.nix/archive/master.tar.gz) {};
130− nixpkgs = import haskellNix.sources.nixpkgs haskellNix.nixpkgsArgs;
137+ nixpkgs = import haskellNix.sources.nixpkgs-1909 haskellNix.nixpkgsArgs;
131 haskell = nixpkgs.haskell-nix;
138 haskell = nixpkgs.haskell-nix;
133 haskell.snapshots."lts-13.18".alex.components.exes.alex
140 haskell.snapshots."lts-13.18".alex.components.exes.alex
@@ -154,7 +161,7 @@ get a shell with some packages.
154Once you have a development shell, then you can begin configuring
161Once you have a development shell, then you can begin configuring
155Emacs to use it. The way I do it is:
162Emacs to use it. The way I do it is:
157−1. Run [lorri watch](https://github.com/target/lorri) to continuously
164+1. Run [lorri watch](https://github.com/target/lorri) to continously
158 build the shell environment and maintain GC roots.
165 build the shell environment and maintain GC roots.
1602. Use [emacs‑direnv](https://github.com/wbolster/emacs-direnv) to
1672. Use [emacs‑direnv](https://github.com/wbolster/emacs-direnv) to
@@ -172,40 +179,3 @@ Emacs to use it. The way I do it is:
1724. For [`haskell‑mode`](https://github.com/haskell/haskell-mode)
1794. For [`haskell‑mode`](https://github.com/haskell/haskell-mode)
173 interactive Haskell, set `haskell‑process‑type` to
180 interactive Haskell, set `haskell‑process‑type` to
174 `cabal‑new‑repl`.
181 `cabal‑new‑repl`.
178−It's sometimes useful to load [Haskell.nix][] in the REPL to explore
179−attrsets and try examples.
183−{ nixpkgs ? <nixpkgs> }:
185− haskell = import nixpkgs (import (builtins.fetchTarball https://github.com/input-output-hk/haskell.nix/archive/master.tar.gz) {}).nixpkgsArgs;
186− pkgNames = haskell.pkgs.lib.attrNames haskell.haskell-nix.snapshots."lts-13.18";
190−Load the example file:
193−$ nix repl '<nixpkgs>' example.nix
194−Welcome to Nix version 2.3pre6631_e58a7144. Type :? for help.
196−Loading '<nixpkgs>'...
197−Added 10403 variables.
199−Loading 'example.nix'...
202−nix-repl> lib.take 5 pkgNames
203−[ "ALUT" "ANum" "Allure" "Boolean" "BoundedChan" ]
208−Now that you have `nix-tools` and are able to import [Haskell.nix][],
209−you can continue to the next chapter.
211−[haskell.nix]: https://github.com/input-output-hk/haskell.nix
docs/user-guide/materialization.mdnew file+267
@@ -0,0 +1,267 @@
3+## What is materialization?
5+Capturing and storing the nix files for a project so that they do
6+not need to be built (or checked). This allows us to cache the input
7+of an IFD (import from derviation).
9+## Why use materialization?
11+Using functions like `cabalProject`, `stackProject` and `hackage-package`
12+results in a lot of dependencies (all the dependencies of nix-tools
15+* They can be slow to calculate (even if no work needs to be done it
16+ is not unusual for it to take 5 seconds per project).
18+* They can be slow to build (or download) on machines that do not
19+ yet have them in the nix store.
21+* Hydra does not show progress because it does not provide feedback
22+ until it has a list of jobs and the list of jobs cannot depends
23+ on the nix being present (although this is often blamed on IFD
24+ it would be the same if it wrote out JSON files and read them in)
26+## When is it ok to materialize?
28+* The nix is unlikely to change frequently (and when it does you
29+ are happy to manually update it).
31+* You are happy to script something to update the materialized
32+ nix files automatically.
33+* You are certain that the IFD you materialize is not `system`-dependent. If it was you'd
34+ obtain different nix expressions depending on which `system` the IFD was evaluated.
36+## How can we materialize the nix files?
38+Lets say we want to build `hlint`. We might start with an `hlint`
39+file that looks like this:
42+let inherit (import ./. {}) sources nixpkgsArgs;
43+ pkgs = import sources.nixpkgs-default nixpkgsArgs;
44+ hlint = pkgs.haskell-nix.hackage-package {
48+in hlint.components.exes.hlint
51+Building this may result in a lot of output, but if you build
52+it again it should give just:
56+trace: Using latest index state for hlint!
57+trace: Using index-state: 2020-04-15T00:00:00Z for hlint
58+/nix/store/rnfz66v7k8i38c8rsmchzsyqjrmrbdpk-hlint-2.2.11-exe-hlint
61+To materialize the nix files we need to take care to pin down the
62+inputs. For `cabalProject` and `hackage-package` this means
63+we must specify the `index-state` of hackage we want to use:
66+let inherit (import ./. {}) sources nixpkgsArgs;
67+ pkgs = import sources.nixpkgs-default nixpkgsArgs;
68+ hlint = pkgs.haskell-nix.hackage-package {
71+ index-state = "2020-04-15T00:00:00Z";
73+in hlint.components.exes.hlint
76+Now if we build again we get a hint telling use how to
77+calculate a suitable sha256 hash to turn the derivation
78+containing the nix files into a fixed output derivation:
82+trace: Using index-state: 2020-04-15T00:00:00Z for hlint
83+trace: Get `plan-sha256` with `nix-hash --base32 --type sha256 /nix/store/8z6p4237rin3c6c1lmjwshmj8rdqrhw2-hlint-plan-to-nix-pkgs/`
84+/nix/store/rnfz66v7k8i38c8rsmchzsyqjrmrbdpk-hlint-2.2.11-exe-hlint
86+$ nix-hash --base32 --type sha256 /nix/store/8z6p4237rin3c6c1lmjwshmj8rdqrhw2-hlint-plan-to-nix-pkgs/
87+02hasr27a994sml1fzf8swb716lm6lgixxr53y0gxkhw437xkck4
90+We can add the hash as `plan-sha256` or (`stack-sha256` for
94+let inherit (import ./. {}) sources nixpkgsArgs;
95+ pkgs = import sources.nixpkgs-default nixpkgsArgs;
96+ hlint = pkgs.haskell-nix.hackage-package {
99+ index-state = "2020-04-15T00:00:00Z";
100+ plan-sha256 = "02hasr27a994sml1fzf8swb716lm6lgixxr53y0gxkhw437xkck4";
102+in hlint.components.exes.hlint
105+Just adding the hash might help reuse of the cached nix, but nix will
106+still calculate all the dependencies (which can add seconds to
107+`nix-build` and `nix-shell` commands when no other work is needed)
108+and users who do not yet have the dependencies in their store will have
109+to wait while they are built or downloaded.
111+Running nix build again gives us a hint on what we can do next:
114+$ nix-build hlint.nix
115+trace: Using index-state: 2020-04-15T00:00:00Z for hlint
116+trace: To materialize, point `materialized` to a copy of /nix/store/kk047cqsjvbj4w8psv4l05abdcnyrqdc-hlint-plan-to-nix-pkgs
117+/nix/store/rnfz66v7k8i38c8rsmchzsyqjrmrbdpk-hlint-2.2.11-exe-hlint
120+To capture the nix we can do something like:
123+let inherit (import ./. {}) sources nixpkgsArgs;
124+ pkgs = import sources.nixpkgs-default nixpkgsArgs;
125+ hlint = pkgs.haskell-nix.hackage-package {
128+ index-state = "2020-04-15T00:00:00Z";
129+ plan-sha256 = "02hasr27a994sml1fzf8swb716lm6lgixxr53y0gxkhw437xkck4";
130+ materialized = ./hlint.materialized;
132+in hlint.components.exes.hlint
135+Now we can copy the nix files needed and build with:
138+$ cp -r /nix/store/8z6p4237rin3c6c1lmjwshmj8rdqrhw2-hlint-plan-to-nix-pkgs hlint.materialized
139+$ nix-build hlint.nix
140+/nix/store/rnfz66v7k8i38c8rsmchzsyqjrmrbdpk-hlint-2.2.11-exe-hlint
143+We may want to run `chmod -R +w hlint.materialized` as the files copied from the
144+store will be read only.
146+## How can we check `sha256` and `materialized` are up to date?
148+Let's pretend we had to go back to `hlint` version `2.2.10`.
149+We can tell haskell.nix to check the materialiazation either by:
151+* Removing the materialization files with `rm -rf hlint.materialized`
152+* Temporarily adding `checkMaterialization = true;`
154+If we choose to add the `checkMaterialization` flag you would have:
157+let inherit (import ./. {}) sources nixpkgsArgs;
158+ pkgs = import sources.nixpkgs-default nixpkgsArgs;
159+ hlint = pkgs.haskell-nix.hackage-package {
162+ index-state = "2020-04-15T00:00:00Z";
163+ plan-sha256 = "02hasr27a994sml1fzf8swb716lm6lgixxr53y0gxkhw437xkck4";
164+ materialized = ./hlint.materialized;
165+ checkMaterialization = true;
167+in hlint.components.exes.hlint
170+This will fail and report the details of what is wrong and how to fix it:
173+$ nix-build hlint.nix
177+Calculated hash for hlint-plan-to-nix-pkgs was not 02hasr27a994sml1fzf8swb716lm6lgixxr53y0gxkhw437xkck4. New hash is :
178+ plan-sha256 = "0zsi3wv92qax33ic4n5dfsqd1r9qam1k75za3c5jqgdxl3hy8vph";
179+Materialized nix used for hlint-plan-to-nix-pkgs incorrect. To fix run :
180+ rm -rf /Users/hamish/iohk/haskell.nix/hlint.materialized
181+ cp -r /nix/store/ywdhbx9rzzkfc60c5vzk7cins2hnvkgx-hlint-plan-to-nix-pkgs /Users/hamish/iohk/haskell.nix/hlint.materialized
182+ chmod -R +w /Users/hamish/iohk/haskell.nix/hlint.materialized
183+builder for '/nix/store/a5zmgfjfxahapw0q8hd2da5bg7knqvbx-hlint-plan-to-nix-pkgs.drv' failed with exit code 1
184+error: build of '/nix/store/a5zmgfjfxahapw0q8hd2da5bg7knqvbx-hlint-plan-to-nix-pkgs.drv' failed
185+(use '--show-trace' to show detailed location information)
188+Checking the materialization requires nix to do all the work that materialization
189+avoids. So while it might be tempting to leave `checkMaterialization = true` all
190+the time, we would be better off just removing `materialized` and `plan-sha256`.
192+## How can we update the nix files with a script?
194+There are versions of the functions (`cabalProject'`, `stackProject'`
195+and `hackage-project`) that also return the nix as `plan-nix` or
196+`stack-nix`. By calling one of these functions without the
197+hash and materialized nix we can find out what nix files should be.
201+let inherit (import ./. {}) sources nixpkgsArgs;
202+ pkgs = import sources.nixpkgs-default nixpkgsArgs;
203+ hlint = pkgs.haskell-nix.hackage-project {
206+ index-state = "2020-04-15T00:00:00Z";
212+$ nix-build hlint.nix -A plan-nix
213+trace: Using index-state: 2020-04-15T00:00:00Z for hlint
214+trace: Get `plan-sha256` with `nix-hash --base32 --type sha256 /nix/store/ywdhbx9rzzkfc60c5vzk7cins2hnvkgx-hlint-plan-to-nix-pkgs/`
215+/nix/store/ywdhbx9rzzkfc60c5vzk7cins2hnvkgx-hlint-plan-to-nix-pkgs
218+We can have the script copy `$(nix-build hlint.nix -A plan-nix --no-out-link)`
219+and use `nix-hash` to calculate the new value for `plan-sha256`.
221+## Can we skip making a copy and use `materialized = /nix/store/...`?
223+Yes and it gives us the same speed improvement, however:
225+* It does not help at all in `restricted-eval` mode (Hydra).
227+* Users will still wind up building or downloading the dependencies
228+ needed to build the nix fileds (if they do not have them).
230+For those reasons it might be best to make a copy instead
231+of using the `/nix/store/...` path directly.
233+If you really want to use the `/nix/store/...` path directly
234+you should gaurd against the path not existing as passing in
235+a non-existing path is now an error:
238+let inherit (import ./. {}) sources nixpkgsArgs;
239+ pkgs = import sources.nixpkgs-default nixpkgsArgs;
240+ hlintPlan = /nix/store/kk047cqsjvbj4w8psv4l05abdcnyrqdc-hlint-plan-to-nix-pkgs;
241+ hlint = pkgs.haskell-nix.hackage-package {
244+ index-state = "2020-04-15T00:00:00Z";
245+ plan-sha256 = "02hasr27a994sml1fzf8swb716lm6lgixxr53y0gxkhw437xkck4";
246+ materialized = if __pathExists hlintPlan then hlintPlan else null;
248+in hlint.components.exes.hlint
251+Running when no building is needed is still slow in restricted evaluation mode.
254+$ time nix-build --option restrict-eval true -I . --option allowed-uris "https://github.com/NixOS https://github.com/input-output-hk" hlint.nix --show-trace
255+trace: Using index-state: 2020-04-15T00:00:00Z for hlint
256+/nix/store/rnfz66v7k8i38c8rsmchzsyqjrmrbdpk-hlint-2.2.11-exe-hlint
261+$ time nix-build hlint.nix
262+/nix/store/rnfz66v7k8i38c8rsmchzsyqjrmrbdpk-hlint-2.2.11-exe-hlint
docs/user-guide/projects.mdnew file+84
@@ -0,0 +1,84 @@
1+# How to replace IFDs with intermediate nix files
3+We believe that imports from derivations (IFDs) provide tremendous
4+value in nix and the aversion towards them stems mostly from
5+poor tooling and ci support for them. We do not believe
6+that poor tooling or ci support should cripple nix capability
7+of abstraction. Hence haskell.nix makes excessive use of
10+We do note however that there are users who prefer to
11+have IFD-free expressions. For this group of users we
12+detail how to expand the IFD dependent high level functions
13+into their IFD free building blocks.
15+The general structure will be the same, independent of the use of
18+Let us assume for now that we have already generated a `pkgs.nix`
19+expression (see the links bellow). The following file then produces a package set:
24+ # Import the Haskell.nix library,
25+ pkgs = import <nixpkgs> (import (builtins.fetchTarball https://github.com/input-output-hk/haskell.nix/archive/master.tar.gz) {}).nixpkgsArgs;
27+ # Import the file you will create in the stack-to-nix or cabal-to-nix step.
28+ my-pkgs = import ./pkgs.nix;
30+ # Stack projects use this:
31+ pkgSet = pkgs.haskell-nix.mkStackPkgSet {
32+ stack-pkgs = my-pkgs;
34+ # these extras will provide additional packages
35+ # ontop of the package set. E.g. extra-deps
36+ # for stack packages. or local packages for
40+ # specific package overrides would go here
42+ # packages.cbors.package.ghcOptions = "-Werror";
43+ # packages.cbors.patches = [ ./one.patch ];
44+ # packages.cbors.flags.optimize-gmp = false;
45+ # It may be better to set flags in stack.yaml instead
46+ # (`stack-to-nix` will include them as defaults).
50+ # Cabal projects use this:
51+ pkgSet = pkgs.haskell-nix.mkCabalProjectPkgSet {
55+ # specific package overrides would go here
57+ # packages.cbors.package.ghcOptions = "-Werror";
58+ # packages.cbors.patches = [ ./one.patch ];
59+ # packages.cbors.flags.optimize-gmp = false;
60+ # It may be better to set flags in `cabal.project` instead
61+ # (`plan-to-nix` will include them as defaults).
65+in pkgSet.config.hsPkgs // { _config = pkgSet.config; }
68+With this setup you can then start building the components of
72+nix build -f default.nix $pkg.components.library
75+to build the library for `$pkg` or
78+nix build -f default.nix $pkg.components.exes.$exe
81+to build a specific executable. The same holds for test suites and benchmarks.
83+- [Generating a `pkgs.nix` for a Stack project](./stack-projects.md)
84+- [Generating a `pkgs.nix` for a Cabal project](./cabal-projects.md)
docs/tutorials/source-repository-hashes.md → docs/user-guide/source-repository-hashes.mdrenamed+17−18
@@ -1,14 +1,14 @@
1−# Handling git repositories in projects
1+# Source Repository Hashes
3Both `stack.yaml` and `cabal.project` files can contain references
3Both `stack.yaml` and `cabal.project` files can contain references
4to git repositories containing the version of a particular package
4to git repositories containing the version of a particular package
5that we wish to use. This is mostly handled automatically by
5that we wish to use. This is mostly handled automatically by
6`nix-tools` and `haskell.nix` however when we want to use a nix
6`nix-tools` and `haskell.nix` however when we want to use a nix
7system that is configured to use restricted mode (typically hydra)
7system that is configured to use restricted mode (typically hydra)
8−it will need additional hashes for the referenced repositories.
8+it will need an aditionaly hash.
10−When using `project`, `cabalProject` or `stackProject` functions
10+When using `cabalProject` or `stackProject` functions you can include
11−you can include the hash needed in a comment.
11+the hash needed in a comment.
13To calculate the hash use `nix-prefetch-git`:
13To calculate the hash use `nix-prefetch-git`:
@@ -24,9 +24,8 @@ $ nix-prefetch-git https://github.com/input-output-hk/haskell.nix.git bc01ebc05a
27−## Cabal.project
27+If you are using `cabalProject` add a `--sha256` comment to the
28−
28+`cabal.project` file:
29−Add a `--sha256` comment to the `cabal.project` file:
32source-repository-package
31source-repository-package
@@ -37,9 +36,8 @@ source-repository-package
37 --sha256: 003lm3pm024vhbfmii7xcdd9v2rczpflxf7gdl2pyxia7p014i8z
36 --sha256: 003lm3pm024vhbfmii7xcdd9v2rczpflxf7gdl2pyxia7p014i8z
40−## Stack
39+If you are using `stackProject` add a `# nix-sha256` comment to the
42−Add a `# nix-sha256` comment to the `stack.yaml` file:
45extra-deps:
43extra-deps:
@@ -50,14 +48,14 @@ extra-deps:
50 # nix-sha256: 003lm3pm024vhbfmii7xcdd9v2rczpflxf7gdl2pyxia7p014i8z
48 # nix-sha256: 003lm3pm024vhbfmii7xcdd9v2rczpflxf7gdl2pyxia7p014i8z
53−## Avoiding modifying cabal.project and stack.yaml
51+## lookupSha256
55−In some cases we cannot modify the `cabal.project` or `stack.yaml` file to add
53+In some cases we cannot modify the `cabal.project` file to add the
56−sha256 comments. As an alternative we can pass in a `sha256map`. For instance,
54+`--sha256` comments. As an alternative we can pass in a `lookupSha256`
57−pandoc includes a `cabal.project` file on hackage which includes a
55+function to get them. For instance pandoc includes a `cabal.project`
58−`source-repository-package` stanza for `pandoc-citeproc`:
56+file in hackage includes a `source-package-reference` to `pandoc-citeproc`:
61{ haskell-nix, testSrc } :
59{ haskell-nix, testSrc } :
63 pandoc = haskell-nix.hackage-package {
61 pandoc = haskell-nix.hackage-package {
@@ -66,9 +64,10 @@ let
66 index-state = "2020-04-15T00:00:00Z";
64 index-state = "2020-04-15T00:00:00Z";
67 # Function that returns a sha256 string by looking up the location
65 # Function that returns a sha256 string by looking up the location
68 # and tag in a nested attrset
66 # and tag in a nested attrset
69− sha256map =
67+ lookupSha256 = { location, tag, ... }:
70 { "https://github.com/jgm/pandoc-citeproc"."0.17"
68 { "https://github.com/jgm/pandoc-citeproc"."0.17"
71− = "0dxx8cp2xndpw3jwiawch2dkrkp15mil7pyx7dvd810pwc22pm2q"; };
69+ = "0dxx8cp2xndpw3jwiawch2dkrkp15mil7pyx7dvd810pwc22pm2q"; }
70+ ."${location}"."${tag}";
74 pandoc.components.exes.pandoc
73 pandoc.components.exes.pandoc
docs/user-guide/stack-projects.mdnew file+58
@@ -0,0 +1,58 @@
1+Here we will look into how to generate the `pkgs.nix` file for a
2+`stack.yaml` project. For the full integration see the
3+[previous page](./projects.md).
5+## Using `stack-to-nix`
7+With [nix-tools installed](../user-guide.md), we can simply run the
8+following command on a stack project:
11+stack-to-nix --output . --stack-yaml stack.yaml
14+This will produce a `pkgs.nix` file that looks like the following:
17+ resolver = "lts-12.17";
21+ "o-clock" = hackage.o-clock."0.1.1".revisions.default;
24+ my-package = ./my-package.nix;
31+This file contains the stackage resolver, as well as set of extra
32+packages. The extras specifies which `extra-deps` (here:
33+`o-clock-0.1.1`) we wanted to add over the stackage snapshot, and what
34+local packages we want (here: `my-package`).
36+## Creating the package set
38+Import the generated `pkgs.nix` and pass to
39+[`mkStackPkgSet`](../reference/library.md#mkstackpkgset) to
40+instantiate a package set.
45+ # Import the Haskell.nix library,
46+ haskellNix = import (builtins.fetchTarball https://github.com/input-output-hk/haskell.nix/archive/master.tar.gz) {};
47+ nixpkgs = import haskellNix.sources.nixpkgs-1909 haskellNix.nixpkgsArgs;
48+ haskell = nixpkgs.haskell-nix;
50+ # Instantiate a package set using the generated file.
51+ pkgSet = haskell.mkStackPkgSet {
52+ stack-pkgs = import ./pkgs.nix;
53+ pkg-def-overlays = [];
examples/Cabal-install-folder.diffnew file+41
@@ -0,0 +1,41 @@
1+diff --git a/Distribution/Simple/GHC.hs b/Distribution/Simple/GHC.hs
2+index 547776046..176e59111 100644
3+--- a/Distribution/Simple/GHC.hs
4++++ b/Distribution/Simple/GHC.hs
6+ {-# LANGUAGE FlexibleContexts #-}
7+ {-# LANGUAGE RankNTypes #-}
8+ {-# LANGUAGE TupleSections #-}
9++{-# LANGUAGE LambdaCase #-}
12+ -----------------------------------------------------------------------------
13+@@ -1755,13 +1756,27 @@ installExe verbosity lbi binDir buildPref
14+ let exeName' = unUnqualComponentName $ exeName exe
15+ exeFileName = exeTargetName (hostPlatform lbi) exe
16+ fixedExeBaseName = progprefix ++ exeName' ++ progsuffix
17+- installBinary dest = do
18++ exePath = buildPref </> exeName' </> exeFileName
19++ installBinary dest = doesFileExist exePath >>= \case
21+ installExecutableFile verbosity
22+ (buildPref </> exeName' </> exeFileName)
23+ (dest <.> exeExtension (hostPlatform lbi))
24+ when (stripExes lbi) $
25+ Strip.stripExe verbosity (hostPlatform lbi) (withPrograms lbi)
26+ (dest <.> exeExtension (hostPlatform lbi))
29++ -- The executable exists but is not a simple file.
30++ -- Deligate installation to the compiler
31++ runDbProgram verbosity ghcProgram (withPrograms lbi) $
32++ [ "--install-executable"
33++ , buildPref </> exeName' </> exeFileName
36++ case (stripExes lbi, lookupProgram stripProgram $ withPrograms lbi) of
37++ (True, Just strip) -> ["-strip-program", programPath strip]
39+ installBinary (binDir </> fixedExeBaseName)
41+ -- |Install foreign library for GHC.
examples/cardano-sl-args.nixnew file+150
@@ -0,0 +1,150 @@
1+let iohk-archive = name: hash: "https://github.com/input-output-hk/${name}/archive/${hash}.tar.gz";
3+ src = builtins.fetchTarball (iohk-archive "cardano-sl" "1a792d7cd0f0c93a0f0c28f66372bce3c3808dbd");
5+ "cardano-sl-crypto-test"
9+ "cardano-sl-infra-test"
11+ "cardano-sl-tools-post-mortem"
13+ "cardano-sl-core-test"
14+ "cardano-sl-util-test"
16+ "cardano-sl-script-runner"
18+ "cardano-sl-networking"
19+ "cardano-sl-explorer"
20+ "cardano-sl-chain-test"
22+ "cardano-sl-mnemonic"
23+ "cardano-sl-generator"
26+ "cardano-sl-node-ipc"
32+ "cardano-sl-binary-test"
38+ { name = "cardano-crypto";
39+ url = "https://github.com/input-output-hk/cardano-crypto";
40+ rev = "4590efa638397e952a51a8994b5543e4ea3c1ecd";
41+ sha256 = "0hl2n3bba5v2j0lmxhs7hs01z3aznh2bwf9cb434icq2g0bl8ms3"; }
42+ { name = "haskell-ip";
43+ cabal-file = "ip.cabal";
44+ url = "https://github.com/andrewthad/haskell-ip";
45+ rev = "9bb453139aa82cc973125091800422a523e1eb8f";
46+ sha256 = "199mfpbgca7rvwvwk2zsmcpibc0sk0ni7c5zlf4gk3cps8s85gyr"; }
47+ { name = "time-units";
48+ url = "https://github.com/serokell/time-units.git";
49+ rev = "6c3747c1ac794f952de996dd7ba8a2f6d63bf132";
50+ sha256 = "0psdr1if0rgnn24698x3583m0603rwd3sd7yb9whj03hskmkwpgs";
53+ url = "https://github.com/serokell/kademlia.git";
54+ rev = "7120bb4d28e708acd52dfd61d3dca7914fac7d7f";
55+ sha256 = "1k1wp9dwhzzqfivxc28vhxfqplnyh916crr7bhsiv829d6qifhw1";
57+ { name = "network-transport";
58+ url = "https://github.com/serokell/network-transport";
59+ rev = "018a50b9042c2115c3ec9c9fd5ca5f28737dd29c";
60+ sha256 = "0lqa26l2ikpq6a4s7qm9b2favx59w82i0wngakhfyax66fpixp8q";
62+ { name = "network-transport-tcp";
63+ url = "https://github.com/avieth/network-transport-tcp";
64+ rev = "2634e5e32178bb0456d800d133f8664321daa2ef";
65+ sha256 = "03shp9prflhgqzw7pymw1pq2q7s1wf46pyjm2csx8646snrhf35i";
67+ { name = "network-transport-inmemory";
68+ url = "https://github.com/avieth/network-transport-inmemory";
69+ rev = "5d8ff2b07b9df35cf61329a3d975e2c8cf95c12a";
70+ sha256 = "0ak64rks3lk3kk5wyndrrk2swmd84h9diribzix305xwz1jhjj9w";
72+ { name = "acid-state";
73+ url = "https://github.com/parsonsmatt/acid-state";
74+ rev = "a1b23e2056f134e53f705a694ab85deeecabec5c";
75+ sha256 = "0mgdk8252g7wbb0afyn21pcn3bwh4vainy3h2d0xsv4hlpgqgnw8";
77+ { name = "socket-io";
78+ url = "https://github.com/input-output-hk/engine.io";
79+ rev = "d3c55f51bb81cee7d0d551de930ce65fe7d76756";
80+ sha256 = "139c0yfnj57cpwg4k0am2rp35sh959394nvlb98011rjy68200qc";
81+ subdir = "socket-io";
83+ { name = "engine-io";
84+ url = "https://github.com/input-output-hk/engine.io";
85+ rev = "d3c55f51bb81cee7d0d551de930ce65fe7d76756";
86+ sha256 = "139c0yfnj57cpwg4k0am2rp35sh959394nvlb98011rjy68200qc";
87+ subdir = "engine-io";
89+ { name = "engine-io-wai";
90+ url = "https://github.com/input-output-hk/engine.io";
91+ rev = "d3c55f51bb81cee7d0d551de930ce65fe7d76756";
92+ sha256 = "139c0yfnj57cpwg4k0am2rp35sh959394nvlb98011rjy68200qc";
93+ subdir = "engine-io-wai";
95+ { name = "canonical-json";
96+ url = "https://github.com/well-typed/canonical-json.git";
97+ rev = "ddfe3593b80b5ceb88842bb7a6f2268df75d2c2f";
98+ sha256 = "02fzn1xskis1lc1pkz0j92v6ipd89ww0k2p3dvwpm3yap5dpnm7k";
101+ url = "https://github.com/corsis/clock.git";
102+ rev = "ef60bd51a3587a173adf565c33bf2886df6e3842";
103+ sha256 = "1r4n9imls483f7wd61fi1jk16z2k7w36gpx798sqidvwbnc831q1";
105+ { name = "rocksdb-haskell-ng";
106+ url = "https://github.com/input-output-hk/rocksdb-haskell-ng.git";
107+ rev = "49f501a082d745f3b880677220a29cafaa181452";
108+ sha256 = "02jvri8ik8jgrxwa6qmh3xcwqvm4s27iv3sxpjpny79nlhlxvfzp";
110+ { name = "log-warper";
111+ url = "https://github.com/input-output-hk/log-warper";
112+ rev = "5271ab6c33541b8155ca203e714875974ec116be";
113+ sha256 = "1h14004a8iwr8nw31pqq6kfdhfsyzzl8a50hrmj2acjqq6mbdl2m";
115+ { name = "universum";
116+ url = "https://github.com/input-output-hk/universum";
117+ rev = "15f7db758ff5a24b874de2247f6f7a4576562da5";
118+ sha256 = "127bs29zpjcc40777dv7figk05gd00b9ja57sp11w440qr5h72hk";
120+ { name = "serokell-util";
121+ url = "https://github.com/input-output-hk/serokell-util";
122+ rev = "457f1d149c6e238841f283a1faf7bc8fb021b27d";
123+ sha256 = "0llbryqna9p03db3ka4933vzf4jw1yxdbsf7cqi2pivsy1vp6kp0";
125+ { name = "inspector";
126+ url = "https://github.com/primetype/inspector.git";
127+ rev = "c975f4329365f0379c04358138e616fb96fb0b79";
128+ sha256 = "12q1v7a8kcw7qi4lws4j3mvxwfkhni6zmp870kmnkgbgwvrax9gs";
131+ # This is needed due to some deficiencies in stackage snapshots.
132+ # maybe we should make this part of some `stack-default-pkg-def-extras`?
133+ # We have similar logic in the snapshots.nix file to deal with this in
136+ # TODO: move this somewhere into stackProject
140+ "transformers" = (((hackage.transformers)."0.5.6.2").revisions).default;
141+ "process" = (((hackage.process)."1.6.5.0").revisions).default;
146+ "hsc2hs" = (((hackage.hsc2hs)."0.68.4").revisions).default;
examples/cardano-sl-mingw32.nixnew file+3
@@ -0,0 +1,3 @@
1+let inherit (import ../. {}) sources nixpkgsArgs;
2+ pkgs = import sources.nixpkgs-default (nixpkgsArgs // { crossSystem.config = "x86_64-pc-mingw32"; });
3+in (pkgs.haskell-nix.stackProject (import ./cardano-sl-args.nix)).cardano-sl.components.all
examples/cardano-sl.nixnew file+3
@@ -0,0 +1,3 @@
1+let inherit (import ../. {}) sources nixpkgsArgs;
2+ pkgs = import sources.nixpkgs-default nixpkgsArgs;
3+in (pkgs.haskell-nix.stackProject (import ./cardano-sl-args.nix)).cardano-sl.components.all
examples/cardano-wallet-args.nixnew file+103
@@ -0,0 +1,103 @@
1+let iohk-archive = name: hash: "https://github.com/input-output-hk/${name}/archive/${hash}.tar.gz";
2+ src = builtins.fetchTarball (iohk-archive "cardano-wallet" "1fbd206bf6b368f08d603db130648ebd4efcedbc");
3+ iohkLib = import (src + "/nix/iohk-common.nix") {};
4+ jmPkgs = import (src + "/nix/jormungandr.nix") { inherit iohkLib; };
11+ "cardano-wallet-http-bridge"
12+ "cardano-wallet-launcher"
13+ "cardano-wallet-test-utils"
14+ "cardano-wallet-core"
15+ "cardano-wallet-jormungandr"
18+ "cardano-wallet-core-integration"
20+ # wee need these, as they are referenced in the stack.yaml file; however we can't
21+ # fetch them at IFD time as they don't provide the sha256. Hence we use the cache-file
22+ # facility on stack-to-nix and pre-populate the cache file with the relevant hashes.
24+ { name = "cardano-crypto";
25+ url = "https://github.com/input-output-hk/cardano-crypto";
26+ rev = "3c5db489c71a4d70ee43f5f9b979fcde3c797f2a";
27+ sha256 = "0lss4x41m0ylhximqjc56ps0y3pag3x58wm480pzfa48lpk4gqpk"; }
28+ { name = "persistent";
29+ url = "https://github.com/input-output-hk/persistent";
30+ rev = "107787ecc4c8a112375493cd66574f788f950fce";
31+ sha256 = "1livmfslqzadir5sc523r111wrd14s5k2nmvsxayk45hx3nnngfb";
32+ subdir = "persistent"; }
33+ { name = "persistent-sqlite";
34+ url = "https://github.com/input-output-hk/persistent";
35+ rev = "107787ecc4c8a112375493cd66574f788f950fce";
36+ sha256 = "1livmfslqzadir5sc523r111wrd14s5k2nmvsxayk45hx3nnngfb";
37+ subdir = "persistent-sqlite"; }
38+ { name = "persistent-template";
39+ url = "https://github.com/input-output-hk/persistent";
40+ rev = "107787ecc4c8a112375493cd66574f788f950fce";
41+ sha256 = "1livmfslqzadir5sc523r111wrd14s5k2nmvsxayk45hx3nnngfb";
42+ subdir = "persistent-template"; }
43+ { name = "iohk-monitoring";
44+ url = "https://github.com/input-output-hk/iohk-monitoring-framework";
45+ rev = "bd31cd2f3922010ddb76bb869f29c4e63bb8001b";
46+ subdir = "iohk-monitoring";
47+ sha256 = "1dfk505qbpk6p3gcpxa31wmg98qvx9hlrxlf0khaj7hizf3b8b60"; }
48+ { name = "contra-tracer";
49+ url = "https://github.com/input-output-hk/iohk-monitoring-framework";
50+ rev = "bd31cd2f3922010ddb76bb869f29c4e63bb8001b";
51+ subdir = "contra-tracer";
52+ sha256 = "1dfk505qbpk6p3gcpxa31wmg98qvx9hlrxlf0khaj7hizf3b8b60"; }
54+ # This is needed due to some deficiencies in stackage snapshots.
55+ # maybe we should make this part of some `stack-default-pkg-def-extras`?
56+ # We have similar logic in the snapshots.nix file to deal with this in
59+ # TODO: move this somewhere into stackProject
63+ "hsc2hs" = (((hackage.hsc2hs)."0.68.4").revisions).default;
71+ packages.cardano-wallet-jormungandr.components.tests = {
72+ # Some tests want to write ~/.local/share/cardano-wallet
73+ integration.preBuild = "export HOME=`pwd`";
74+ # provide jormungandr command to test suites
75+ integration.build-tools = [
77+ jmPkgs.jormungandr-cli
79+ unit.build-tools = [ jmPkgs.jormungandr ];
82+ packages.cardano-wallet-core.components.tests.unit.preBuild = ''
83+ export SWAGGER_YAML=${src + "/specifications/api/swagger.yaml"}
87+ # Misc. build fixes for dependencies
89+ # Cut down iohk-monitoring deps
90+ packages.iohk-monitoring.flags = {
92+ disable-examples = true;
93+ disable-graylog = true;
95+ disable-prometheus = true;
96+ disable-systemd = true;
99+ # Katip has Win32 (>=2.3 && <2.6) constraint
100+ packages.katip.doExactConfig = true;
examples/cardano-wallet-ghcjs.nixnew file+39
@@ -0,0 +1,39 @@
1+let inherit (import ../. {}) sources nixpkgsArgs;
2+ pkgs = import sources.nixpkgs-default (nixpkgsArgs // { crossSystem.config = "js-unknown-ghcjs"; });
3+ Cabal = pkgs.buildPackages.haskell-nix.hackage-package {
4+ name = "Cabal"; version = "2.4.1.0";
6+ { packages.Cabal.patches = [ ./Cabal-install-folder.diff ]; }
9+# (haskell-nix.stackProject {
10+# src = ../cardano-wallet;
12+# ({config, ... }:{ packages.hello.package.setup-depends = [ Cabal ]; })
13+# ];}).cardano-wallet.components.all
14+(let stack-pkgs = import ../cardano-wallet/flags-test/pkgs.nix;
15+ in let pkg-set = pkgs.haskell-nix.mkStackPkgSet
16+ { inherit stack-pkgs;
17+ pkg-def-extras = [(hackage: {
19+ "transformers" = (((hackage.transformers)."0.5.6.2").revisions).default;
20+ "process" = (((hackage.process)."1.6.5.0").revisions).default;
21+ Win32 = hackage.Win32."2.8.3.0".revisions.default;
26+ "hsc2hs" = (((hackage.hsc2hs)."0.68.4").revisions).default;
30+ { packages.Cabal.patches = [ ./overlays/patches/Cabal/fix-data-dir.patch ]; }
31+ { packages.alex.package.setup-depends = [pkg-set.config.hsPkgs.Cabal]; }
32+ { packages.happy.package.setup-depends = [pkg-set.config.hsPkgs.Cabal]; }
33+ { doHaddock = false; }
35+ # ++ (args.modules or [])
36+ # ++ self.lib.optional (args ? ghc) { ghc.package = args.ghc; };
38+ in pkg-set.config.hsPkgs
39+).cardano-wallet.components.all
examples/cardano-wallet-mingw32.nixnew file+3
@@ -0,0 +1,3 @@
1+let inherit (import ../. {}) sources nixpkgsArgs;
2+ pkgs = import sources.nixpkgs-default (nixpkgsArgs // { crossSystem.config = "x86_64-pc-mingw32"; });
3+in (pkgs.haskell-nix.stackProject (import ./cardano-wallet-args.nix)).cardano-wallet.components.all
examples/cardano-wallet-rpi.nixnew file+39
@@ -0,0 +1,39 @@
1+let inherit (import ../. {}) sources nixpkgsArgs;
2+ pkgs = import sources.nixpkgs-default (nixpkgsArgs // { crossSystem.config = "armv6l-unknown-linux-gnueabihf"; });
3+ Cabal = pkgs.buildPackages.haskell-nix.hackage-package {
4+ name = "Cabal"; version = "2.4.1.0";
6+ { packages.Cabal.patches = [ ./Cabal-install-folder.diff ]; }
9+# (haskell-nix.stackProject {
10+# src = ../cardano-wallet;
12+# ({config, ... }:{ packages.hello.package.setup-depends = [ Cabal ]; })
13+# ];}).cardano-wallet.components.all
14+(let stack-pkgs = import ../cardano-wallet/flags-test/pkgs.nix;
15+ in let pkg-set = pkgs.haskell-nix.mkStackPkgSet
16+ { inherit stack-pkgs;
17+ pkg-def-extras = [(hackage: {
19+ "transformers" = (((hackage.transformers)."0.5.6.2").revisions).default;
20+ "process" = (((hackage.process)."1.6.5.0").revisions).default;
21+ Win32 = hackage.Win32."2.8.3.0".revisions.default;
26+ "hsc2hs" = (((hackage.hsc2hs)."0.68.4").revisions).default;
30+ { packages.Cabal.patches = [ ./overlays/patches/Cabal/fix-data-dir.patch ]; }
31+ { packages.alex.package.setup-depends = [pkg-set.config.hsPkgs.Cabal]; }
32+ { packages.happy.package.setup-depends = [pkg-set.config.hsPkgs.Cabal]; }
33+ { doHaddock = false; }
35+ # ++ (args.modules or [])
36+ # ++ self.lib.optional (args ? ghc) { ghc.package = args.ghc; };
38+ in pkg-set.config.hsPkgs
39+).cardano-wallet.components.all
examples/cardano-wallet.nixnew file+3
@@ -0,0 +1,3 @@
1+let inherit (import ../. {}) sources nixpkgsArgs;
2+ pkgs = import sources.nixpkgs-default nixpkgsArgs;
3+in (pkgs.haskell-nix.stackProject (import ./cardano-wallet-args.nix)).cardano-wallet.components.all
examples/plutus-args.nixnew file+74
@@ -0,0 +1,74 @@
1+let iohk-archive = name: hash: "https://github.com/input-output-hk/${name}/archive/${hash}.tar.gz";
3+ src = builtins.fetchTarball (iohk-archive "plutus" "0d76e98ab267d621ad15002b5f824cad71797754");
5+ "language-plutus-core"
6+ "plutus-core-interpreter"
13+ "marlowe-playground-server"
15+ "plutus-playground-server"
16+ "plutus-playground-lib"
26+ { name = "row-types";
27+ url = "https://github.com/target/row-types";
28+ rev = "1e8d5e084ffd46f6c7842826a1f62c60820885df";
29+ sha256 = "0ly5m4r8wkm8gdqyrqzsjfmp189yxsd4qp0zi3idrbgfaf45sk9k"; }
30+ { name = "purescript-bridge";
31+ url = "https://github.com/shmish111/purescript-bridge.git";
32+ rev = "0042602f8a195b1fe185138f9ccca02020b8dd62";
33+ sha256 = "1vl88g41f4vvgw9iyn7zd7i52qshpnk02z0y6czg4zy7wk3q12gz"; }
34+ { name = "servant-purescript";
35+ url = "https://github.com/shmish111/servant-purescript.git";
36+ rev = "ece5d1dad16a5731ac22040075615803796c7c21";
37+ sha256 = "1axcbsaym64q67hvjc7b3izd48cgqwi734l7f7m22jpdc80li5f6"; }
38+ { name = "cardano-crypto";
39+ url = "https://github.com/input-output-hk/cardano-crypto.git";
40+ rev = "f5cecb6e424cc84f85b6a3e1f803517bb7b4cfb1";
41+ sha256 = "1jyzai4sn9hi3p6r97h54f9a7an7vk38lwrbl4mds9zmdsw5f5ad"; }
43+ url = "https://github.com/michaelpj/unlit.git";
44+ rev = "9ca1112093c5ffd356fc99c7dafa080e686dd748";
45+ sha256 = "145sffn8gbdn6xp9q5b75yd3m46ql5bnc02arzmpfs6wgjslfhff"; }
46+ { name = "prometheus";
47+ url = "https://github.com/bitnomial/prometheus.git";
48+ rev = "69e4cefeb7d04d61a54cb0ae9fd57e2de134badb";
49+ sha256 = "0h836qp0ic587gfyfkj9a53p8rczja50sfy2y8ymx8wwkmq9zdgc"; }
51+ url = "https://github.com/shmish111/github.git";
52+ rev = "cc27b9de4d5d0939235fa9a8b418de3ea4807bab";
53+ sha256 = "0jx65x4c8s561nbxa0hv7mp8fvndfhs8i8gzxng7ym808n4n538i"; }
55+ # This is needed due to some deficiencies in stackage snapshots.
56+ # maybe we should make this part of some `stack-default-pkg-def-extras`?
57+ # We have similar logic in the snapshots.nix file to deal with this in
60+ # TODO: move this somewhere into stackProject
64+ "transformers" = (((hackage.transformers)."0.5.6.2").revisions).default;
65+ "process" = (((hackage.process)."1.6.5.0").revisions).default;
70+ "hsc2hs" = (((hackage.hsc2hs)."0.68.4").revisions).default;
examples/plutus-mingw32.nixnew file+3
@@ -0,0 +1,3 @@
1+let inherit (import ../. {}) sources nixpkgsArgs;
2+ pkgs = import sources.nixpkgs-default (nixpkgsArgs // { crossSystem.config = "x86_64-pc-mingw32"; });
3+in (pkgs.haskell-nix.stackProject (import ./plutus-args.nix)).language-plutus-core.components.all
examples/plutus.nixnew file+3
@@ -0,0 +1,3 @@
1+let inherit (import ../. {}) sources nixpkgsArgs;
2+ pkgs = import sources.nixpkgs-default nixpkgsArgs;
3+in (pkgs.haskell-nix.stackProject (import ./plutus-args.nix)).language-plutus-core.components.all
@@ -1,396 +0,0 @@
6− "lastModified": 1451647621,
7− "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=",
10− "rev": "9bc0996d412fef1787449d841277ef663ad9a915",
22− "lastModified": 1603716527,
23− "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=",
26− "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee",
39− "lastModified": 1640353650,
40− "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=",
43− "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd",
56− "lastModified": 1641652457,
57− "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=",
60− "rev": "f27667f8ec360c475027dcaee0138c937477b070",
73− "lastModified": 1608537748,
74− "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=",
75− "owner": "input-output-hk",
76− "repo": "cardano-shell",
77− "rev": "9392c75087cb9a3d453998f4230930dea3a95725",
81− "owner": "input-output-hk",
82− "repo": "cardano-shell",
88− "lastModified": 1644229661,
89− "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=",
91− "repo": "flake-utils",
92− "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797",
97− "repo": "flake-utils",
104− "lastModified": 1600920045,
105− "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=",
106− "owner": "input-output-hk",
108− "rev": "95713a6ecce4551240da7c96b6176f980af75cae",
112− "owner": "input-output-hk",
113− "ref": "release/8.6.5-iohk",
121− "lastModified": 1659402819,
122− "narHash": "sha256-1ghmulyIk+obGnyFeouVHBQXxUHMBmgCIRazLfEoT34=",
123− "owner": "input-output-hk",
124− "repo": "hackage.nix",
125− "rev": "2f6f97ca3db96f91eea674ef46f4a0785d1e9d9c",
129− "owner": "input-output-hk",
130− "repo": "hackage.nix",
137− "lastModified": 1607498076,
138− "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=",
139− "owner": "sevanspowell",
140− "repo": "hpc-coveralls",
141− "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430",
145− "owner": "sevanspowell",
146− "repo": "hpc-coveralls",
160− "lastModified": 1646878427,
161− "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=",
164− "rev": "28b682b85b7efc5cf7974065792a1f22203a5927",
175− "lastModified": 1633514407,
176− "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=",
177− "owner": "kristapsdz",
179− "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8",
183− "owner": "kristapsdz",
190− "lowdown-src": "lowdown-src",
191− "nixpkgs": "nixpkgs",
192− "nixpkgs-regression": "nixpkgs-regression"
195− "lastModified": 1643066034,
196− "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=",
199− "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62",
212− "lastModified": 1658968505,
213− "narHash": "sha256-UnbQ/Ig/23e9hUdDOBwYHwHgHmQawZ2uazpJ8DLIJgE=",
214− "owner": "input-output-hk",
215− "repo": "nix-tools",
216− "rev": "8a754bdcf20b20e116409c2341cf69065d083053",
220− "owner": "input-output-hk",
221− "repo": "nix-tools",
227− "lastModified": 1632864508,
228− "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=",
231− "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234",
236− "ref": "nixos-21.05-small",
242− "lastModified": 1620055814,
243− "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=",
246− "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205",
251− "ref": "nixpkgs-20.03-darwin",
258− "lastModified": 1655034179,
259− "narHash": "sha256-rf1/7AbzuYDw6+8Xvvf3PtEOygymLBrFsFxvext5ZjI=",
262− "rev": "046ee4af7a9f016a364f8f78eeaa356ba524ac31",
267− "ref": "nixpkgs-21.05-darwin",
274− "lastModified": 1656782578,
275− "narHash": "sha256-1eMCBEqJplPotTo/SZ/t5HU6Sf2I8qKlZi9MX7jv9fw=",
278− "rev": "573603b7fdb9feb0eb8efc16ee18a015c667ab1b",
283− "ref": "nixpkgs-21.11-darwin",
290− "lastModified": 1657876628,
291− "narHash": "sha256-URmf0O2cQ/3heg2DJOeLyU/JmfVMqG4X5t9crQXMaeY=",
294− "rev": "549d82bdd40f760a438c3c3497c1c61160f3de55",
299− "ref": "nixpkgs-22.05-darwin",
304− "nixpkgs-regression": {
306− "lastModified": 1643052045,
307− "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=",
310− "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2",
315− "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2",
319− "nixpkgs-unstable": {
321− "lastModified": 1657888067,
322− "narHash": "sha256-GnwJoFBTPfW3+mz7QEeJEEQ9OMHZOiIJ/qDhZxrlKh8=",
325− "rev": "65fae659e31098ca4ac825a6fef26d890aaf3f4e",
330− "ref": "nixpkgs-unstable",
338− "lastModified": 1631092763,
339− "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=",
340− "owner": "angerman",
341− "repo": "old-ghc-nix",
342− "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8",
346− "owner": "angerman",
348− "repo": "old-ghc-nix",
355− "cabal-32": "cabal-32",
356− "cabal-34": "cabal-34",
357− "cabal-36": "cabal-36",
358− "cardano-shell": "cardano-shell",
359− "flake-utils": "flake-utils",
360− "ghc-8.6.5-iohk": "ghc-8.6.5-iohk",
361− "hackage": "hackage",
362− "hpc-coveralls": "hpc-coveralls",
364− "nix-tools": "nix-tools",
368− "nixpkgs-2003": "nixpkgs-2003",
369− "nixpkgs-2105": "nixpkgs-2105",
370− "nixpkgs-2111": "nixpkgs-2111",
371− "nixpkgs-2205": "nixpkgs-2205",
372− "nixpkgs-unstable": "nixpkgs-unstable",
373− "old-ghc-nix": "old-ghc-nix",
374− "stackage": "stackage"
380− "lastModified": 1659402917,
381− "narHash": "sha256-zRDOtN4A2KmfzmZiqqxOAIw1YVPhnoIaszKKd+qCEcQ=",
382− "owner": "input-output-hk",
383− "repo": "stackage.nix",
384− "rev": "778df3c4b35eac853d57fac7bafc7c9f2dde917f",
388− "owner": "input-output-hk",
389− "repo": "stackage.nix",
@@ -1,148 +1,28 @@
2 description = "Alternative Haskell Infrastructure for Nixpkgs";
2 description = "Alternative Haskell Infrastructure for Nixpkgs";
4− inputs = {
4+ edition = 201909;
5− nixpkgs.follows = "nixpkgs-unstable";
6− nixpkgs-2003 = { url = "github:NixOS/nixpkgs/nixpkgs-20.03-darwin"; };
7− nixpkgs-2105 = { url = "github:NixOS/nixpkgs/nixpkgs-21.05-darwin"; };
8− nixpkgs-2111 = { url = "github:NixOS/nixpkgs/nixpkgs-21.11-darwin"; };
9− nixpkgs-2205 = { url = "github:NixOS/nixpkgs/nixpkgs-22.05-darwin"; };
10− nixpkgs-unstable = { url = "github:NixOS/nixpkgs/nixpkgs-unstable"; };
11− flake-utils = { url = "github:numtide/flake-utils"; };
14− url = "github:input-output-hk/hackage.nix";
18− url = "github:input-output-hk/stackage.nix";
22− url = "github:haskell/cabal/3.2";
26− url = "github:haskell/cabal/3.4";
30− url = "github:haskell/cabal/3.6";
34− url = "github:input-output-hk/cardano-shell";
39− owner = "input-output-hk";
41− ref = "release/8.6.5-iohk";
45− url = "github:sevanspowell/hpc-coveralls";
49− url = "github:input-output-hk/nix-tools";
53− url = "github:angerman/old-ghc-nix/master";
57− url = "github:phadej/HTTP";
62− outputs = { self, nixpkgs, nixpkgs-unstable, nixpkgs-2105, nixpkgs-2111, nixpkgs-2205, flake-utils, ... }@inputs:
63− let compiler = "ghc924";
64− config = import ./config.nix;
67− overlay = self.overlays.combined;
68− overlays = import ./overlays { sources = inputs; };
72− overlays = [ self.overlay ];
77− overlaysOverrideable = import ./overlays;
6+ outputs = { self }: {
78− # Compatibility with old default.nix
7+ # Using the eval-on-build version here as the plan is that
79− compat = { checkMaterialization ?
8+ # `builtins.currentSystem` will not be supported in flakes.
80− false # Allows us to easily switch on materialization checking
9+ # https://github.com/NixOS/rfcs/pull/49/files#diff-a5a138ca225433534de8d260f225fe31R429
81− , system, sourcesOverride ? { }, ... }@args: rec {
10+ overlay = self.overlays.combined-eval-on-build;
82− sources = inputs // sourcesOverride;
11+ overlays = import ./overlays;
83− allOverlays = import ./overlays (args // { inherit sources; });
12+ config = import ./config.nix;
84− inherit config;
13+ sources = import ./nixpkgs;
85− # We are overriding 'overlays' and 'nixpkgsArgs' from the
14+ nixpkgsArgs = {
86− # flake outputs so that we can incorporate the args passed
15+ inherit (self) config;
87− # to the compat layer (e.g. sourcesOverride).
16+ overlays = [ self.overlay ];
88− overlays = [ allOverlays.combined ]
17+ };
89− ++ (if checkMaterialization == true then
18+ legacyPackages = let
90− [
19+ genAttrs = lst: f:
91− (final: prev: {
20+ builtins.listToAttrs (map (name: {
92− haskell-nix = prev.haskell-nix // {
21+ inherit name;
93− checkMaterialization = true;
22+ value = f name;
95− })
24+ in genAttrs [ "x86_64-linux" "x86_64-darwin" ] (system:
96− ]
25+ import self.sources.nixpkgs-default
97− else
26+ (self.nixpkgsArgs // { localSystem = { inherit system; }; }));
100− inherit config overlays;
102− pkgs = import nixpkgs
103− (nixpkgsArgs // { localSystem = { inherit system; }; });
104− pkgs-2105 = import nixpkgs-2105
105− (nixpkgsArgs // { localSystem = { inherit system; }; });
106− pkgs-2111 = import nixpkgs-2111
107− (nixpkgsArgs // { localSystem = { inherit system; }; });
108− pkgs-2205 = import nixpkgs-2205
109− (nixpkgsArgs // { localSystem = { inherit system; }; });
110− pkgs-unstable = import nixpkgs-unstable
111− (nixpkgsArgs // { localSystem = { inherit system; }; });
112− hix = import ./hix/default.nix { inherit pkgs; };
116− # Note: `nix flake check` evaluates outputs for all platforms, and haskell.nix
117− # uses IFD heavily, you have to have the ability to build for all platforms
118− # supported by haskell.nix, e.g. with remote builders, in order to check this flake.
119− # If you want to run the tests for just your platform, run `./test/tests.sh` or
120− # `nix-build -A checks.$PLATFORM`
121− } // flake-utils.lib.eachSystem [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin" ] (system: rec {
122− legacyPackages = (self.internal.compat { inherit system; }).pkgs;
123− legacyPackagesUnstable = (self.internal.compat { inherit system; }).pkgs-unstable;
125− # FIXME: Currently `nix flake check` requires `--impure` because coverage-golden
126− # (and maybe other tests) import projects that use builtins.currentSystem
127− checks = builtins.listToAttrs (map (pkg: {
130− }) (nixpkgs.lib.collect nixpkgs.lib.isDerivation (import ./test rec {
131− haskellNix = self.internal.compat { inherit system; };
132− compiler-nix-name = compiler;
133− pkgs = haskellNix.pkgs;
135− # Exposed so that buildkite can check that `allow-import-from-derivation=false` works for core of haskell.nix
136− roots = legacyPackagesUnstable.haskell-nix.roots compiler;
138− devShell = with self.legacyPackages.${system};
143− haskell-nix.compiler.${compiler}
144− haskell-nix.nix-tools.${compiler}
@@ -1,10 +1,7 @@
2 "url": "https://github.com/input-output-hk/hackage.nix",
2 "url": "https://github.com/input-output-hk/hackage.nix",
3− "rev": "9bdefa51c864bbef48a2758b05b4b568f0ded62b",
3+ "rev": "f520fe11e3c28c500bf7b255d3c9902970ac0da7",
4− "date": "2021-08-06T01:11:48+00:00",
4+ "date": "2020-06-09T01:14:39+00:00",
5− "path": "/nix/store/isypgnv4qa5398z6vjc3fi620l4y87c4-hackage.nix-9bdefa5",
5+ "sha256": "1bg0i0b13537hz9zfbdfmnhgc6yi101id4gjh58hiaysvxa58rv4",
6− "sha256": "0pm3m864wwgf76isjwb8244xh8xykc94b5az6zb1h38q30s9xjji",
6+ "fetchSubmodules": false
7− "fetchSubmodules": false,
hix/default.nixdeleted−43
@@ -1,43 +0,0 @@
3− args = '' --arg userDefaults "$HOME/.config/hix/hix.conf" --arg src ./.'';
4− # Use HIX_ROOT to override the version of hix used when developing new hix features.
5− # See docs/dev/hix.md for details.
6− hixProject = "\${HIX_ROOT:-${./..}}/hix/project.nix";
10− (pkgs.writeScriptBin "hix-shell" ''
11− nix-shell ${hixProject} ${args} -A shell "$@"
13− (pkgs.writeScriptBin "hix-build" ''
14− nix-build ${hixProject} ${args} "$@"
16− (pkgs.writeScriptBin "hix-instantiate" ''
17− nix-instantiate ${hixProject} ${args} "$@"
19− (pkgs.writeScriptBin "hix-env" ''
20− nix-env -f ${hixProject} ${args} "$@"
22− (pkgs.writeScriptBin "hix" ''
27− nix-env -iA hix -f https://github.com/input-output-hk/haskell.nix/tarball/master
29− build|dump-path|eval|log|path-info|run|search|show-derivation|sign-paths|verify|why-depends)
30− nix $cmd -f ${hixProject} ${args} "$@"
33− nix $cmd ${hixProject} ${args} "$@"
42− project = import ./project.nix;
hix/project.nixdeleted−77
@@ -1,77 +0,0 @@
6−, checkMaterialization ? null
7−, compiler-nix-name ? null
11− inherit ((lib.evalModules {
13− (import ../modules/project-common.nix)
14− (import ../modules/stack-project.nix)
15− (import ../modules/cabal-project.nix)
16− (import ../modules/project.nix)
17− (import ../modules/hix-project.nix)
20− { _module.args.pkgs = {}; }
23− inherit (import ./.. {}) sources;
24− lib = import (sources.nixpkgs-unstable + "/lib");
26− builtins.listToAttrs (
29− if commandArgs.${name} == null || name == "src" || name == "userDefaults" || name == "inNixShell"
31− else [{ inherit name; value = commandArgs.${name}; }]
32− ) (builtins.attrNames commandArgs));
34− nixpkgsPin = "nixpkgs-unstable";
36− importDefaults = src:
37− if src == null || !(__pathExists src)
40− userDefaults = importDefaults (commandArgs.userDefaults or null);
41− projectDefaults = importDefaults (toString (src.origSrcSubDir or src) + "/nix/hix.nix");
42− inherit ((lib.evalModules {
44− (import ../modules/project-common.nix)
45− (import ../modules/stack-project.nix)
46− (import ../modules/cabal-project.nix)
47− (import ../modules/project.nix)
48− (import ../modules/hix-project.nix)
52− ({config, pkgs, ...}: {
53− haskellNix = import ./.. { inherit checkMaterialization; };
54− nixpkgsPin = "nixpkgs-unstable";
55− nixpkgs = config.haskellNix.sources.${config.nixpkgsPin};
56− nixpkgsArgs = config.haskellNix.nixpkgsArgs // {
57− overlays = config.haskellNix.nixpkgsArgs.overlays ++ config.overlays;
59− _module.args.pkgs = import config.nixpkgs config.nixpkgsArgs;
60− project = pkgs.haskell-nix.project [
61− (import ../modules/hix-project.nix)
67− if __pathExists (toString (src.origSrcSubDir or src) + "/.git")
68− then config.evalPackages.haskell-nix.haskellLib.cleanGit {
76− }).config) project shell;
lib/cabal-licenses.nix+20−18
@@ -1,21 +1,23 @@
1−pkgs:
1+lib: with lib.licenses;
2−let licenses = import spdx/licenses.nix pkgs;
2+{ BSD-3-Clause = bsd3;
3−in licenses // {
3+ BSD-2-Clause = bsd2;
7+ "LGPL-2.1-only" = lgpl21;
8+ "LGPL-3.0-only" = lgpl3;
9+ "GPL-2.0-only" = gpl2;
10+ "GPL-2.0-or-later" = gpl2Plus;
11+ "GPL-3.0-only" = gpl3;
12+ "AGPL-3.0-only" = agpl3;
13+ "AGPL-3.0-or-later" = agpl3Plus;
14+ "Apache-2.0" = asl20;
5− LicenseRef-PublicDomain = {
16+ LicenseRef-Apache = "Apache";
6− spdxId = "LicenseRef-PublicDomain";
17+ LicenseRef-GPL = "GPL";
7− shortName = "Public Domain";
18+ LicenseRef-LGPL = "LGPL";
8− fullName = "This work is dedicated to the Public Domain";
19+ LicenseRef-NCSA = ncsa;
9− url = "https://wikipedia.org/wiki/Public_domain";
20+ LicenseRef-PublicDomain = publicDomain;
10− free = true;
21+ LicenseRef-OtherLicense = null;
12− LicenseRef-OtherLicense = {
13− spdxId = "LicenseRef-OtherLicense";
14− shortName = "Other License";
15− fullName = "Unidentified Other License";
16− url = "https://spdx.github.io/spdx-spec/appendix-IV-SPDX-license-expressions/";
17− # Not setting `free` here. The license may or may not be `free`.
18− # See https://github.com/input-output-hk/haskell.nix/pull/1006
20 NONE = null;
22 NONE = null;
lib/cabal-os-arch-comp.nix+1−1
@@ -43,7 +43,7 @@
43 isPPC64 = false;
43 isPPC64 = false;
44 isSparc = false;
44 isSparc = false;
45 isArm = false;
45 isArm = false;
46− isAarch64= false;
46+ isAArch64= false;
47 isMips = false;
47 isMips = false;
48 isSH = false;
48 isSH = false;
49 isIA64 = false;
49 isIA64 = false;
lib/cabal-project-parser.nixdeleted−213
@@ -1,213 +0,0 @@
4− let n = pkgs.lib.lists.foldr (x: acc: if pred x then acc + 1 else 0) 0 list;
5− in { fst = pkgs.lib.lists.take n list; snd = pkgs.lib.lists.drop n list; };
7− # Look for a index-state: field in the cabal.project file
8− parseIndexState = rawCabalProject:
10− indexState = pkgs.lib.lists.concatLists (
11− pkgs.lib.lists.filter (l: l != null)
12− (builtins.map (l: builtins.match "^index-state: *(.*)" l)
13− (pkgs.lib.splitString "\n" rawCabalProject)));
15− pkgs.lib.lists.head (indexState ++ [ null ]);
17− # Remove the indentation of the first line from all the lines
18− unindent = blockLines: (pkgs.lib.foldl' ({matchString, out}: s:
20− m = builtins.match matchString s;
24− matchString = "(${builtins.head m})(.*)";
25− out = out ++ [(builtins.elemAt m 1)];
28− inherit matchString out;
30− ) { matchString = "( *)(.*)"; out = []; } blockLines).out;
32− # Strip comments except `--sha256`
33− stripComments = blockLines: pkgs.lib.filter (s: s != "") (
34− pkgs.lib.foldl' (out: s:
36− m = builtins.match "(.*)--.*" s;
38− if !(pkgs.lib.hasPrefix "--sha256" s) && m != null
39− then out ++ [(builtins.head m)]
44− # Parse lines of a source-repository-package block
45− parseBlockLines = blockLines: (pkgs.lib.foldl' ({name, attrs}: s:
47− # Look for a new attribute name
48− pair = builtins.match "([^ :]*): *(.*)" s;
50− # Function to build the next parse state when the attribute name is known
51− nextState = name: value: {
53− # Support multi line attributes by appending the value to the named attribute
57− then attrs.${name} + " " + value
64− # First line of a new attribute
65− nextState (builtins.head pair) (builtins.elemAt pair 1)
68− then nextState name s # Append another line to the current attribute
69− else __trace "Expected attribute but found `${s}`" { inherit name attrs; }
70− ) { name = null; attrs = {}; } (stripComments (unindent blockLines))).attrs;
72− # Gets data for all the repositories to fetch
74− # --shar256: 003lm3pm0000hbfmii7xcdd9v20000flxf7gdl2pyxia7p014i8z
75− # will be trated like a field and returned here
76− # (used in call-cabal-project-to-nix.nix to create a fixed-output derivation)
77− extractSourceRepoPackageData = cabalProjectFileName: sha256map: repo: {
80− sha256 = repo."--sha256" or (
82− then sha256map."${repo.location}"."${repo.tag}"
84− subdirs = if repo ? subdir
85− then pkgs.lib.filter (x: x != "") (pkgs.lib.splitString " " repo.subdir)
89− # Parse a source-repository-package and return data of `type: git` repositories
90− # See tests/unit.nix for examples of input and output.
91− parseSourceRepositoryPackageBlock = cabalProjectFileName: sha256map: block:
93− x = span (pkgs.lib.strings.hasPrefix " ") (pkgs.lib.splitString "\n" block);
94− attrs = parseBlockLines x.fst;
96− if attrs."type" or "" != "git"
99− otherText = "\nsource-repository-package\n" + block;
102− sourceRepo = extractSourceRepoPackageData cabalProjectFileName sha256map attrs;
103− otherText = pkgs.lib.strings.concatStringsSep "\n" x.snd;
106− parseSourceRepositoryPackages = cabalProjectFileName: sha256map: source-repo-override: projectFile:
108− blocks = pkgs.lib.splitString "\nsource-repository-package\n" ("\n" + projectFile);
109− initialText = pkgs.lib.lists.take 1 blocks;
110− repoBlocks = builtins.map (parseSourceRepositoryPackageBlock cabalProjectFileName sha256map) (pkgs.lib.lists.drop 1 blocks);
111− overrideSourceRepo = sourceRepo: (source-repo-override.${sourceRepo.url} or (pkgs.lib.id)) sourceRepo;
113− sourceRepos = pkgs.lib.lists.map (block: overrideSourceRepo block.sourceRepo) repoBlocks;
114− otherText = pkgs.lib.strings.concatStringsSep "\n" (
116− ++ (builtins.map (x: x.otherText) repoBlocks));
119− # Parse and replace repository
120− # This works in a similar way to the `source-repository-package` but we are
121− # able to simply replace the `repository` blocks with local `file:/nix/store` ones.
122− # This works because `cabal configure` does not include any of the `/nix/sore/`
123− # paths in the `plan.json` (so materialized plan-nix will still work as expeced).
124− # See tests/unit.nix for examples of input and output.
125− parseRepositoryBlock = evalPackages: cabalProjectFileName: sha256map: inputMap: cabal-install: nix-tools: block:
127− lines = pkgs.lib.splitString "\n" block;
128− # The first line will contain the repository name.
129− x = span (pkgs.lib.strings.hasPrefix " ") (__tail lines);
130− attrs = parseBlockLines x.fst;
131− sha256 = attrs."--sha256" or (
132− if sha256map != null
133− then sha256map."${attrs.url}"
136− # This is `some-name` from the `repository some-name` line in the `cabal.project` file.
137− name = __head lines;
138− # The $HOME/.cabal/packages/${name} after running `cabal v2-update` to download the repository
139− repoContents = if inputMap ? ${attrs.url}
140− # If there is an input use it to make `file:` url and create a suitable `.cabal/packages/${name}` directory
141− then evalPackages.runCommand name ({
142− nativeBuildInputs = [ cabal-install ];
143− preferLocalBuild = true;
146− mkdir -p $HOME/.cabal/packages/${name}
147− cat <<EOF > $HOME/.cabal/config
149− url: file:${inputMap.${attrs.url}}
150− ${pkgs.lib.optionalString (attrs ? secure) "secure: ${attrs.secure}"}
151− ${pkgs.lib.optionalString (attrs ? root-keys) "root-keys: ${attrs.root-keys}"}
152− ${pkgs.lib.optionalString (attrs ? key-threshold) "key-threshold: ${attrs.key-threshold}"}
155− cabal v2-update ${name}
156− cp -r $HOME/.cabal/packages/${name} $out
158− else evalPackages.runCommand name ({
159− nativeBuildInputs = [ cabal-install evalPackages.curl nix-tools ];
160− LOCALE_ARCHIVE = pkgs.lib.optionalString (evalPackages.stdenv.buildPlatform.libc == "glibc") "${evalPackages.glibcLocales}/lib/locale/locale-archive";
161− LANG = "en_US.UTF-8";
162− preferLocalBuild = true;
163− } // pkgs.lib.optionalAttrs (sha256 != null) {
164− outputHashMode = "recursive";
165− outputHashAlgo = "sha256";
166− outputHash = sha256;
169− mkdir -p $HOME/.cabal/packages/${name}
170− cat <<EOF > $HOME/.cabal/config
173− ${pkgs.lib.optionalString (attrs ? secure) "secure: ${attrs.secure}"}
174− ${pkgs.lib.optionalString (attrs ? root-keys) "root-keys: ${attrs.root-keys}"}
175− ${pkgs.lib.optionalString (attrs ? key-threshold) "key-threshold: ${attrs.key-threshold}"}
178− export SSL_CERT_FILE=${evalPackages.cacert}/etc/ssl/certs/ca-bundle.crt
179− cabal v2-update ${name}
180− cp -r $HOME/.cabal/packages/${name} $out
182− # Output of hackage-to-nix
184− evalPackages.runCommand ("hackage-to-nix-" + name) {
185− nativeBuildInputs = [ cabal-install evalPackages.curl nix-tools ];
186− LOCALE_ARCHIVE = pkgs.lib.optionalString (evalPackages.stdenv.buildPlatform.libc == "glibc") "${evalPackages.glibcLocales}/lib/locale/locale-archive";
187− LANG = "en_US.UTF-8";
188− preferLocalBuild = true;
191− hackage-to-nix $out ${repoContents}/01-index.tar ${attrs.url}
193− # Directory to `lndir` when constructing a suitable $HOME/.cabal dir
195− ${name} = repoContents;
199− parseRepositories = evalPackages: cabalProjectFileName: sha256map: inputMap: cabal-install: nix-tools: projectFile:
201− # This will leave the name of repository in the first line of each block
202− blocks = pkgs.lib.splitString "\nrepository " ("\n" + projectFile);
203− repoBlocks = builtins.map (parseRepositoryBlock evalPackages cabalProjectFileName sha256map inputMap cabal-install nix-tools) (pkgs.lib.lists.drop 1 blocks);
205− extra-hackages = pkgs.lib.lists.map (block: block.hackage) repoBlocks;
206− repos = pkgs.lib.lists.foldl' (x: block: x // block.repo) {} repoBlocks;
210− inherit parseIndexState parseSourceRepositoryPackages parseRepositories
211− # These are only exposed for tests
212− parseSourceRepositoryPackageBlock parseRepositoryBlock;
lib/call-cabal-project-to-nix.nix+166−358
@@ -1,4 +1,4 @@
1−{ pkgs, runCommand, cacert, index-state-hashes, haskellLib }@defaults:
1+{ dotCabal, pkgs, runCommand, nix-tools, cabal-install, ghc, hpack, symlinkJoin, cacert, index-state-hashes, haskellLib, materialize }@defaults:
2let readIfExists = src: fileName:
2let readIfExists = src: fileName:
3 let origSrcDir = src.origSrcSubDir or src;
3 let origSrcDir = src.origSrcSubDir or src;
@@ -8,7 +8,6 @@ let readIfExists = src: fileName:
9{ name ? src.name or null # optional name for better error messages
9{ name ? src.name or null # optional name for better error messages
11−, compiler-nix-name # The name of the ghc compiler to use eg. "ghc884"
12, index-state ? null # Hackage index-state, eg. "2019-10-10T00:00:00Z"
11, index-state ? null # Hackage index-state, eg. "2019-10-10T00:00:00Z"
13, index-sha256 ? null # The hash of the truncated hackage index-state
12, index-sha256 ? null # The hash of the truncated hackage index-state
14, plan-sha256 ? null # The hash of the plan-to-nix output (makes the plan-to-nix step a fixed output derivation)
13, plan-sha256 ? null # The hash of the plan-to-nix output (makes the plan-to-nix step a fixed output derivation)
@@ -18,71 +17,30 @@ in
18, cabalProject ? readIfExists src cabalProjectFileName
17, cabalProject ? readIfExists src cabalProjectFileName
19, cabalProjectLocal ? readIfExists src "${cabalProjectFileName}.local"
18, cabalProjectLocal ? readIfExists src "${cabalProjectFileName}.local"
20, cabalProjectFreeze ? readIfExists src "${cabalProjectFileName}.freeze"
19, cabalProjectFreeze ? readIfExists src "${cabalProjectFileName}.freeze"
21−, caller ? "callCabalProjectToNix" # Name of the calling function for better warning messages
20+, compiler-nix-name ? null # Nix name of the ghc compiler as a string eg. "ghc883"
22, ghc ? null # Deprecated in favour of `compiler-nix-name`
21, ghc ? null # Deprecated in favour of `compiler-nix-name`
23, ghcOverride ? null # Used when we need to set ghc explicitly during bootstrapping
22, ghcOverride ? null # Used when we need to set ghc explicitly during bootstrapping
23+, nix-tools ? defaults.nix-tools
24+, hpack ? defaults.hpack
25+, cabal-install ? defaults.cabal-install
24, configureArgs ? "" # Extra arguments to pass to `cabal v2-configure`.
26, configureArgs ? "" # Extra arguments to pass to `cabal v2-configure`.
25 # `--enable-tests --enable-benchmarks` are included by default.
27 # `--enable-tests --enable-benchmarks` are included by default.
26 # If the tests and benchmarks are not needed and they
28 # If the tests and benchmarks are not needed and they
27− # cause the wrong plan to be chosen, then we can use
29+ # causes the wrong plan to be choosen, then we can use
28 # `configureArgs = "--disable-tests --disable-benchmarks";`
30 # `configureArgs = "--disable-tests --disable-benchmarks";`
29−, sha256map ? null
31+, lookupSha256 ? _: null
30− # An alternative to adding `--sha256` comments into the
32+ # Use the as an alternative to adding `--sha256` comments into the
31 # cabal.project file:
33 # cabal.project file:
32− # sha256map =
34+ # lookupSha256 = repo:
33− # { # For a `source-repository-package` use the `location` and `tag` as the key
35+ # { "https://github.com/jgm/pandoc-citeproc"."0.17"
34− # "https://github.com/jgm/pandoc-citeproc"."0.17"
36+ # = "0dxx8cp2xndpw3jwiawch2dkrkp15mil7pyx7dvd810pwc22pm2q"; }
35− # = "0dxx8cp2xndpw3jwiawch2dkrkp15mil7pyx7dvd810pwc22pm2q";
37+ # ."${repo.location}"."${repo.tag}";
36− # # For a `repository` use the `url` as the key
38+, extra-hackage-tarballs ? []
37− # "https://raw.githubusercontent.com/input-output-hk/hackage-overlay-ghcjs/bfc363b9f879c360e0a0460ec0c18ec87222ec32"
38− # = "sha256-g9xGgJqYmiczjxjQ5JOiK5KUUps+9+nlNGI/0SpSOpg=";
41− # An alternative to providing a `sha256` handy for flakes
42− # cabal.project file:
43− # inputs.pandoc-citeproc.url = "github:jgm/pandoc-citeproc/0.17";
44− # inputs.pandoc-citeproc.flake = false;
47− # inputMap."https://github.com/jgm/pandoc-citeproc" = inputs.inputs.pandoc-citeproc;
48−, extra-hackage-tarballs ? {}
49−, source-repo-override ? {} # Cabal seems to behave incoherently when
50− # two source-repository-package entries
51− # provide the same packages, making it
52− # impossible to override cabal.project
53− # with e.g. a cabal.project.local. In CI,
54− # we want to be able to test against the
55− # latest versions of various dependencies.
57− # This argument is a map from url to
58− # a function taking the existing repoData
59− # and returning the new repoData in its
62− # { "https://github.com/input-output-hk/plutus-apps" = orig: orig // { subdirs = (orig.subdirs or [ "." ]) ++ [ "foo" ]; }; }
64− # would result in the "foo" subdirectory of
65− # any plutus-apps input being used for a
72− inherit (evalPackages.haskell-nix) materialize dotCabal;
74− # These defaults are hear rather than in modules/cabal-project.nix to make them
75− # lazy enough to avoid infinite recursion issues.
76− # Using null as the default also improves performance as they are not forced by the
77− # nix module system for `nix-tools-unchecked` and `cabal-install-unchecked`.
78− nix-tools = if args.nix-tools or null != null
80− else evalPackages.haskell-nix.nix-tools-unchecked.${compiler-nix-name};
81− cabal-install = if args.cabal-install or null != null
82− then args.cabal-install
83− else evalPackages.haskell-nix.cabal-install-unchecked.${compiler-nix-name};
84 forName = pkgs.lib.optionalString (name != null) (" for " + name);
43 forName = pkgs.lib.optionalString (name != null) (" for " + name);
85− nameAndSuffix = suffix: if name == null then suffix else name + "-" + suffix;
88 if ghcOverride != null
46 if ghcOverride != null
@@ -91,10 +49,11 @@ let
91 if ghc != null
49 if ghc != null
92 then __trace ("WARNING: A `ghc` argument was passed" + forName
50 then __trace ("WARNING: A `ghc` argument was passed" + forName
93 + " this has been deprecated in favour of `compiler-nix-name`. "
51 + " this has been deprecated in favour of `compiler-nix-name`. "
94− + "Using `ghc` will break cross compilation setups, as haskell.nix cannot "
52+ + "Using `ghc` will break cross compilation setups, as haskell.nix can not"
95 + "pick the correct `ghc` package from the respective buildPackages. "
53 + "pick the correct `ghc` package from the respective buildPackages. "
96− + "For example, use `compiler-nix-name = \"ghc865\";` for GHC 8.6.5.") ghc
54+ + "For example use `compiler-nix-name = \"ghc865\";` for ghc 8.6.5") ghc
56+ if compiler-nix-name != null
98 # Do note that `pkgs = final.buildPackages` in the `overlays/haskell.nix`
57 # Do note that `pkgs = final.buildPackages` in the `overlays/haskell.nix`
99 # call to this file. And thus `pkgs` here is the proper `buildPackages`
58 # call to this file. And thus `pkgs` here is the proper `buildPackages`
100 # set and we do not need, nor should pick the compiler from another level
59 # set and we do not need, nor should pick the compiler from another level
@@ -103,7 +62,8 @@ let
104 # > The option `packages.Win32.package.identifier.name' is used but not defined.
63 # > The option `packages.Win32.package.identifier.name' is used but not defined.
106− pkgs.haskell-nix.compiler."${compiler-nix-name}";
65+ then pkgs.haskell-nix.compiler."${compiler-nix-name}"
109 assert (if ghc'.isHaskellNixCompiler or false then true
69 assert (if ghc'.isHaskellNixCompiler or false then true
@@ -114,13 +74,15 @@ let
114 ghc = ghc';
74 ghc = ghc';
115 subDir' = src.origSubDir or "";
75 subDir' = src.origSubDir or "";
116 subDir = pkgs.lib.strings.removePrefix "/" subDir';
76 subDir = pkgs.lib.strings.removePrefix "/" subDir';
117−
77+ maybeCleanedSource =
118− cleanedSource = haskellLib.cleanSourceWith {
78+ if haskellLib.canCleanSource src
119− name = if name != null then "${name}-root-cabal-files" else "source-root-cabal-files";
79+ then (haskellLib.cleanSourceWith {
120− src = src.origSrc or src;
80+ name = src.name + "-root-cabal-files";
121− filter = path: type: (!(src ? filter) || src.filter path type) && (
81+ src = src.origSrc;
122− type == "directory" ||
82+ filter = path: type: src.filter path type && (
123− pkgs.lib.any (i: (pkgs.lib.hasSuffix i path)) [ ".cabal" "package.yaml" ]); };
83+ type == "directory" ||
84+ pkgs.lib.any (i: (pkgs.lib.hasSuffix i path)) [ ".cabal" "package.yaml" ]); })
85+ else src.origSrc or src;
125 # Using origSrcSubDir bypasses any cleanSourceWith so that it will work when
87 # Using origSrcSubDir bypasses any cleanSourceWith so that it will work when
126 # access to the store is restricted. If origSrc was already in the store
88 # access to the store is restricted. If origSrc was already in the store
@@ -138,168 +100,137 @@ let
139 else null;
101 else null;
141− cabalProjectIndexState =
103+ # Look for a index-state: field in the cabal.project file
142− if rawCabalProject != null
104+ parseIndexState = rawCabalProject:
143− then pkgs.haskell-nix.haskellLib.parseIndexState rawCabalProject
105+ let
144− else null;
106+ indexState = pkgs.lib.lists.concatLists (
107+ pkgs.lib.lists.filter (l: l != null)
108+ (builtins.map (l: builtins.match "^index-state: *(.*)" l)
109+ (pkgs.lib.splitString "\n" rawCabalProject)));
111+ pkgs.lib.lists.head (indexState ++ [ null ]);
146− index-state-found =
113+ index-state-found = if index-state != null
147− if index-state != null
148 then index-state
114 then index-state
149− else if cabalProjectIndexState != null
150− then cabalProjectIndexState
152− let latest-index-state = pkgs.lib.last (builtins.attrNames index-state-hashes);
153− in builtins.trace ("No index state specified" + (if name == null then "" else " for " + name) + ", using the latest index state that we know about (${latest-index-state})!") latest-index-state;
155− index-state-pinned = index-state != null || cabalProjectIndexState != null;
158− assert (if index-state-found == null
159− then throw "No index state passed and none found in ${cabalProjectFileName}" else true);
161− assert (if index-sha256 == null && !(pkgs.lib.hasSuffix "Z" index-state-found)
162− then throw "Index state found was ${index-state-found} and no `index-sha256` was provided. "
163− "The index hash lookup code requires zulu time zone (ends in a Z)" else true);
166− # If a hash was not specified find a suitable cached index state to
167− # use that will contain all the packages we need. By using the
168− # first one after the desired index-state we can avoid recalculating
169− # when new index-state-hashes are added.
170− # See https://github.com/input-output-hk/haskell.nix/issues/672
171− cached-index-state = if index-sha256 != null
172− then index-state-found
174− let
116+ let cabalProjectIndexState = if rawCabalProject != null
175− suitable-index-states =
117+ then parseIndexState rawCabalProject
176− builtins.filter
118+ else null;
177− (s: s >= index-state-found) # This compare is why we need zulu time
178− (builtins.attrNames index-state-hashes);
180− if builtins.length suitable-index-states == 0
120+ if cabalProjectIndexState != null
181− then index-state-found
121+ then cabalProjectIndexState
182− else pkgs.lib.head suitable-index-states;
122+ else builtins.trace ("Using latest index state" + (if name == null then "" else " for " + name) + "!")
123+ (pkgs.lib.last (builtins.attrNames index-state-hashes));
184 # Lookup hash for the index state we found
125 # Lookup hash for the index state we found
185 index-sha256-found = if index-sha256 != null
126 index-sha256-found = if index-sha256 != null
186 then index-sha256
127 then index-sha256
187− else index-state-hashes.${cached-index-state} or null;
128+ else index-state-hashes.${index-state-found} or null;
131+ assert (if index-state-found == null
132+ then throw "No index state passed and none found in ${cabalProjectFileName}" else true);
190 assert (if index-sha256-found == null
133 assert (if index-sha256-found == null
191− then throw "Unknown index-state ${index-state-found}, the latest index-state I know about is ${pkgs.lib.last (builtins.attrNames index-state-hashes)}. You may need to update to a newer hackage.nix." else true);
134+ then throw "provided sha256 for index-state ${index-state-found} is null!" else true);
194− # Deal with source-repository-packages in a way that will work in
137+ span = pred: list:
195− # restricted-eval mode (as long as a sha256 is included).
138+ let n = pkgs.lib.lists.foldr (x: acc: if pred x then acc + 1 else 0) 0 list;
196− # Replace source-repository-package blocks that have a sha256 with
139+ in { fst = pkgs.lib.lists.take n list; snd = pkgs.lib.lists.drop n list; };
197− # packages: block containing nix store paths of the fetched repos.
140+
141+ # Parse lines of a source-repository-package block
142+ parseBlockLines = blockLines: builtins.listToAttrs (builtins.concatMap (s:
143+ let pair = builtins.match " *([^:]*): *(.*)" s;
144+ in pkgs.lib.optional (pair != null) (pkgs.lib.attrsets.nameValuePair
145+ (builtins.head pair)
146+ (builtins.elemAt pair 1))) blockLines);
199 hashPath = path:
148 hashPath = path:
200 builtins.readFile (pkgs.runCommand "hash-path" { preferLocalBuild = true; }
149 builtins.readFile (pkgs.runCommand "hash-path" { preferLocalBuild = true; }
201 "echo -n $(${pkgs.nix}/bin/nix-hash --type sha256 --base32 ${path}) > $out");
150 "echo -n $(${pkgs.nix}/bin/nix-hash --type sha256 --base32 ${path}) > $out");
203− replaceSourceRepos = projectFile:
152+ # Use pkgs.fetchgit if we have a sha256. Add comment like this
153+ # --shar256: 003lm3pm0000hbfmii7xcdd9v20000flxf7gdl2pyxia7p014i8z
154+ # otherwise use __fetchGit.
156+ let sha256 = repo."--sha256" or (lookupSha256 repo);
157+ in (if sha256 != null
158+ then pkgs.evalPackages.fetchgit {
159+ url = repo.location;
164+ let drv = builtins.fetchGit {
165+ url = repo.location;
168+ in __trace "WARNING: No sha256 found for source-repository-package ${repo.location} ${repo.tag} download may fail in restricted mode (hydra)"
169+ (__trace "Consider adding `--sha256: ${hashPath drv}` to the ${cabalProjectFileName} file or passing in a lookupSha256 argument"
171+ ) + (if repo.subdir or "" == "" then "" else "/" + repo.subdir);
173+ # Parse a source-repository-package and fetch it if has `type: git`
205− fetchPackageRepo = fetchgit: repoData:
176+ x = span (pkgs.lib.strings.hasPrefix " ") (pkgs.lib.splitString "\n" block);
206− let
177+ attrs = parseBlockLines x.fst;
208− if inputMap ? "${repoData.url}/${repoData.ref}"
179+ if attrs."type" or "" != "git"
209− then inputMap."${repoData.url}/${repoData.ref}"
180+ then {
210− else if inputMap ? ${repoData.url}
181+ sourceRepo = [];
211− then
182+ otherText = "\nsource-repository-package\n" + block;
212− (if inputMap.${repoData.url}.rev != repoData.ref
183+ }
213− then throw "${inputMap.${repoData.url}.rev} may not match ${repoData.ref} for ${repoData.url} use \"${repoData.url}/${repoData.ref}\" as the inputMap key if ${repoData.ref} is a branch or tag that points to ${inputMap.${repoData.url}.rev}."
184+ else {
214− else inputMap.${repoData.url})
185+ sourceRepo = [ (fetchRepo attrs) ];
215− else if repoData.sha256 != null
186+ otherText = pkgs.lib.strings.concatStringsSep "\n" x.snd;
216− then fetchgit { inherit (repoData) url sha256; rev = repoData.ref; }
218− let drv = builtins.fetchGit { inherit (repoData) url ref; };
219− in __trace "WARNING: No sha256 found for source-repository-package ${repoData.url} ${repoData.ref} download may fail in restricted mode (hydra)"
220− (__trace "Consider adding `--sha256: ${hashPath drv}` to the ${cabalProjectFileName} file or passing in a sha256map argument"
223− # Download the source-repository-package commit and add it to a minimal git
224− # repository that `cabal` will be able to access from a non fixed output derivation.
225− location = evalPackages.runCommand "source-repository-package" {
226− nativeBuildInputs = [ evalPackages.rsync evalPackages.gitMinimal ];
229− rsync -a --prune-empty-dirs "${fetched}/" "$out/"
234− GIT_COMMITTER_NAME='No One' GIT_COMMITTER_EMAIL= git commit -m "Minimal Repo For Haskell.Nix" --author 'No One <>'
236− inherit (repoData) subdirs;
241− # Parse the `source-repository-package` blocks
189+ # Deal with source-repository-packages in a way that will work in
242− sourceRepoPackageResult = pkgs.haskell-nix.haskellLib.parseSourceRepositoryPackages
190+ # restricted-eval mode (as long as a sha256 is included).
243− cabalProjectFileName sha256map source-repo-override projectFile;
191+ # Replace source-repository-package blocks that have a sha256 with
244−
192+ # packages: block containing nix sotre paths of the fetched repos.
245− # Parse the `repository` blocks
193+ replaceSoureRepos = projectFile:
246− repoResult = pkgs.haskell-nix.haskellLib.parseRepositories
194+ let
247− evalPackages cabalProjectFileName sha256map inputMap cabal-install nix-tools sourceRepoPackageResult.otherText;
195+ blocks = pkgs.lib.splitString "\nsource-repository-package\n" projectFile;
248−
196+ initialText = pkgs.lib.lists.take 1 blocks;
249− # we need the repository content twice:
197+ repoBlocks = builtins.map parseBlock (pkgs.lib.lists.drop 1 blocks);
250− # * at eval time (below to build the fixed project file)
198+ sourceRepos = pkgs.lib.lists.concatMap (x: x.sourceRepo) repoBlocks;
251− # Here we want to use evalPackages.fetchgit, so one can calculate
199+ otherText = pkgs.evalPackages.writeText "cabal.project" (pkgs.lib.strings.concatStringsSep "\n" (
252− # the build plan for any target without a remote builder
200+ initialText
253− # * at built time (passed out)
201+ ++ (builtins.map (x: x.otherText) repoBlocks)));
254− # Here we want to use plain pkgs.fetchgit, which is what a builder
255− # on the target system would use, so that the derivation is unaffected
256− # and, say, a linux release build job can identify the derivation
257− # as built by a darwin builder, and fetch it from a cache
258− sourceReposEval = builtins.map (fetchPackageRepo evalPackages.fetchgit) sourceRepoPackageResult.sourceRepos;
259− sourceReposBuild = builtins.map (x: (fetchPackageRepo pkgs.fetchgit x).fetched) sourceRepoPackageResult.sourceRepos;
261− sourceRepos = sourceReposBuild;
203+ inherit sourceRepos;
262− inherit (repoResult) repos extra-hackages;
263 makeFixedProjectFile = ''
204 makeFixedProjectFile = ''
264− cp -f ${evalPackages.writeText "cabal.project" sourceRepoPackageResult.otherText} ./cabal.project
205+ cp -f ${otherText} ./cabal.project
266− pkgs.lib.optionalString (builtins.length sourceReposEval != 0) (''
267 chmod +w -R ./cabal.project
206 chmod +w -R ./cabal.project
268− # The newline here is important in case cabal.project does not have one at the end
207+ echo "packages:" >> ./cabal.project
269− echo >> ./cabal.project
208+ mkdir -p ./.source-repository-packages
271− # Add replacement `source-repository-package` blocks pointing to the minimal git repos
210+ ( pkgs.lib.strings.concatStrings (
272− ( pkgs.lib.strings.concatMapStrings (f: ''
273− echo "source-repository-package" >> ./cabal.project
274− echo " type: git" >> ./cabal.project
275− echo " location: file://${f.location}" >> ./cabal.project
276− echo " subdir: ${builtins.concatStringsSep " " f.subdirs}" >> ./cabal.project
277− echo " tag: ${f.tag}" >> ./cabal.project
280− # This will be used to replace refernces to the minimal git repos with just the index
281− # of the repo. The index will be used in lib/import-and-filter-project.nix to
282− # lookup the correct repository in `sourceReposBuild`. This avoids having
283− # `/nix/store` paths in the `plan-nix` output so that it can be materialized safely.
284− replaceLocations = pkgs.lib.strings.concatStrings (
285 pkgs.lib.lists.zipListsWith (n: f: ''
211 pkgs.lib.lists.zipListsWith (n: f: ''
286− (cd $out${subDir'}
212+ mkdir -p ./.source-repository-packages/${builtins.toString n}
287− substituteInPlace $tmp${subDir'}/dist-newstyle/cache/plan.json --replace file://${f.location} ${builtins.toString n}
213+ rsync -a --prune-empty-dirs \
288− for a in $(grep -rl file://${f.location} .plan.nix/*.nix); do
214+ --include '*/' --include '*.cabal' --include 'package.yaml' \
289− substituteInPlace $a --replace file://${f.location} ${builtins.toString n}
215+ --exclude '*' \
290− done)
216+ "${f}/" "./.source-repository-packages/${builtins.toString n}/"
217+ echo " ./.source-repository-packages/${builtins.toString n}" >> ./cabal.project
292− (pkgs.lib.lists.range 0 ((builtins.length sourceReposEval) - 1))
219+ (pkgs.lib.lists.range 0 ((builtins.length fixedProject.sourceRepos) - 1))
293− sourceReposEval
220+ sourceRepos
297 fixedProject =
225 fixedProject =
298 if rawCabalProject == null
226 if rawCabalProject == null
299− then { sourceRepos = []; repos = {}; extra-hackages = []; makeFixedProjectFile = ""; replaceLocations = ""; }
227+ then {
300− else replaceSourceRepos rawCabalProject;
228+ sourceRepos = [];
229+ makeFixedProjectFile = "";
231+ else replaceSoureRepos rawCabalProject;
302− # The use of the actual GHC can cause significant problems:
233+ # The use of a the actual GHC can cause significant problems:
303 # * For hydra to assemble a list of jobs from `components.tests` it must
234 # * For hydra to assemble a list of jobs from `components.tests` it must
304 # first have GHC that will be used. If a patch has been applied to the
235 # first have GHC that will be used. If a patch has been applied to the
305 # GHC to be used it must be rebuilt before the list of jobs can be assembled.
236 # GHC to be used it must be rebuilt before the list of jobs can be assembled.
@@ -317,21 +248,14 @@ let
317 # The solution here is to capture the GHC outputs that `cabal v2-configure`
248 # The solution here is to capture the GHC outputs that `cabal v2-configure`
318 # requests and materialize it so that the real GHC is only needed
249 # requests and materialize it so that the real GHC is only needed
319 # when `checkMaterialization` is set.
250 # when `checkMaterialization` is set.
320− dummy-ghc-data =
251+ dummy-ghc-data = pkgs.haskell-nix.materialize ({
321− let
252+ sha256 = null;
322− materialized = ../materialized/dummy-ghc + "/${ghc.targetPrefix}${ghc.name}-${pkgs.stdenv.buildPlatform.system}";
253+ sha256Arg = "sha256";
323− in pkgs.haskell-nix.materialize ({
254+ materialized = ../materialized/dummy-ghc + "/${ghc.targetPrefix}${ghc.name}-${pkgs.stdenv.buildPlatform.system}";
324− sha256 = null;
255+ reasonNotSafe = null;
325− sha256Arg = "sha256";
256+ } // pkgs.lib.optionalAttrs (checkMaterialization != null) {
326− materialized = if __pathExists materialized
257+ inherit checkMaterialization;
327− then materialized
258+ }) (
328− else __trace ("WARNING: No materialized dummy-ghc-data for "
329− + "${ghc.targetPrefix}${ghc.name}-${pkgs.stdenv.buildPlatform.system}.")
331− reasonNotSafe = null;
332− } // pkgs.lib.optionalAttrs (checkMaterialization != null) {
333− inherit checkMaterialization;
335 runCommand ("dummy-data-" + ghc.name) {
259 runCommand ("dummy-data-" + ghc.name) {
336 nativeBuildInputs = [ ghc ];
260 nativeBuildInputs = [ ghc ];
@@ -342,11 +266,6 @@ let
342 ${ghc.targetPrefix}ghc --info | grep -v /nix/store > $out/ghc/info
266 ${ghc.targetPrefix}ghc --info | grep -v /nix/store > $out/ghc/info
343 ${ghc.targetPrefix}ghc --supported-languages > $out/ghc/supported-languages
267 ${ghc.targetPrefix}ghc --supported-languages > $out/ghc/supported-languages
344 ${ghc.targetPrefix}ghc-pkg --version > $out/ghc-pkg/version
268 ${ghc.targetPrefix}ghc-pkg --version > $out/ghc-pkg/version
345− ${pkgs.lib.optionalString (ghc.targetPrefix == "js-unknown-ghcjs-") ''
346− ${ghc.targetPrefix}ghc --numeric-ghc-version > $out/ghc/numeric-ghc-version
347− ${ghc.targetPrefix}ghc --numeric-ghcjs-version > $out/ghc/numeric-ghcjs-version
348− ${ghc.targetPrefix}ghc-pkg --numeric-ghcjs-version > $out/ghc-pkg/numeric-ghcjs-version
350 # The order of the `ghc-pkg dump` output seems to be non
269 # The order of the `ghc-pkg dump` output seems to be non
351 # deterministic so we need to sort it so that it is always
270 # deterministic so we need to sort it so that it is always
352 # the same.
271 # the same.
@@ -368,12 +287,12 @@ let
370 # Dummy `ghc` that uses the captured output
289 # Dummy `ghc` that uses the captured output
371− dummy-ghc = evalPackages.writeTextFile {
290+ dummy-ghc = pkgs.evalPackages.writeTextFile {
372 name = "dummy-" + ghc.name;
291 name = "dummy-" + ghc.name;
373 executable = true;
292 executable = true;
374 destination = "/bin/${ghc.targetPrefix}ghc";
293 destination = "/bin/${ghc.targetPrefix}ghc";
375 text = ''
294 text = ''
376− #!${evalPackages.runtimeShell}
295+ #!${pkgs.evalPackages.runtimeShell}
377 case "$*" in
296 case "$*" in
378 --version*)
297 --version*)
379 cat ${dummy-ghc-data}/ghc/version
298 cat ${dummy-ghc-data}/ghc/version
@@ -381,14 +300,6 @@ let
381 --numeric-version*)
300 --numeric-version*)
382 cat ${dummy-ghc-data}/ghc/numeric-version
301 cat ${dummy-ghc-data}/ghc/numeric-version
384− ${pkgs.lib.optionalString (ghc.targetPrefix == "js-unknown-ghcjs-") ''
385− --numeric-ghc-version*)
386− cat ${dummy-ghc-data}/ghc/numeric-ghc-version
388− --numeric-ghcjs-version*)
389− cat ${dummy-ghc-data}/ghc/numeric-ghcjs-version
392 --supported-languages*)
303 --supported-languages*)
393 cat ${dummy-ghc-data}/ghc/supported-languages
304 cat ${dummy-ghc-data}/ghc/supported-languages
@@ -411,21 +322,16 @@ let
413 # Dummy `ghc-pkg` that uses the captured output
324 # Dummy `ghc-pkg` that uses the captured output
414− dummy-ghc-pkg = evalPackages.writeTextFile {
325+ dummy-ghc-pkg = pkgs.evalPackages.writeTextFile {
415 name = "dummy-pkg-" + ghc.name;
326 name = "dummy-pkg-" + ghc.name;
416 executable = true;
327 executable = true;
417 destination = "/bin/${ghc.targetPrefix}ghc-pkg";
328 destination = "/bin/${ghc.targetPrefix}ghc-pkg";
418 text = ''
329 text = ''
419− #!${evalPackages.runtimeShell}
330+ #!${pkgs.evalPackages.runtimeShell}
420 case "$*" in
331 case "$*" in
421 --version)
332 --version)
422 cat ${dummy-ghc-data}/ghc-pkg/version
333 cat ${dummy-ghc-data}/ghc-pkg/version
424− ${pkgs.lib.optionalString (ghc.targetPrefix == "js-unknown-ghcjs-") ''
425− --numeric-ghcjs-version)
426− cat ${dummy-ghc-data}/ghc-pkg/numeric-ghcjs-version
429 'dump --global -v0')
335 'dump --global -v0')
430 cat ${dummy-ghc-data}/ghc-pkg/dump-global
336 cat ${dummy-ghc-data}/ghc-pkg/dump-global
@@ -444,131 +350,59 @@ let
444 inherit materialized;
350 inherit materialized;
445 sha256 = plan-sha256;
351 sha256 = plan-sha256;
446 sha256Arg = "plan-sha256";
352 sha256Arg = "plan-sha256";
447− this = "project.plan-nix" + (if name != null then " for ${name}" else "");
448 # Before pinning stuff down we need an index state to use
353 # Before pinning stuff down we need an index state to use
449 reasonNotSafe =
354 reasonNotSafe =
450− if !index-state-pinned
355+ if index-state == null
451− then "index-state is not pinned by an argument or the cabal project file"
356+ then "index-state is not set"
452 else null;
357 else null;
453 } // pkgs.lib.optionalAttrs (checkMaterialization != null) {
358 } // pkgs.lib.optionalAttrs (checkMaterialization != null) {
454 inherit checkMaterialization;
359 inherit checkMaterialization;
455− }) (evalPackages.runCommand (nameAndSuffix "plan-to-nix-pkgs") {
360+ }) (pkgs.evalPackages.runCommand (if name == null then "plan-to-nix-pkgs" else name + "-plan-to-nix-pkgs") {
456− nativeBuildInputs = [ nix-tools dummy-ghc dummy-ghc-pkg cabal-install evalPackages.rsync evalPackages.gitMinimal ];
361+ nativeBuildInputs = [ nix-tools dummy-ghc dummy-ghc-pkg hpack cabal-install pkgs.evalPackages.rsync ];
457 # Needed or stack-to-nix will die on unicode inputs
362 # Needed or stack-to-nix will die on unicode inputs
458− LOCALE_ARCHIVE = pkgs.lib.optionalString (evalPackages.stdenv.buildPlatform.libc == "glibc") "${evalPackages.glibcLocales}/lib/locale/locale-archive";
363+ LOCALE_ARCHIVE = pkgs.lib.optionalString (pkgs.stdenv.hostPlatform.libc == "glibc") "${pkgs.glibcLocales}/lib/locale/locale-archive";
459 LANG = "en_US.UTF-8";
364 LANG = "en_US.UTF-8";
460 meta.platforms = pkgs.lib.platforms.all;
365 meta.platforms = pkgs.lib.platforms.all;
461 preferLocalBuild = false;
366 preferLocalBuild = false;
463− "out" # The results of plan-to-nix
464− # These two output will be present if in cabal configure failed.
465− # They are used to provide passthru.json and passthru.freeze that
466− # check first for cabal configure failure.
467− "maybeJson" # The `plan.json` file generated by cabal and used for `plan-to-nix` input
468− "maybeFreeze" # The `cabal.project.freeze` file created by `cabal v2-freeze`
472− checkCabalConfigure = ''
473− if [[ -f ${plan-nix}/cabal-configure.out ]]; then
474− cat ${plan-nix}/cabal-configure.out
479− # These check for cabal configure failure
480− json = evalPackages.runCommand (nameAndSuffix "plan-json") {} ''
481− ${checkCabalConfigure}
482− cp ${plan-nix.maybeJson} $out
484− freeze = evalPackages.runCommand (nameAndSuffix "plan-freeze") {} ''
485− ${checkCabalConfigure}
486− cp ${plan-nix.maybeFreeze} $out
490 tmp=$(mktemp -d)
368 tmp=$(mktemp -d)
492− # if cleanedSource is empty, this means it's a new
370+ # if maybeCleanedSource is empty, this means it's a new
493 # project where the files haven't been added to the git
371 # project where the files haven't been added to the git
494 # repo yet. We fail early and provide a useful error
372 # repo yet. We fail early and provide a useful error
495 # message to prevent headaches (#290).
373 # message to prevent headaches (#290).
496− if [ -z "$(ls -A ${cleanedSource})" ]; then
374+ if [ -z "$(ls -A ${maybeCleanedSource})" ]; then
497− echo "cleaned source is empty. Did you forget to 'git add -A'?"
375+ echo "cleaned source is empty. Did you forget to 'git add -A'?"; exit 1;
498− ${pkgs.lib.optionalString (__length fixedProject.sourceRepos == 0) ''
502− cp -r ${cleanedSource}/* .
377+ cp -r ${maybeCleanedSource}/* .
504 chmod +w -R .
378 chmod +w -R .
505− # Decide what to do for each `package.yaml` file.
379+ # warning: this may not generate the proper cabal file.
506− for hpackFile in $(find . -name package.yaml); do (
380+ # hpack allows globbing, and turns that into module lists
507− # Look to see if a `.cabal` file exists
381+ # without the source available (we cleaneSourceWith'd it),
508− shopt -u nullglob
382+ # this may not produce the right result.
509− for cabalFile in $(dirname $hpackFile)/*.cabal; do
383+ find . -name package.yaml -exec hpack "{}" \;
510− if [ -e "$cabalFile" ]; then
511− echo Ignoring $hpackFile as $cabalFile exists
513− # warning: this may not generate the proper cabal file.
514− # hpack allows globbing, and turns that into module lists
515− # without the source available (we cleaneSourceWith'd it),
516− # this may not produce the right result.
517− echo No .cabal file found, running hpack on $hpackFile
523 ${pkgs.lib.optionalString (subDir != "") "cd ${subDir}"}
384 ${pkgs.lib.optionalString (subDir != "") "cd ${subDir}"}
524 ${fixedProject.makeFixedProjectFile}
385 ${fixedProject.makeFixedProjectFile}
525 ${pkgs.lib.optionalString (cabalProjectFreeze != null) ''
386 ${pkgs.lib.optionalString (cabalProjectFreeze != null) ''
526− cp ${evalPackages.writeText "cabal.project.freeze" cabalProjectFreeze} \
387+ cp ${pkgs.evalPackages.writeText "cabal.project.freeze" cabalProjectFreeze} \
527 cabal.project.freeze
388 cabal.project.freeze
528− chmod +w cabal.project.freeze
530 export SSL_CERT_FILE=${cacert}/etc/ssl/certs/ca-bundle.crt
390 export SSL_CERT_FILE=${cacert}/etc/ssl/certs/ca-bundle.crt
531 export GIT_SSL_CAINFO=${cacert}/etc/ssl/certs/ca-bundle.crt
391 export GIT_SSL_CAINFO=${cacert}/etc/ssl/certs/ca-bundle.crt
532−
392+ HOME=${dotCabal {
533− # Using `cabal v2-freeze` will configure the project (since
393+ inherit cabal-install nix-tools extra-hackage-tarballs;
534− # it is not configured yet), taking the existing `cabal.project.freeze`
394+ index-state =
535− # file into account. Then it "writes out a freeze file which
395+ builtins.trace ("Using index-state: ${index-state-found}" + (if name == null then "" else " for " + name))
536− # records all of the versions and flags that are picked" (from cabal docs).
396+ index-state-found;
537− echo "Using index-state ${index-state-found}"
397+ sha256 = index-sha256-found; }} cabal v2-configure \
538− if(HOME=${
398+ --with-ghc=${ghc.targetPrefix}ghc \
539− # This creates `.cabal` directory that is as it would have
540− # been at the time `cached-index-state`. We may include
541− # some packages that will be excluded by `index-state-found`
542− # which is used by cabal (cached-index-state >= index-state-found).
544− inherit cabal-install nix-tools extra-hackage-tarballs;
545− extra-hackage-repos = fixedProject.repos;
546− index-state = cached-index-state;
547− sha256 = index-sha256-found;
549− } cabal v2-freeze ${
550− # Setting the desired `index-state` here in case it is not
551− # in the cabal.project file. This will further restrict the
552− # packages used by the solver (cached-index-state >= index-state-found).
553− pkgs.lib.optionalString (index-state != null) "--index-state=${index-state}"
556− # We are using `-w` rather than `--with-ghc` here to override
557− # the `with-compiler:` in the `cabal.project` file.
558− ghc.targetPrefix}ghc \
559 --with-ghc-pkg=${ghc.targetPrefix}ghc-pkg \
399 --with-ghc-pkg=${ghc.targetPrefix}ghc-pkg \
560 --enable-tests \
400 --enable-tests \
561 --enable-benchmarks \
401 --enable-benchmarks \
562− ${pkgs.lib.optionalString (ghc.targetPrefix == "js-unknown-ghcjs-")
402+ ${configureArgs}
563− "--ghcjs --with-ghcjs=js-unknown-ghcjs-ghc --with-ghcjs-pkg=js-unknown-ghcjs-ghc-pkg"} \
564− ${configureArgs} 2>&1 | tee -a cabal-configure.out); then
566 mkdir -p $out
404 mkdir -p $out
568− cp cabal.project.freeze $maybeFreeze
569− # Not needed any more (we don't want it to wind up in the $out hash)
570− rm cabal.project.freeze
572 # ensure we have all our .cabal files (also those generated from package.yaml) files.
406 # ensure we have all our .cabal files (also those generated from package.yaml) files.
573 # otherwise we'd need to be careful about putting the `cabal-generator = hpack` into
407 # otherwise we'd need to be careful about putting the `cabal-generator = hpack` into
574 # the nix expression. As we already called `hpack` on all `package.yaml` files we can
408 # the nix expression. As we already called `hpack` on all `package.yaml` files we can
@@ -589,44 +423,18 @@ let
589 # proper relative paths.
423 # proper relative paths.
590 (cd $out${subDir'} && plan-to-nix --full --plan-json $tmp${subDir'}/dist-newstyle/cache/plan.json -o .)
424 (cd $out${subDir'} && plan-to-nix --full --plan-json $tmp${subDir'}/dist-newstyle/cache/plan.json -o .)
592− # Replace the /nix/store paths to minimal git repos with indexes (that will work with materialization).
593− ${fixedProject.replaceLocations}
595− # Make the plan.json file available in case we need to debug plan-to-nix
596− cp $tmp${subDir'}/dist-newstyle/cache/plan.json $maybeJson
598 # Remove the non nix files ".project" ".cabal" "package.yaml" files
426 # Remove the non nix files ".project" ".cabal" "package.yaml" files
599 # as they should not be in the output hash (they may change slightly
427 # as they should not be in the output hash (they may change slightly
600 # without affecting the nix).
428 # without affecting the nix).
429+ if [ -d $out${subDir'}/.source-repository-packages ]; then
430+ chmod +w -R $out${subDir'}/.source-repository-packages
431+ rm -rf $out${subDir'}/.source-repository-packages
601 find $out \( -type f -or -type l \) ! -name '*.nix' -delete
433 find $out \( -type f -or -type l \) ! -name '*.nix' -delete
602 # Remove empty dirs
434 # Remove empty dirs
603 find $out -type d -empty -delete
435 find $out -type d -empty -delete
605 # move pkgs.nix to default.nix ensure we can just nix `import` the result.
437 # move pkgs.nix to default.nix ensure we can just nix `import` the result.
606 mv $out${subDir'}/pkgs.nix $out${subDir'}/default.nix
438 mv $out${subDir'}/pkgs.nix $out${subDir'}/default.nix
608− # Check that this was a solver failure that (not some other
609− # possibly non deterministic failure).
610− # TODO replace grep once https://github.com/haskell/cabal/issues/5191
612− grep "cabal: Could not resolve dependencies" cabal-configure.out
614− # When cabal configure fails copy the output that we captured above and
615− # use `failed-cabal-configure.nix` to make a suitable derviation with.
616− mkdir -p $out${subDir'}
617− cp cabal-configure.out $out${subDir'}
618− cp ${./failed-cabal-configure.nix} $out${subDir'}/default.nix
620− # These should only be used indirectly by `passthru.json` and `passthru.freeze`.
621− # Those derivations will check for `cabal-configure.out` out first to see if
622− # it is ok to use these files.
623− echo "Cabal configure failed see $out${subDir'}/cabal-configure.out for details" > $maybeJson
624− echo "Cabal configure failed see $out${subDir'}/cabal-configure.out for details" > $maybeFreeze
627−in {
440+in { projectNix = plan-nix; inherit src; inherit (fixedProject) sourceRepos; }
628− projectNix = plan-nix;
629− index-state = index-state-found;
631− inherit (fixedProject) sourceRepos extra-hackages;
lib/call-stack-to-nix.nix+11−49
@@ -5,37 +5,21 @@
6 * see also `call-cabal-project-to-nix`!
6 * see also `call-cabal-project-to-nix`!
8+{ runCommand, nix-tools, pkgs, mkCacheFile, materialize }:
8{ name ? src.name or null # optional name for better error messages
9{ name ? src.name or null # optional name for better error messages
10−, stackYaml ? "stack.yaml"
11+, stackYaml ? null
11, ignorePackageYaml ? false
12, ignorePackageYaml ? false
12, cache ? null
13, cache ? null
13, stack-sha256 ? null
14, stack-sha256 ? null
14−, resolverSha256 ? null
15, materialized ? null # Location of a materialized copy of the nix files
15, materialized ? null # Location of a materialized copy of the nix files
16, checkMaterialization ? null # If true the nix files will be generated used to check plan-sha256 and material
16, checkMaterialization ? null # If true the nix files will be generated used to check plan-sha256 and material
17−, nix-tools
17+, ... }:
21− inherit (evalPackages) runCommand;
22− inherit (evalPackages.haskell-nix) mkCacheFile materialize haskellLib;
23− inherit (haskellLib.fetchResolver {
24− inherit src stackYaml resolverSha256;
25− }) resolver fetchedResolver;
27 subDir' = src.origSubDir or "";
19 subDir' = src.origSubDir or "";
28− subDir = evalPackages.lib.strings.removePrefix "/" subDir';
29− cleanedSource = (haskellLib.cleanSourceWith {
30− name = if name != null then "${name}-root-cabal-files" else "source-root-cabal-files";
31− src = src.origSrc or src;
32− filter = path: type: (!(src ? filter) || src.filter path type) && (
33− type == "directory" ||
34− evalPackages.lib.any (i: (evalPackages.lib.hasSuffix i path)) [ stackYaml ".cabal" "package.yaml" ]); });
36 stackToNixArgs = builtins.concatStringsSep " " [
20 stackToNixArgs = builtins.concatStringsSep " " [
38− "--stack-yaml=$SRC${subDir'}/${stackYaml}"
22+ "--stack-yaml=${src}/${if stackYaml == null then "stack.yaml" else stackYaml}"
39 (if ignorePackageYaml then "--ignore-package-yaml" else "")
23 (if ignorePackageYaml then "--ignore-package-yaml" else "")
@@ -44,48 +28,26 @@ let
44 sha256 = stack-sha256;
28 sha256 = stack-sha256;
45 sha256Arg = "stack-sha256";
29 sha256Arg = "stack-sha256";
46 reasonNotSafe = null;
30 reasonNotSafe = null;
47− this = "project.stack-nix" + (if name != null then " for ${name}" else "");
31+ } // pkgs.lib.optionalAttrs (checkMaterialization != null) {
48− } // evalPackages.lib.optionalAttrs (checkMaterialization != null) {
49 inherit checkMaterialization;
32 inherit checkMaterialization;
50 }) (runCommand (if name == null then "stack-to-nix-pkgs" else name + "-stack-to-nix-pkgs") {
33 }) (runCommand (if name == null then "stack-to-nix-pkgs" else name + "-stack-to-nix-pkgs") {
51− nativeBuildInputs = [ nix-tools evalPackages.nix-prefetch-git evalPackages.cacert evalPackages.xorg.lndir ];
34+ nativeBuildInputs = [ nix-tools pkgs.nix-prefetch-git pkgs.cacert ];
52 # Needed or stack-to-nix will die on unicode inputs
35 # Needed or stack-to-nix will die on unicode inputs
53− LOCALE_ARCHIVE = evalPackages.lib.optionalString (evalPackages.stdenv.hostPlatform.libc == "glibc") "${evalPackages.glibcLocales}/lib/locale/locale-archive";
36+ LOCALE_ARCHIVE = pkgs.lib.optionalString (pkgs.stdenv.hostPlatform.libc == "glibc") "${pkgs.glibcLocales}/lib/locale/locale-archive";
54 LANG = "en_US.UTF-8";
37 LANG = "en_US.UTF-8";
55 LC_ALL = "en_US.UTF-8";
38 LC_ALL = "en_US.UTF-8";
56 preferLocalBuild = false;
39 preferLocalBuild = false;
58 mkdir -p $out${subDir'}
41 mkdir -p $out${subDir'}
59− SRC=$(mktemp -d)
42+ '' + pkgs.lib.optionalString (cache != null) ''
60− cd $SRC
43+ cp ${mkCacheFile cache}/.stack-to-nix.cache* $out${subDir'}
61− # if cleanedSource is empty, this means it's a new
44+ '' + ''
62− # project where the files haven't been added to the git
63− # repo yet. We fail early and provide a useful error
64− # message to prevent headaches (#290).
65− if [ -z "$(ls -A ${cleanedSource})" ]; then
66− echo "cleaned source is empty. Did you forget to 'git add -A'?"; exit 1;
68− lndir -silent "${cleanedSource}/." $SRC
69− ${evalPackages.lib.optionalString (subDir != "") "cd ${subDir}"}
71− # If a resolver was fetched use the it instead of the original stack.yaml
72− evalPackages.lib.optionalString (fetchedResolver != null)
73− # Replace the resolver path in the stack.yaml with the fetched version
76− cp ${src}/${stackYaml} .
77− chmod +w ${stackYaml}
78− substituteInPlace ${stackYaml} --replace "${resolver}" "${fetchedResolver}"
80− ${evalPackages.lib.optionalString (cache != null) ''
81− cp ${mkCacheFile cache}/.stack-to-nix.cache* $out${subDir'}
83 (cd $out${subDir'} && stack-to-nix ${stackToNixArgs})
45 (cd $out${subDir'} && stack-to-nix ${stackToNixArgs})
85 # We need to strip out any references to $src, as those won't
47 # We need to strip out any references to $src, as those won't
86 # be accessable in restricted mode.
48 # be accessable in restricted mode.
87 for nixf in $(find $out -name "*.nix" -type f); do
49 for nixf in $(find $out -name "*.nix" -type f); do
88− substituteInPlace $nixf --replace "$SRC${subDir'}" "."
50+ substituteInPlace $nixf --replace "${src}" "."
91 # move pkgs.nix to default.nix ensure we can just nix `import` the result.
53 # move pkgs.nix to default.nix ensure we can just nix `import` the result.
@@ -1,4 +1,4 @@
1−{ stdenv, lib, haskellLib }:
1+{ stdenv, lib, haskellLib, srcOnly }:
@@ -7,45 +7,31 @@ let
7# This derivation can be used to execute test component.
7# This derivation can be used to execute test component.
8# The $out of the derivation is a file containing the resulting
8# The $out of the derivation is a file containing the resulting
9# stdout output.
9# stdout output.
10−in stdenv.mkDerivation ((
10+in stdenv.mkDerivation ({
15− # This `cd` is normally done in the `prePatch` of the drv
16− lib.optionalString (drv.srcSubDir != "") ''
17− cd ${lib.removePrefix "/" drv.srcSubDir}
21− # This makes the derivation work a bit like `srcOnly`,
22− # using the original derivation, but replacing the `buildPhase`.
23− (drv.drvAttrs or drv) // {
25− separateDebugInfo = false;
27 name = (drv.name + "-check");
11 name = (drv.name + "-check");
13+ # Useing `srcOnly` (rather than getting the `src` via a `drv.passthru`)
14+ # should correctly apply the patches from `drv` (if any).
15+ src = drv.source or (srcOnly drv);
29 passthru = {
17 passthru = {
30− inherit (drv) identifier config configFiles executableToolDepends cleanSrc env exeName;
18+ inherit (drv) identifier config configFiles executableToolDepends cleanSrc env;
33 inherit (drv) meta LANG LC_ALL buildInputs nativeBuildInputs;
21 inherit (drv) meta LANG LC_ALL buildInputs nativeBuildInputs;
35 inherit (component) doCheck doCrossCheck;
23 inherit (component) doCheck doCrossCheck;
37− phases = ["unpackPhase" "patchPhase" "buildPhase"];
25+ phases = ["unpackPhase" "buildPhase"];
39 # If doCheck or doCrossCheck are false we may still build this
27 # If doCheck or doCrossCheck are false we may still build this
40 # component and we want it to quietly succeed.
28 # component and we want it to quietly succeed.
41 buildPhase = ''
29 buildPhase = ''
42− mkdir $out
30+ touch $out
45− ${toString component.testWrapper} ${drv}/bin/${drv.exeName} ${lib.concatStringsSep " " component.testFlags} | tee $out/test-stdout
32+ runHook preCheck
47− # Copy over tix files, if they exist
34+ ${toString component.testWrapper} ${drv}/bin/${drv.exeName} ${lib.concatStringsSep " " component.testFlags} | tee $out
48− find . -iname '${drv.exeName}.tix' -exec mkdir -p $out/share/hpc/vanilla/tix/${drv.exeName} \; -exec cp {} $out/share/hpc/vanilla/tix/${drv.exeName}/ \;
50 runHook postCheck
36 runHook postCheck
lib/clean-cabal-component.nix+57−106
@@ -1,55 +1,19 @@
1# Use cleanSourceWith to filter just the files needed for a particular
1# Use cleanSourceWith to filter just the files needed for a particular
2# component of the package
2# component of the package
3−{ lib, cleanSourceWith }: package: component: componentName: src:
3+{ lib, cleanSourceWith }: package: component: src:
5− srcStr' = src.origSrc or null;
5+ srcStr' = src.origSrcSubDir or src.origSrc or null;
6− subDir = if src.origSubDir or "" == ""
8− else lib.removePrefix "/" src.origSubDir + "/";
9− # Remove a directory for each .. part of a path.
10− removeDotDots = parts: lib.reverseList (
11− builtins.foldl' (a: b:
14− else builtins.concatLists [ [b] a ]) [] parts);
15 # Transform
6 # Transform
16− # "." -> ""
7+ # "." -> ""
17− # "./." -> ""
8+ # "./." -> ""
18− # "./xyz" -> "xyz"
9+ # "./xyz" -> "xyz"
19− # "../abc" -> ERROR
10+ normalizeRelativePath = rel:
20− # "abc/.." -> ""
11+ if rel == "." || rel == "./."
21− # "abc/../xyz" -> "xyz"
12+ then ""
22− # "abc/./xyz" -> "abc/xyz"
13+ else lib.strings.removePrefix "./" rel;
23− # "abc/./../xyz" -> "xyz"
14+ # Like normalizeRelativePath but with a trailing / when needed
24− # "abc/.././xyz" -> "xyz"
15+ normalizeRelativeDir = dir:
25− # "abc/" -> "abc/"
16+ let p = normalizeRelativePath dir;
26− normalizeRelativePath = path:
28− # Split the path into component parts and remove the empty ones and single dots.
29− nonEmptyParts = lib.filter (x: x != "" && x != ".") (lib.splitString "/" path);
30− in lib.concatStringsSep "/" (removeDotDots nonEmptyParts)
31− # Keep the trailing slash if there was one.
32− + (if lib.hasSuffix "/" path then "/" else "");
33− isAbsolutePath = path: lib.hasPrefix "/" path;
34− isRelativePath = path: !(isAbsolutePath path);
35− normalizePath = path:
36− (if isAbsolutePath path
39− ) + normalizeRelativePath path;
50− # Like normalizePath but with a trailing / when needed
52− let p = normalizePath dir;
53 in if p == "" || p == "/"
17 in if p == "" || p == "/"
55 else if lib.hasSuffix "/" p
19 else if lib.hasSuffix "/" p
@@ -61,78 +25,65 @@ in
63 srcStr = toString srcStr';
27 srcStr = toString srcStr';
64− dataDir = combinePaths subDir package.dataDir;
28+ dataDir = normalizeRelativeDir package.dataDir;
65− hsSourceDirs = builtins.map (d: combinePaths subDir d) component.hsSourceDirs
29+ hsSourceDirs = builtins.map normalizeRelativeDir component.hsSourceDirs
66− ++ (if component.hsSourceDirs == [] then [subDir] else []);
30+ ++ (if component.hsSourceDirs == [] then [""] else []);
67− includeDirs = builtins.map (d: combinePaths subDir d) component.includeDirs;
31+ includeDirs = builtins.map normalizeRelativeDir component.includeDirs;
68− # paths that will be needed (used to check if a parent dir should be included)
32+ dirsNeeded = [dataDir]
70− # These already include subDir
72 ++ hsSourceDirs
33 ++ hsSourceDirs
73− ++ includeDirs
34+ ++ includeDirs;
74− ++ builtins.map (f: combinePaths dataDir f) package.dataFiles
76− ++ builtins.map (d: combinePaths subDir d) (
77− # These need the subDir added
79− ++ package.extraSrcFiles
80− ++ component.extraSrcFiles
81− ++ package.extraDocFiles);
82 fileMatch = dir: list:
35 fileMatch = dir: list:
84− prefixes = builtins.map (f: combinePaths dir f) (
37+ prefixes = builtins.map (f: dir + f) (
85 lib.lists.remove null (lib.lists.flatten (
38 lib.lists.remove null (lib.lists.flatten (
86 builtins.map (f: builtins.match "([^*]*)[*].*" f) list)));
39 builtins.map (f: builtins.match "([^*]*)[*].*" f) list)));
87− exactMatches = builtins.map (f: combinePaths dir f) (
40+ exactMatches = builtins.map (f: dataDir + f) (
88 lib.lists.remove null (lib.lists.flatten (
41 lib.lists.remove null (lib.lists.flatten (
89 builtins.map (f: builtins.match "([^*]*)" f) list)));
42 builtins.map (f: builtins.match "([^*]*)" f) list)));
90 in rPath: lib.any (d: lib.strings.hasPrefix d rPath) prefixes
43 in rPath: lib.any (d: lib.strings.hasPrefix d rPath) prefixes
91 || lib.any (d: d == rPath) exactMatches;
44 || lib.any (d: d == rPath) exactMatches;
92 dataFileMatch = fileMatch dataDir package.dataFiles;
45 dataFileMatch = fileMatch dataDir package.dataFiles;
93− licenseMatch = fileMatch subDir package.licenseFiles;
46+ licenseMatch = fileMatch "" package.licenseFiles;
94− extraSrcMatch = fileMatch subDir (
47+ extraSrcMatch = fileMatch "" (
95 package.extraSrcFiles
48 package.extraSrcFiles
96 ++ component.extraSrcFiles);
49 ++ component.extraSrcFiles);
97− extraDocMatch = fileMatch subDir package.extraDocFiles;
50+ extraDocMatch = fileMatch "" package.extraDocFiles;
98− otherSourceFiles = builtins.map (f: combinePaths subDir f) (
51+ otherSourceFiles =
99 component.asmSources
52 component.asmSources
100 ++ component.cmmSources
53 ++ component.cmmSources
101 ++ component.cSources
54 ++ component.cSources
102 ++ component.cxxSources
55 ++ component.cxxSources
103− ++ component.jsSources);
56+ ++ component.jsSources;
104 in cleanSourceWith {
57 in cleanSourceWith {
105− name = src.name or "source" + "-${componentName}";
58+ inherit src;
106− subDir = lib.removePrefix "/" (src.origSubDir or "");
59+ filter = path: type:
107− includeSiblings = true;
60+ assert (if !lib.strings.hasPrefix (srcStr + "/") (path + "/")
108− src = cleanSourceWith {
61+ then throw ("Unexpected path " + path + " (expected something in " + srcStr + "/)")
109− src = src.origSrc or src;
62+ else true);
110− filter = path: type:
63+ let
111− (!(src ? filter) || src.filter path type) && (
64+ srcStrLen = lib.strings.stringLength srcStr;
112− assert (if !lib.strings.hasPrefix (srcStr + "/") (path + "/")
65+ rPath = lib.strings.substring (srcStrLen + 1) (lib.strings.stringLength path - srcStrLen - 1) path;
113− then throw ("Unexpected path " + path + " (expected something in " + srcStr + "/)")
66+ # This is a handy way to find out why different files are included
114− else true);
67+ # traceReason = reason: v: if v then builtins.trace (rPath + " : " + reason) true else false;
115− let
68+ traceReason = reason: v: v;
116− srcStrLen = lib.strings.stringLength srcStr;
69+ in
117− rPath = lib.strings.substring (srcStrLen + 1) (lib.strings.stringLength path - srcStrLen - 1) path;
70+ traceReason "directory is needed" (
118− # This is a handy way to find out why different files are included
71+ lib.any (d: lib.strings.hasPrefix (rPath + "/") d) (
119− # traceReason = reason: v: if v then builtins.trace (rPath + " : " + reason) true else false;
72+ dirsNeeded
120− traceReason = reason: v: v;
73+ ++ package.licenseFiles
121− in
74+ ++ package.extraSrcFiles
122− traceReason "directory is needed" (
75+ ++ component.extraSrcFiles
123− lib.any (d: lib.strings.hasPrefix (rPath + "/") d) dirsNeeded)
76+ ++ package.extraDocFiles
124− || traceReason "cabal package definition" (lib.strings.hasPrefix subDir rPath
77+ ++ builtins.map (f: dataDir + f) package.dataFiles
125− && lib.strings.hasSuffix ".cabal" rPath)
78+ ++ otherSourceFiles))
126− || traceReason "hpack package defintion" (lib.strings.hasPrefix subDir rPath
79+ || traceReason "cabal package definition" (lib.strings.hasSuffix ".cabal" rPath)
127− && rPath == "package.yaml")
80+ || traceReason "hpack package defintion" (rPath == "package.yaml")
128− || traceReason "data file" (lib.strings.hasPrefix dataDir rPath
81+ || traceReason "data file" (lib.strings.hasPrefix dataDir rPath
129− && dataFileMatch rPath)
82+ && dataFileMatch rPath)
130− || traceReason "haskell source dir" (lib.any (d: lib.strings.hasPrefix d rPath) hsSourceDirs)
83+ || traceReason "haskell source dir" (lib.any (d: lib.strings.hasPrefix d rPath) hsSourceDirs)
131− || traceReason "include dir" (lib.any (d: lib.strings.hasPrefix d rPath) includeDirs)
84+ || traceReason "include dir" (lib.any (d: lib.strings.hasPrefix d rPath) includeDirs)
132− || traceReason "license file" (licenseMatch rPath)
85+ || traceReason "license file" (licenseMatch rPath)
133− || traceReason "extra source file" (extraSrcMatch rPath)
86+ || traceReason "extra source file" (extraSrcMatch rPath)
134− || traceReason "extra doc file" (extraDocMatch rPath)
87+ || traceReason "extra doc file" (extraDocMatch rPath)
135− || traceReason "other source file" (lib.any (f: f == rPath) otherSourceFiles)
88+ || traceReason "other source file" (lib.any (f: f == rPath) otherSourceFiles);
@@ -1,6 +1,6 @@
1# From https://github.com/NixOS/nix/issues/2944
1# From https://github.com/NixOS/nix/issues/2944
2{ lib, runCommand, git, cleanSourceWith }:
2{ lib, runCommand, git, cleanSourceWith }:
3−{ name ? null, src, subDir ? "", includeSiblings ? false, keepGitDir ? false }:
3+{ name ? null, src, subDir ? "" }:
5# The function call
5# The function call
@@ -24,6 +24,26 @@ with builtins;
24# is shared among multiple invocations of gitSource:
24# is shared among multiple invocations of gitSource:
27+ filter_from_list = root: files:
30+ if p == "." || p == "/"
32+ else [ p ] ++ all_paren_dirs (dirOf p);
34+ whitelist_set = listToAttrs (
36+ # Using `origSrcSubDir` (if present) makes it possible to cleanGit src that
37+ # has already been cleaned with cleanSrcWith.
38+ let full_path = root.origSrcSubDir or (toString root) + "/${p}"; in
39+ map (p': { name = p'; value = true; }) (all_paren_dirs full_path)
43+ p: t: hasAttr (toString p) whitelist_set;
45+ has_prefix = prefix: s:
46+ prefix == builtins.substring 0 (builtins.stringLength prefix) s;
27 remove_prefix = prefix: s:
47 remove_prefix = prefix: s:
28 builtins.substring
48 builtins.substring
29 (builtins.stringLength prefix)
49 (builtins.stringLength prefix)
@@ -31,15 +51,13 @@ let
33 lines = s: filter (x : x != [] && x != "") (split "\n" s);
53 lines = s: filter (x : x != [] && x != "") (split "\n" s);
35− origSrcSubDir = toString (src.origSrcSubDir or src);
38−if builtins.pathExists (origSrcSubDir + "/.git")
56+if builtins.pathExists (toString src + "/.git")
41− hasIndex = builtins.pathExists (origSrcSubDir + "/.git/index");
59+ hasIndex = builtins.pathExists (toString src + "/.git/index");
42− isWorktree = (builtins.readDir origSrcSubDir).".git" == "regular";
60+ isWorktree = (builtins.readDir (toString src)).".git" == "regular";
44 # Identify the .git directory and filter just the files that we need.
62 # Identify the .git directory and filter just the files that we need.
45 gitDir = cleanSourceWith ({
63 gitDir = cleanSourceWith ({
@@ -56,23 +74,19 @@ then
56 if hasIndex
74 if hasIndex
57 then { inherit src; subDir = ".git"; }
75 then { inherit src; subDir = ".git"; }
58 else if !isWorktree
76 else if !isWorktree
59− then abort "cleanGit: ${origSrcSubDir + "/.git"} has no index file"
77+ then abort "cleanGit: ${toString src + "/.git"} has no index file"
61 # likely a git worktree, so follow the indirection
79 # likely a git worktree, so follow the indirection
64− git_content = lines (readFile (origSrcSubDir + "/.git"));
82+ git_content = lines (readFile (toString src + "/.git"));
65 first_line = head git_content;
83 first_line = head git_content;
66 prefix = "gitdir: ";
84 prefix = "gitdir: ";
67− ok = length git_content == 1 && lib.hasPrefix prefix first_line;
85+ ok = length git_content == 1 && has_prefix prefix first_line;
68− raw_path = remove_prefix prefix first_line;
71− then
88+ then /. + remove_prefix prefix first_line
72− if lib.hasPrefix "/" raw_path
89+ else abort "gitSource.nix: Cannot parse ${toString src + "/.git"}";
74− else /. + builtins.toPath (origSrcSubDir + "/" + raw_path)
75− else abort "gitSource.nix: Cannot parse ${origSrcSubDir + "/.git"}";
78 # Worktrees have a commondir pointing to the common `.git` dir. We need the
92 # Worktrees have a commondir pointing to the common `.git` dir. We need the
@@ -88,40 +102,35 @@ then
88 else gitDir + "/config";
102 else gitDir + "/config";
90 # We need the .gitmodules file for submoules to work.
104 # We need the .gitmodules file for submoules to work.
91− gitModulesStr = origSrcSubDir + "/.gitmodules";
105+ gitModulesStr = toString src + "/.gitmodules";
92 gitModules = builtins.path { name = "gitmodules"; path = gitModulesStr; };
106 gitModules = builtins.path { name = "gitmodules"; path = gitModulesStr; };
94− # Files from the git repository related knownSubmoduleDirs.
108+ gitSubmoduleFiles = cleanSourceWith {
95− gitSubmoduleFiles = knownSubmoduleDirs:
109+ caller = "cleanGit";
96− let pathsNeeded = map (p: toString (src.origSrcSubDir or src) + "/${p}") (
110+ name = (if name == null then "" else name + "-") + "gitSubmoduleFiles";
97− lib.concatMap (x: all_paren_dirs (x + "/.git")) knownSubmoduleDirs);
111+ inherit src;
98− in cleanSourceWith {
112+ filter = path: type:
99− caller = "cleanGit";
113+ type == "directory" # TODO get sudmodule directories from `.gitmodules`
100− name = (if name == null then "" else name + "-") + "gitSubmoduleFiles";
114+ # and use that to filter directory tree here
102− filter = path: type:
116+ lib.any (i: (lib.hasSuffix i path)) [
103− elem path pathsNeeded
117+ "/.git" ".gitmodules" ".git/config" ".git/index" ".git/HEAD" ".git/objects" ".git/refs" ] ||
104− ||
118+ (lib.strings.hasInfix ".git/modules/" path &&
105 lib.any (i: (lib.hasSuffix i path)) [
119 lib.any (i: (lib.hasSuffix i path)) [
106− ".gitmodules" ".git/config" ".git/index" ".git/HEAD" ".git/objects" ".git/refs" ]
120+ "config" "index" "HEAD" "objects" "refs" ]);
108− (lib.strings.hasInfix ".git/modules/" path &&
109− lib.any (i: (lib.hasSuffix i path)) [
110− "config" "index" "HEAD" "objects" "refs" ]);
113− hasSubmodules = !isWorktree && builtins.pathExists gitModulesStr;
115 # Make a temporary dir that looks enough like the real thing for
123 # Make a temporary dir that looks enough like the real thing for
116 # `git ls-files --recurse-submodules` to give us an accurate list
124 # `git ls-files --recurse-submodules` to give us an accurate list
117 # of all the files in the index.
125 # of all the files in the index.
118− whitelist_files = knownSubmoduleDirs:
126+ whitelist_file =
119− runCommand "git-ls-files" { preferLocalBuild = true; } ''
127+ runCommand "git-ls-files" {envVariable = true;} ''
120 tmp=$(mktemp -d)
128 tmp=$(mktemp -d)
122− ${ lib.optionalString hasSubmodules ''
130+ ${ lib.optionalString (!isWorktree && builtins.pathExists gitModulesStr) ''
123− cp -ra ${gitSubmoduleFiles knownSubmoduleDirs}/. $tmp
131+ cp -ra ${gitSubmoduleFiles}/. $tmp
124 chmod +w -R $tmp
132 chmod +w -R $tmp
126 cp -r ${gitDir} .git
135 cp -r ${gitDir} .git
127 chmod +w -R .git
136 chmod +w -R .git
@@ -132,74 +141,22 @@ then
132 ${ lib.optionalString (isWorktree && builtins.pathExists gitModulesStr) ''
141 ${ lib.optionalString (isWorktree && builtins.pathExists gitModulesStr) ''
133 cp ${gitModules} ./.gitmodules
142 cp ${gitModules} ./.gitmodules
135− mkdir $out
144+ ${git}/bin/git ls-files --recurse-submodules > $out
136− ${ lib.optionalString hasSubmodules ''
137− ${git}/bin/git submodule status --recursive | awk '{ print $2 }' > $out/submoduleDirs
139− ${git}/bin/git ls-files --recurse-submodules > $out/files
142− # Find the submodules
147+ whitelist = lines (readFile (whitelist_file.out));
143− whitelist_recursive = knownSubmoduleDirs:
145− # Get the new list of submoduleDirs and files
146− # (useing the submoduleDirs we already know about)
147− files = whitelist_files knownSubmoduleDirs;
149− submoduleDirs = lines (readFile (files + "/submoduleDirs"));
150− files = lines (readFile (files + "/files"));
153− # If we are not expecting submodules or if the new list does not
154− # contain any additional submodules we are done.
155− if !hasSubmodules || lib.all (x: elem x knownSubmoduleDirs) new.submoduleDirs
158− # Look again using what we know now about the submodules
159− whitelist_recursive new.submoduleDirs;
161− # Use empty as a starting point for looking for submodules.
162− # We could allow a list to be passed into cleanGit, but when testing
163− # on the `ghcjs` repo (one with a lot of submodules) it did not
164− # make much of a difference to the speed of `cleanGit`.
165− whitelist = whitelist_recursive [];
168− if p == "." || p == "/"
170− else [ p ] ++ all_paren_dirs (dirOf p);
172− # All the paths that we need to keep as a set (including parent dirs)
173− whitelist_set = listToAttrs (
175− # Using `origSrcSubDir` (if present) makes it possible to cleanGit src that
176− # has already been cleaned with cleanSrcWith.
177− let full_path = toString (src.origSrcSubDir or src) + "/${p}"; in
178− map (p': { name = p'; value = true; }) (all_paren_dirs full_path)
182− # Identify files in the `.git` dir
183− isGitDirPath = path:
184− path == origSrcSubDir + "/.git"
185− || lib.hasPrefix (origSrcSubDir + "/.git/") path;
187− filter = path: type:
149+ filter = filter_from_list src whitelist;
188− hasAttr (toString path) whitelist_set
189− || (keepGitDir && isGitDirPath path);
191 cleanSourceWith {
151 cleanSourceWith {
192 caller = "cleanGit";
152 caller = "cleanGit";
193− inherit name src subDir includeSiblings filter;
153+ inherit name src subDir filter;
196− # inherit whitelist whitelist_set;
200− trace "haskell-nix.haskellLib.cleanGit: ${origSrcSubDir} does not seem to be a git repository,\nassuming it is a clean checkout." (
157+ trace "gitSource.nix: ${toString src} does not seem to be a git repository,\nassuming it is a clean checkout." (
201 cleanSourceWith {
158 cleanSourceWith {
202 caller = "cleanGit";
159 caller = "cleanGit";
203− inherit name src subDir includeSiblings;
160+ inherit name src subDir;
lib/clean-source-haskell.nix+16−2
@@ -1,7 +1,7 @@
1# This is a source filter function which cleans common build products
1# This is a source filter function which cleans common build products
2# and files not needed to do a haskell build from a source directory.
2# and files not needed to do a haskell build from a source directory.
4−# This can avoid unnecessary builds when these files change.
4+# This can avoid unecessary builds when these files change.
6# It should be used with "pkgs.lib.cleanSourceWith". Alternatively,
6# It should be used with "pkgs.lib.cleanSourceWith". Alternatively,
7# use the convenience function "cleanSourceHaskell".
7# use the convenience function "cleanSourceHaskell".
@@ -35,7 +35,21 @@ rec {
35 src = lib.cleanSource src;
35 src = lib.cleanSource src;
36 inherit name;
36 inherit name;
38+ # Copy function from 19.09 for compatibility with 19.03.
39+ # Does require at least Nix 2.0.
41+ isFiltered = src ? _isLibCleanSourceWith;
42+ origSrc = if isFiltered then src.origSrc else src;
43+ filter' = name: type: haskellSourceFilter name type && lib.cleanSourceFilter name type;
44+ name' = if name != null then name else if isFiltered then src.name else baseNameOf src;
48+ outPath = builtins.path { filter = filter'; path = origSrc; name = name'; };
49+ _isLibCleanSourceWith = true;
39 if (builtins.typeOf src) == "path"
53 if (builtins.typeOf src) == "path"
40− then clean else src;
54+ then (if lib.versionAtLeast lib.version "19.09" then clean else compat) else src;
lib/clean-source-with.nix+11−38
@@ -40,7 +40,7 @@
40 # relative references to those siblings will work.
40 # relative references to those siblings will work.
42 # name: Optional name to use as part of the store path.
42 # name: Optional name to use as part of the store path.
43− # If you do not provide a `name` it will be derived
43+ # If you do not provide a `name` it wil be derived
44 # from the `subDir`. You should provide `name` or
44 # from the `subDir`. You should provide `name` or
45 # `subDir`. If you do not a warning will be displayed
45 # `subDir`. If you do not a warning will be displayed
46 # and the name used will be `source`.
46 # and the name used will be `source`.
@@ -50,33 +50,6 @@
50 # (and forward a `name` argument) can use this to make
50 # (and forward a `name` argument) can use this to make
51 # the message to the use more meaningful.
51 # the message to the use more meaningful.
53− # Nix <2.4 Suport with filterPath
55− # As of Nix >=2.4 filtering is now possible on all paths (including those in the store).
56− # If you still need to support older versions of Nix and want to maximise cache hits for your project
57− # you may want to consider using setting the `filterPath` attribute on `src` (must be done on
58− # the original src not the output of another `cleanSourceWith`).
60− # To disable filtering completely replace:
66− # src = { outPath = ./.; filterPath = { path, ... }: path; };
68− # To disable filtering only when the path is in the store use (when Nix <2.4 is unable to filter it):
72− # filterPath = { path, ... }@args:
73− # if builtins.hasContext (toString path) then path else builtins.path args;
76− # Currently `haskell-nix.hackage-project` (used by `hackage-package`, `tool` and `tools`) disables
77− # filtering. See `overlays/haskell.nix` for details.
79− # For more see https://github.com/input-output-hk/haskell.nix/pull/1418
80 cleanSourceWith = { filter ? _path: _type: true, src, subDir ? "", name ? null
53 cleanSourceWith = { filter ? _path: _type: true, src, subDir ? "", name ? null
81 , caller ? "cleanSourceWith", includeSiblings ? false }:
54 , caller ? "cleanSourceWith", includeSiblings ? false }:
@@ -107,7 +80,7 @@
108 if subDirName != ""
81 if subDirName != ""
109 then if src ? name
82 then if src ? name
110− then src.name + "-" + subDirName
83+ then src.name + "-" + subDirName
111 else "source-" + subDirName
84 else "source-" + subDirName
112 else if src ? name
85 else if src ? name
113 then src.name
86 then src.name
@@ -130,21 +103,21 @@
130 __trace (
103 __trace (
131 "WARNING: `${caller}` called on ${toString src} without a `name`. "
104 "WARNING: `${caller}` called on ${toString src} without a `name`. "
132 + "Consider adding `name = \"${baseNameOf src}\";`") "source";
105 + "Consider adding `name = \"${baseNameOf src}\";`") "source";
133− filterPath = origSrc.filterPath or (
134− if builtins.compareVersions builtins.nixVersion "2.4" >= 0
136− else __trace "WARNING: Using nix <2.4 will result in inconsistent filtering of ${toString origSrc} (see lib/clean-source-with.nix)"
137− (if builtins.hasContext or (lib.hasPrefix builtins.storeDir) (toString origSrc)
138− then { path, ... }: path
139− else builtins.path));
141 inherit origSrc origSubDir origSrcSubDir;
107 inherit origSrc origSubDir origSrcSubDir;
142 filter = filter';
108 filter = filter';
143− outPath = (filterPath { filter = filter'; path = origSrc; name = name'; }) + origSubDir;
109+ outPath = (builtins.path { filter = filter'; path = origSrc; name = name'; }) + origSubDir;
144 _isLibCleanSourceWithEx = true;
110 _isLibCleanSourceWithEx = true;
145 # It is only safe for older cleanSourceWith to filter this one
111 # It is only safe for older cleanSourceWith to filter this one
146 # if the we are still looking at the root of origSrc
112 # if the we are still looking at the root of origSrc
147 _isLibCleanSourceWith = origSubDir == "";
113 _isLibCleanSourceWith = origSubDir == "";
148 name = name';
114 name = name';
117+ pathHasContext = builtins.hasContext or (lib.hasPrefix builtins.storeDir);
119+ canCleanSource = src:
120+ src ? _isLibCleanSourceWithEx
121+ || src ? _isLibCleanSourceWith
122+ || !(pathHasContext (toString src));
lib/cover-project.nixdeleted−150
@@ -1,150 +0,0 @@
1−# A project coverage report is a composition of package coverage
3−{ stdenv, pkgs, lib, haskellLib }:
7−# List of coverage reports to accumulate
11− toBashArray = arr: "(" + (lib.concatStringsSep " " arr) + ")";
13− # Create a list element for a project coverage index page.
14− coverageListElement = coverageReport:
17− <a href="${coverageReport.passthru.name}/hpc_index.html">${coverageReport.passthru.name}</a>
21− projectIndexHtml = pkgs.writeText "index.html" ''
24− <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
28− WARNING: Modules with no coverage are not included in any of these reports, this is just how HPC works under the hood.
31− <h2>Union Report</h2>
32− <p>The following report shows how each module is covered by any test in the project:</p>
35− <a href="all/hpc_index.html">all</a>
40− <h2>Individual Reports</h2>
41− <p>The following reports show how the tests of each package cover modules in the project:</p>
43− ${with lib; concatStringsSep "\n" (map coverageListElement coverageReports)}
50− ghc = project.pkg-set.config.ghc.package;
52− libs = lib.unique (lib.concatMap (r: r.mixLibraries) coverageReports);
56− (l: "${l}/share/hpc/vanilla/mix/${l.identifier.name}-${l.identifier.version}")
59− srcDirs = map (l: l.srcSubDirPath) libs;
61− allCoverageReport = haskellLib.coverageReport {
63− checks = lib.flatten (lib.concatMap
64− (pkg: lib.optional (pkg ? checks) (lib.filter lib.isDerivation (lib.attrValues pkg.checks)))
65− (lib.attrValues (haskellLib.selectProjectPackages project.hsPkgs)));
66− mixLibraries = lib.concatMap
67− (pkg: lib.optional (pkg.components ? library) pkg.components.library)
68− (lib.attrValues (haskellLib.selectProjectPackages project.hsPkgs));
69− ghc = project.pkg-set.config.ghc.package;
72−in pkgs.runCommand "project-coverage-report"
73− ({ nativeBuildInputs = [ (ghc.buildGHC or ghc) pkgs.buildPackages.zip ];
74− LANG = "en_US.UTF-8";
75− LC_ALL = "en_US.UTF-8";
76− } // lib.optionalAttrs (stdenv.buildPlatform.libc == "glibc") {
77− LOCALE_ARCHIVE = "${pkgs.buildPackages.glibcLocales}/lib/locale/locale-archive";
83− local -n includedModules=$3
87− local hpcMarkupCmd=("hpc" "markup" "--destdir=$destDir")
88− for srcDir in "''${srcDs[@]}"; do
89− hpcMarkupCmd+=("--srcdir=$srcDir")
92− for mixDir in "''${mixDs[@]}"; do
93− hpcMarkupCmd+=("--hpcdir=$mixDir")
96− for module in "''${includedModules[@]}"; do
97− hpcMarkupCmd+=("--include=$module")
100− hpcMarkupCmd+=("$tixFile")
102− echo "''${hpcMarkupCmd[@]}"
103− eval "''${hpcMarkupCmd[@]}"
106− function findModules() {
111− mapfile -d $'\0' $1 < <(find ./ -type f \
112− -wholename "$pattern" -not -name "Paths*" \
113− -exec basename {} \; \
114− | sed "s/\.mix$//" \
119− mkdir -p $out/nix-support
120− mkdir -p $out/share/hpc/vanilla/tix/all
121− mkdir -p $out/share/hpc/vanilla/mix/
122− mkdir -p $out/share/hpc/vanilla/html/
124− # Find all tix files in each package
126− ${with lib; concatStringsSep "\n" (map (coverageReport: ''
127− identifier="${coverageReport.name}"
128− report=${coverageReport}
129− tix="$report/share/hpc/vanilla/tix/$identifier/$identifier.tix"
130− if test -f "$tix"; then
134− # Copy mix, tix, and html information over from each report
135− cp -Rn $report/share/hpc/vanilla/mix/$identifier $out/share/hpc/vanilla/mix/
136− cp -R $report/share/hpc/vanilla/tix/* $out/share/hpc/vanilla/tix/
137− cp -R $report/share/hpc/vanilla/html/* $out/share/hpc/vanilla/html/
138− '') coverageReports)}
140− # Copy out "all" coverage report
141− cp -R ${allCoverageReport}/share/hpc/vanilla/tix/all $out/share/hpc/vanilla/tix
142− cp -R ${allCoverageReport}/share/hpc/vanilla/html/all $out/share/hpc/vanilla/html
144− # Markup a HTML coverage summary report for the entire project
145− cp ${projectIndexHtml} $out/share/hpc/vanilla/html/index.html
147− echo "report coverage $out/share/hpc/vanilla/html/index.html" >> $out/nix-support/hydra-build-products
148− ( cd $out/share/hpc/vanilla/html ; zip -r $out/share/hpc/vanilla/html.zip . )
149− echo "file zip $out/share/hpc/vanilla/html.zip" >> $out/nix-support/hydra-build-products
@@ -1,204 +0,0 @@
1−# The following collects coverage information from a set of given "checks" and
2−# provides a coverage report showing how those "checks" cover a set of given
4−{ stdenv, lib, haskellLib, pkgs }:
6−# Name of the coverage report, which should be unique.
8−# List of check derivations that generate coverage.
10−# List of libraries to include in the coverage report. If one of the above
11−# checks generates coverage for a particular library, coverage will only
12−# be included if that library is in this list.
14−# Hack for project-less projects.
15−, ghc ? if mixLibraries == [] then null else (lib.head mixLibraries).project.pkg-set.config.ghc.package
19− toBashArray = arr: "(" + (lib.concatStringsSep " " arr) + ")";
21− mixDir = l: "${l}/share/hpc/vanilla/mix/${l.identifier.name}-${l.identifier.version}";
22− mixDirs = map mixDir mixLibraries;
24− srcDirs = map (l: l.srcSubDirPath) mixLibraries;
26−in pkgs.runCommand (name + "-coverage-report")
27− ({nativeBuildInputs = [ (ghc.buildGHC or ghc) pkgs.buildPackages.zip ];
29− inherit name checks mixLibraries;
31− # HPC will fail if the Haskell file contains non-ASCII characters,
32− # unless our locale is set correctly. This has been fixed, but we
33− # don't know what version of HPC we will be using, hence we should
34− # always use the workaround.
35− # https://gitlab.haskell.org/ghc/ghc/-/issues/17073
36− LANG = "en_US.UTF-8";
37− LC_ALL = "en_US.UTF-8";
38− } // lib.optionalAttrs (stdenv.buildPlatform.libc == "glibc") {
39− LOCALE_ARCHIVE = "${pkgs.buildPackages.glibcLocales}/lib/locale/locale-archive";
45− local -n includedModules=$3
49− local hpcMarkupCmd=("hpc" "markup" "--destdir=$destDir")
50− for srcDir in "''${srcDs[@]}"; do
51− hpcMarkupCmd+=("--srcdir=$srcDir")
54− for mixDir in "''${mixDs[@]}"; do
55− hpcMarkupCmd+=("--hpcdir=$mixDir")
58− for module in "''${includedModules[@]}"; do
59− hpcMarkupCmd+=("--include=$module")
62− hpcMarkupCmd+=("$tixFile")
64− echo "''${hpcMarkupCmd[@]}"
65− eval "''${hpcMarkupCmd[@]}"
69− local -n includedModules=$1
73− if (( "''${#tixFs[@]}" > 0 )); then
74− local hpcSumCmd=("hpc" "sum" "--union" "--output=$outFile")
76− for module in "''${includedModules[@]}"; do
77− hpcSumCmd+=("--include=$module")
80− for tixFile in "''${tixFs[@]}"; do
81− hpcSumCmd+=("$tixFile")
84− echo "''${hpcSumCmd[@]}"
85− eval "''${hpcSumCmd[@]}"
87− # If there are no tix files we output an empty tix file so that we can
88− # markup an empty HTML coverage report. This is preferable to failing to
89− # output a HTML report.
90− echo 'Tix []' > $outFile
94− function findModules() {
96− local -n searchDirs=$2
99− for dir in "''${searchDirs[@]}"; do
102− mapfile -d $'\0' temp < <(find ./ -type f \
103− -wholename "$pattern" -not -name "Paths*" \
104− -exec basename {} \; \
105− | sed "s/\.mix$//" \
107− result+=("''${temp[@]}")
112− mkdir -p $out/nix-support
113− mkdir -p $out/share/hpc/vanilla/mix/
114− mkdir -p $out/share/hpc/vanilla/tix/${name}
115− mkdir -p $out/share/hpc/vanilla/html/${name}
117− local srcDirs=${toBashArray srcDirs}
118− local mixDirs=${toBashArray mixDirs}
120− # Copy out mix files used for this report
121− for dir in "''${mixDirs[@]}"; do
122− if [ -d "$dir" ]; then
123− cp -R "$dir" $out/share/hpc/vanilla/mix/
128− # Mix modules for all packages in "mixLibraries"
129− findModules mixModules mixDirs "*.mix"
131− # We need to make a distinction between library "exposed-modules" and
132− # "other-modules" used in test suites:
133− # - "exposed-modules" are addressed as "$library-$version-$hash/module"
134− # - "other-modules" are addressed as "module"
136− # This complicates the code required to find the mix modules. For a given mix directory:
139− # └── ntp-client-0.0.1
140− # └── ntp-client-0.0.1-gYjRsBHUCaHX7ENcjHnw5
141− # ├── Network.NTP.Client.mix
142− # ├── Network.NTP.Client.Packet.mix
143− # └── Network.NTP.Client.Query.mix
145− # Iff ntp-client uses "other-modules" in a test suite, both:
146− # - "mix/ntp-client-0.0.1", and
147− # - "mix/ntp-client-0.0.1/ntp-client-0.0.1-gYjRsBHUCaHX7ENcjHnw5"
148− # need to be provided to hpc as search directories.
150− # I'd prefer to just exclude "other-modules", but I can't think of an easy
151− # way to do that in bash.
153− # Here we expand the search dirs and modify the mix dirs accordingly:
154− for dir in "''${mixDirs[@]}"; do
155− local otherModulesSearchDirs=()
156− # Simply consider any directory with a mix file as a search directory.
157− mapfile -d $'\0' otherModulesSearchDirs < <(find $dir -type f \
158− -wholename "*.mix" \
159− -exec dirname {} \; \
162− mixDirs+=("''${otherModulesSearchDirs[@]}")
166− ${lib.concatStringsSep "\n" (builtins.map (check: ''
167− if [ -d "${check}/share/hpc/vanilla/tix" ]; then
168− pushd ${check}/share/hpc/vanilla/tix
170− tixFile="$(find . -iwholename "*.tix" -type f -print -quit)"
171− local newTixFile=$out/share/hpc/vanilla/tix/${check.name}/"$(basename $tixFile)"
173− mkdir -p "$(dirname $newTixFile)"
174− # Copy over the tix file verbatim
175− cp "$tixFile" "$newTixFile"
177− # Add the tix file to our list
178− tixFiles+=("$newTixFile")
180− # Create a coverage report for *just that check* affecting any of the
182− markup srcDirs mixDirs mixModules "$out/share/hpc/vanilla/html/${check.name}/" "$newTixFile"
189− # Sum tix files to create a tix file with tix information from all tests in
190− # the package and markup a HTML report from this info.
191− local sumTixFile="$out/share/hpc/vanilla/tix/${name}/${name}.tix"
192− local markupOutDir="$out/share/hpc/vanilla/html/${name}"
194− # Sum all of our tix files
195− sumTix mixModules tixFiles "$sumTixFile"
197− # Markup a HTML report
198− markup srcDirs mixDirs mixModules "$markupOutDir" "$sumTixFile"
200− # Provide a HTML zipfile and Hydra links
201− ( cd "$markupOutDir" ; zip -r $out/share/hpc/vanilla/${name}-html.zip . )
202− echo "report coverage $markupOutDir/hpc_index.html" >> $out/nix-support/hydra-build-products
203− echo "file zip $out/share/hpc/vanilla/${name}-html.zip" >> $out/nix-support/hydra-build-products
@@ -4,8 +4,11 @@
4with haskellLib;
4with haskellLib;
7− # Why `final.buildPackages.buildPackages.gitMinimal`?
7+ # Why `final.evalPackages.buildPackages.gitMinimal`?
8− # Why not just final.buildPackages.gitMinimal?
8+ # Why not just final.evalPackages.gitMinimal?
10+ # A problem arises when `evalPackages` is `buildPackages`.i
11+ # As may be the case in a flake.
10 # It turns out `git` depends on `gdb` in a round about way:
13 # It turns out `git` depends on `gdb` in a round about way:
11 # git -> openssh -> libfido2 -> systemd -> python libxml -> Cython -> gdb
14 # git -> openssh -> libfido2 -> systemd -> python libxml -> Cython -> gdb
@@ -21,7 +24,7 @@ let
21 # * When `gdb` does not exist for `js`, so when cross
24 # * When `gdb` does not exist for `js`, so when cross
22 # compiling with ghcjs `final.buildPackages.git` fails
25 # compiling with ghcjs `final.buildPackages.git` fails
23 # to build at all.
26 # to build at all.
24− inherit (pkgs.buildPackages.buildPackages) gitMinimal;
27+ inherit (pkgs.evalPackages.buildPackages) gitMinimal;
27 # Within the package components, these are the attribute names of
30 # Within the package components, these are the attribute names of
@@ -49,7 +52,8 @@ in {
50 in libComp (subComps z);
53 in libComp (subComps z);
52− getAllComponents = foldComponents subComponentTypes (c: acc: [c] ++ acc) [];
55+ getAllComponents = foldComponents subComponentTypes (c: acc:
56+ lib.optional c.buildable c ++ acc) [];
54 componentPrefix = {
58 componentPrefix = {
55 sublibs = "lib";
59 sublibs = "lib";
@@ -59,31 +63,24 @@ in {
59 benchmarks = "bench";
63 benchmarks = "bench";
62− # For looking up the components attribute based on the cabal component type
65− lib.mapAttrsToList (value: name: { inherit name value; })
68 applyComponents = f: config:
66 applyComponents = f: config:
70 comps = config.components;
68 comps = config.components;
71 applyLibrary = cname: f { cname = config.package.identifier.name; ctype = "lib"; };
69 applyLibrary = cname: f { cname = config.package.identifier.name; ctype = "lib"; };
72 applySubComp = ctype: cname: f { inherit cname; ctype = componentPrefix.${ctype} or (throw "Missing component mapping for ${ctype}."); };
70 applySubComp = ctype: cname: f { inherit cname; ctype = componentPrefix.${ctype} or (throw "Missing component mapping for ${ctype}."); };
73− isBuildable = comp:
71+ applyAllComp = f { cname = config.package.identifier.name; ctype = "all"; };
74− config.package.buildable # Set manually in a module (allows whole packages to be disabled)
72+ buildableAttrs = lib.filterAttrs (n: comp: comp.buildable or true);
75− && comp.buildable # Set based on `buildable` in `.cabal` files
73+ libComp = if comps.library == null || !(comps.library.buildable or true)
76− && comp.planned; # Set if the component was in the `plan.json`
77− buildableAttrs = lib.filterAttrs (n: isBuildable);
78− libComp = if comps.library == null || !(isBuildable comps.library)
80− else lib.mapAttrs applyLibrary (removeAttrs comps (subComponentTypes ++ [ "setup" ]));
75+ else lib.mapAttrs applyLibrary (removeAttrs comps (subComponentTypes ++ [ "all" "setup" ]));
81 subComps = lib.mapAttrs
76 subComps = lib.mapAttrs
82 (ctype: attrs: lib.mapAttrs (applySubComp ctype) (buildableAttrs attrs))
77 (ctype: attrs: lib.mapAttrs (applySubComp ctype) (buildableAttrs attrs))
83 (builtins.intersectAttrs (lib.genAttrs subComponentTypes (_: null)) comps);
78 (builtins.intersectAttrs (lib.genAttrs subComponentTypes (_: null)) comps);
84− in subComps // libComp;
79+ allComp = { all = applyAllComp comps.all; };
80+ in subComps // libComp // allComp;
86 isLibrary = componentId: componentId.ctype == "lib";
82 isLibrary = componentId: componentId.ctype == "lib";
83+ isAll = componentId: componentId.ctype == "all";
87 isExe = componentId: componentId.ctype == "exe";
84 isExe = componentId: componentId.ctype == "exe";
88 isTest = componentId: componentId.ctype == "test";
85 isTest = componentId: componentId.ctype == "test";
89 isBenchmark = componentId: componentId.ctype == "bench";
86 isBenchmark = componentId: componentId.ctype == "bench";
@@ -92,7 +89,8 @@ in {
92 || isTest componentId
89 || isTest componentId
93 || isBenchmark componentId;
90 || isBenchmark componentId;
94 mayHaveExecutable = componentId:
91 mayHaveExecutable = componentId:
95− isExecutableType componentId;
92+ isExecutableType componentId
93+ || isAll componentId;
97 # Was there a reference to the package source in the `cabal.project` or `stack.yaml` file.
95 # Was there a reference to the package source in the `cabal.project` or `stack.yaml` file.
98 # This is used to make the default `packages` list for `shellFor`.
96 # This is used to make the default `packages` list for `shellFor`.
@@ -101,12 +99,14 @@ in {
102 # if it's a project package it has a src attribute set with an origSubDir attribute.
100 # if it's a project package it has a src attribute set with an origSubDir attribute.
103 # project packages are a subset of localPackages
101 # project packages are a subset of localPackages
104− isProjectPackage = p: p.isProject or false;
102+ isProjectPackage = p: p ? src && p.src ? origSubDir;
105 selectProjectPackages = ps: lib.filterAttrs (n: p: p != null && isLocalPackage p && isProjectPackage p) ps;
103 selectProjectPackages = ps: lib.filterAttrs (n: p: p != null && isLocalPackage p && isProjectPackage p) ps;
107 # Format a componentId as it should appear as a target on the
105 # Format a componentId as it should appear as a target on the
108 # command line of the setup script.
106 # command line of the setup script.
109− componentTarget = componentId:"${componentId.ctype}:${componentId.cname}";
107+ componentTarget = componentId:
108+ if componentId.ctype == "all" then ""
109+ else "${componentId.ctype}:${componentId.cname}";
111 # Remove null or empty values from an attrset.
111 # Remove null or empty values from an attrset.
112 optionalHooks = lib.filterAttrs (_: hook: hook != null && hook != "");
112 optionalHooks = lib.filterAttrs (_: hook: hook != null && hook != "");
@@ -133,7 +133,14 @@ in {
133 ## flatLibDepends :: Component -> [Package]
133 ## flatLibDepends :: Component -> [Package]
134 flatLibDepends = component:
134 flatLibDepends = component:
136− makePairs = map (p: rec { key=val.name; val=(p.components.library or p); });
136+ # this is a minor improvement over the "cannot coerce set to string"
137+ # error. It will now say:
139+ # > The option `packages.Win32.package.identifier.name' is used but not defined.
141+ # which indicates that the package.Win32 is missing and not defined.
142+ getKey = x: if x ? "outPath" then "${x}" else (throw x.identifier.name);
143+ makePairs = map (p: rec { key=getKey val; val=(p.components.library or p); });
137 closure = builtins.genericClosure {
144 closure = builtins.genericClosure {
138 startSet = makePairs component.depends;
145 startSet = makePairs component.depends;
139 operator = {val,...}: makePairs val.config.depends;
146 operator = {val,...}: makePairs val.config.depends;
@@ -189,7 +196,7 @@ in {
189 collectChecks' = collectChecks (_: true);
196 collectChecks' = collectChecks (_: true);
191 # Replacement for lib.cleanSourceWith that has a subDir argument.
198 # Replacement for lib.cleanSourceWith that has a subDir argument.
192− inherit (import ./clean-source-with.nix { inherit lib; }) cleanSourceWith;
199+ inherit (import ./clean-source-with.nix { inherit lib; }) cleanSourceWith canCleanSource;
194 # Use cleanSourceWith to filter just the files needed for a particular
201 # Use cleanSourceWith to filter just the files needed for a particular
195 # component of a package
202 # component of a package
@@ -199,7 +206,7 @@ in {
199 cleanGit = import ./clean-git.nix {
206 cleanGit = import ./clean-git.nix {
200 inherit lib cleanSourceWith;
207 inherit lib cleanSourceWith;
201 git = gitMinimal;
208 git = gitMinimal;
202− inherit (pkgs.buildPackages.buildPackages) runCommand;
209+ inherit (pkgs.evalPackages) runCommand;
205 # Some times it is handy to temporarily use a relative path between git
212 # Some times it is handy to temporarily use a relative path between git
@@ -229,17 +236,7 @@ in {
230 # Check a test component
237 # Check a test component
231 check = import ./check.nix {
238 check = import ./check.nix {
232− inherit stdenv lib haskellLib;
239+ inherit stdenv lib haskellLib srcOnly;
235− # Do coverage of a package
236− coverageReport = import ./cover.nix {
237− inherit stdenv lib haskellLib pkgs;
240− # Do coverage of a project
241− projectCoverageReport = import ./cover-project.nix {
242− inherit stdenv lib haskellLib pkgs;
245 # Use `isCrossHost` to identify when we are cross compiling and
242 # Use `isCrossHost` to identify when we are cross compiling and
@@ -248,99 +245,20 @@ in {
248 # In most cases we do not want to treat musl as a cross compiler.
245 # In most cases we do not want to treat musl as a cross compiler.
249 # For instance when building ghc we want to include ghci.
246 # For instance when building ghc we want to include ghci.
250 isCrossHost = stdenv.hostPlatform != stdenv.buildPlatform
247 isCrossHost = stdenv.hostPlatform != stdenv.buildPlatform
251− && !(stdenv.buildPlatform.isLinux && stdenv.hostPlatform.isMusl && stdenv.buildPlatform.linuxArch == stdenv.hostPlatform.linuxArch);
248+ && !(stdenv.buildPlatform.isLinux && stdenv.hostPlatform.isMusl && stdenv.buildPlatform.isx86 && stdenv.hostPlatform.isx86);
252 # This is the same as isCrossHost but for use when building ghc itself
249 # This is the same as isCrossHost but for use when building ghc itself
253 isCrossTarget = stdenv.targetPlatform != stdenv.hostPlatform
250 isCrossTarget = stdenv.targetPlatform != stdenv.hostPlatform
254− && !(stdenv.hostPlatform.isLinux && stdenv.targetPlatform.isMusl && stdenv.hostPlatform.linuxArch == stdenv.targetPlatform.linuxArch);
251+ && !(stdenv.hostPlatform.isLinux && stdenv.targetPlatform.isMusl && stdenv.hostPlatform.isx86 && stdenv.targetPlatform.isx86);
255 # Native musl build-host-target combo
252 # Native musl build-host-target combo
256 isNativeMusl = stdenv.hostPlatform.isMusl
253 isNativeMusl = stdenv.hostPlatform.isMusl
257 && stdenv.buildPlatform == stdenv.hostPlatform
254 && stdenv.buildPlatform == stdenv.hostPlatform
258 && stdenv.hostPlatform == stdenv.targetPlatform;
255 && stdenv.hostPlatform == stdenv.targetPlatform;
260− # Takes a version number, module or list of modules (for cabalProject)
257+ # Takes a version number or attr set of arguments (for cabalProject)
261− # and converts it to an list of project modules. This allows
258+ # and conversios it to an attr set of argments. This allows
262 # the use of "1.0.0.0" or { version = "1.0.0.0"; ... }
259 # the use of "1.0.0.0" or { version = "1.0.0.0"; ... }
263− versionOrModToMods = versionOrMod:
260+ versionOrArgsToArgs = versionOrArgs:
264− if lib.isString versionOrMod
261+ if lib.isAttrs versionOrArgs
265− then [{ version = versionOrMod; }]
262+ then versionOrArgs
266− else if lib.isList versionOrMod
263+ else { version = versionOrArgs; };
268− else [versionOrMod];
270− # Find the resolver in the stack.yaml file and fetch it if a sha256 value is provided
271− fetchResolver = import ./fetch-resolver.nix {
272− inherit (pkgs.buildPackages) pkgs;
275− inherit (import ./cabal-project-parser.nix {
277− }) parseIndexState parseSourceRepositoryPackages parseRepositories parseSourceRepositoryPackageBlock parseRepositoryBlock;
280− cabalToNixpkgsLicense = import ./spdx/cabal.nix pkgs;
282− # This function is like
283− # `src + (if subDir == "" then "" else "/" + subDir)`
284− # however when `includeSiblings` is set it maintains
285− # `src.origSrc` if there is one and instead adds to
286− # `src.origSubDir`. It uses `cleanSourceWith` when possible
287− # to keep `cleanSourceWith` support in the result.
288− appendSubDir = { src, subDir, includeSiblings ? false }:
292− haskellLib.cleanSourceWith {
293− inherit src subDir includeSiblings;
296− # Givin a `src` split it into a `root` path (based on `src.origSrc` if
297− # present) and `subDir` (based on `src.origSubDir). The
298− # `root` will still use the `filter` of `src` if there was one.
299− rootAndSubDir = src: rec {
300− subDir = src.origSubDir or "";
303− then src # if there was no subdir use the original src
305− # Use `cleanSourceWith` to make sure the `filter` is still used
306− if src ? origSrc && src ? filter
307− then haskellLib.cleanSourceWith {
308− name = src.name or "source" + "-root";
310− # Not passing src.origSubDir so that the result points `origSrc`
311− inherit (src) filter;
313− else src.origSrc or src; # If there is a subDir and origSrc (but no filter) use origSrc
316− # Run evalModules passing the project function argument (m) as a module along with
317− # the the a projectType module (../modules/cabal-project.nix or ../modules/stack-project.nix).
318− # The resulting config is then passed to the project function's implementation.
319− evalProjectModule = projectType: m: f:
322− modules = (if builtins.isList m then m else [m]) ++ [
323− # Include ../modules/cabal-project.nix or ../modules/stack-project.nix
324− (import ../modules/project-common.nix)
325− (import projectType)
326− # Pass the pkgs and the buildProject to the modules
327− ({ config, lib, ... }: {
330− # to make it easy to depends on build packages in, eg., shell definition:
331− inherit (project) buildProject;
333− inherit (project) hsPkgs;
339− # Converts from a `compoent.depends` value to a library derivation.
340− # In the case of sublibs the `depends` value should already be the derivation.
341− dependToLib = d: d.components.library or d;
343− projectOverlays = import ./project-overlays.nix {
344− inherit lib haskellLib;
lib/failed-cabal-configure.nixdeleted−9
@@ -1,9 +0,0 @@
2− configurationError = ./cabal-configure.out;
4− # Trace the error output to make sure the user has a chance to see it
5− # (even if the choose not to build anything from the project)
7− ERROR: cabal configure failed with:
8− ${__readFile configurationError}
9− '' { inherit configurationError; }
lib/fetch-resolver.nixdeleted−37
@@ -1,37 +0,0 @@
1−# Find the resolver in the stack.yaml file and fetch it if a sha256 value is provided
4−, stackYaml ? "stack.yaml"
5−, resolverSha256 ? null
8− srcDir = src.origSrcSubDir or src;
10− # Using origSrcSubDir bypasses any cleanSourceWith so that it will work when
11− # access to the store is restricted. If origSrc was already in the store
12− # you can pass the project in as a string.
13− rawStackYaml = builtins.readFile (srcDir + "/${stackYaml}");
15− # Determine the resolver as it may point to another file we need
19− rs = pkgs.lib.lists.concatLists (
20− pkgs.lib.lists.filter (l: l != null)
21− (builtins.map (l: builtins.match "^resolver: *(.*)" l)
22− (pkgs.lib.splitString "\n" rawStackYaml)));
24− pkgs.lib.lists.head (rs ++ [ null ]);
26− # If we found a resolver and we have a resolverSha256 then we should download it.
28− if resolver != null && resolverSha256 != null
31− sha256 = resolverSha256;
33− else if resolver != null && __pathExists (srcDir + "/${resolver}")
34− then pkgs.copyPathToStore (srcDir + "/${resolver}")
37−in { inherit resolver fetchedResolver; }
lib/ghcjs-project.nix+32−119
@@ -1,7 +1,3 @@
1−# IMPORTANT: This is for building ghcjs, not for building with
2−# ghcjs. To build with ghcjs then just replace `haskell-nix`
3−# with `pkgsCross.ghcjs.haskell-nix`.
5# For the time being we can't really treat ghcjs like a
1# For the time being we can't really treat ghcjs like a
6# regular ghc (with different target). We need this as a
2# regular ghc (with different target). We need this as a
7# stop-gap measure until ghcjs can be treated like a regular
3# stop-gap measure until ghcjs can be treated like a regular
@@ -21,45 +17,15 @@
21# of the project.
17# of the project.
24−, compiler-nix-name
20+, ghc ? pkgs.ghc
25−, ghc ? pkgs.buildPackages.haskell-nix.compiler.${compiler-nix-name}
21+, ghcjsVersion ? "8.6.0.1" # TODO get this from the source?
26−, ghcjsVersion # Version in the ghcjs.cabal file (that we will replace)
22+, ghcVersion ? "8.6.5" # TODO get this from the ghc arg?
27−, ghcVersion ? ghc.version
23+, happy ? pkgs.haskellPackages.happy
28−, happy ? pkgs.haskell-nix.tool compiler-nix-name "happy" {
24+, alex ? pkgs.haskellPackages.alex
29− index-state = pkgs.haskell-nix.internalHackageIndexState;
25+, cabal-install ? pkgs.cabal-install
31− materialized = ../materialized/ghcjs/happy + "/${compiler-nix-name}";
33−, alex ? pkgs.haskell-nix.tool compiler-nix-name "alex" {
34− index-state = pkgs.haskell-nix.internalHackageIndexState;
36− materialized = ../materialized/ghcjs/alex + "/${compiler-nix-name}";
39− if (builtins.compareVersions ghcjsVersion "8.10.0.0" >= 0)
40− then pkgs.haskell-nix.tool compiler-nix-name "cabal" {
41− index-state = pkgs.haskell-nix.internalHackageIndexState;
43− materialized = ../materialized/ghcjs/cabal + "/${compiler-nix-name}";
45− else pkgs.haskell-nix.tool compiler-nix-name "cabal" {
46− index-state = pkgs.haskell-nix.internalHackageIndexState;
48− # Cabal 3.2.1.0 no longer supports he mix of `cabal-version`,
49− # lack of `custom-setup` and `v1-install` used by ghcjs boot.
50− cabalProjectLocal = ''
51− constraints: Cabal <3.2.1.0
53− materialized = ../materialized/ghcjs/cabal + "/${compiler-nix-name}";
55−, overrideBootPackages ? []
60− isGhcjs88 = builtins.compareVersions ghcjsVersion "8.8.0.0" >= 0;
61− isGhcjs810 = builtins.compareVersions ghcjsVersion "8.10.0.0" >= 0;
63 # Inputs needed to configure the GHCJS source tree
29 # Inputs needed to configure the GHCJS source tree
64 configureInputs = with pkgs; [
30 configureInputs = with pkgs; [
@@ -72,26 +38,22 @@ let
73 cabal-install
39 cabal-install
76− inherit (pkgs.buildPackages) emscriptenupstream emscripten emsdk;
78 # Inputs needed to boot the GHCJS compiler
41 # Inputs needed to boot the GHCJS compiler
79− bootInputs = with pkgs.buildPackages; [
42+ bootInputs = with pkgs; [
80− # We used to pin nodejs to the 12 series, as strings can only be half the length in node 14+
43+ nodejs
81− # see https://github.com/nodejs/node/issues/33960
82− # Large TH splices are likely broken.
83− # TODO reinstate the pin of find a work around for ghcjs to send TH splice in chunks.
85 makeWrapper
44 makeWrapper
86 xorg.lndir
45 xorg.lndir
90− ++ [ ghc cabal-install emsdk ];
49+ ++ [ ghc cabal-install ]
50+ ++ lib.optionals stdenv.isDarwin [
51+ pkgs.buildPackages.gcc # https://github.com/ghcjs/ghcjs/issues/663
91 # Configured the GHCJS source
53 # Configured the GHCJS source
92− configured-src = (pkgs.runCommandCC "configured-ghcjs-src" {
54+ configured-src = pkgs.runCommand "configured-ghcjs-src" {
93 buildInputs = configureInputs;
55 buildInputs = configureInputs;
94− inherit src patches;
56+ inherit src;
96 export HOME=$(pwd)
58 export HOME=$(pwd)
97 mkdir $HOME/.cabal
59 mkdir $HOME/.cabal
@@ -100,80 +62,35 @@ let
100 chmod -R +w "$out"
62 chmod -R +w "$out"
101 cd "$out"
63 cd "$out"
108 # TODO: Find a better way to avoid impure version numbers
65 # TODO: Find a better way to avoid impure version numbers
109 sed -i 's/RELEASE=NO/RELEASE=YES/' ghc/configure.ac
66 sed -i 's/RELEASE=NO/RELEASE=YES/' ghc/configure.ac
110 sed -i 's/${ghcjsVersion}/${ghcVersion}/' ghcjs.cabal
67 sed -i 's/${ghcjsVersion}/${ghcVersion}/' ghcjs.cabal
112− ${
69+ # TODO: How to actually fix this?
113− # TODO: How to actually fix this?
70+ # Seems to work fine and produce the right files.
114− # Seems to work fine and produce the right files.
71+ touch ghc/includes/ghcautoconf.h
115− pkgs.lib.optionalString (!isGhcjs88) ''
72+ mkdir -p ghc/compiler/vectorise
116− touch ghc/includes/ghcautoconf.h
73+ mkdir -p ghc/utils/haddock/haddock-library/vendor
117− mkdir -p ghc/compiler/vectorise
118− mkdir -p ghc/utils/haddock/haddock-library/vendor
122− rm -rf utils/pkg-cache/ghc
123− cp -r ${ghc.generated} utils/pkg-cache/ghc
125− for a in integer-gmp base unix; do
126− cp ${../overlays/patches/config.sub} ghc/libraries/$a/config.sub
127− cp ${../overlays/patches/config.guess} ghc/libraries/$a/config.guess
128− chmod +w ghc/libraries/$a/config.*
131− sed -i 's/_AC_PROG_CC_C99/AC_PROG_CC_C99/' ghc/aclocal.m4
133 patchShebangs .
75 patchShebangs .
134 sed -i 's/gcc /cc /g' utils/makePackages.sh
76 sed -i 's/gcc /cc /g' utils/makePackages.sh
77+ cat utils/makePackages.sh
135 ./utils/makePackages.sh copy
78 ./utils/makePackages.sh copy
137− for a in integer-gmp base unix; do
80+ echo " build-tool-depends: alex:alex, happy:happy <= 1.19.9" >> lib/ghc-api-ghcjs/ghc-api-ghcjs.cabal
138− cp ${../overlays/patches/config.sub} lib/boot/pkg/$a/config.sub
140− ${ # it just so happens that all existing uses of overriding boot packages
141− # need to be installed right after template-haskell
142− # if at some point we would need to insert them at different points
143− # then we will have gto come up with something more clever
144− builtins.concatStringsSep "\n" (map ({name, src}: ''
145− rm -rf $out/lib/boot/pkg/${name}
146− cp -r ${src} $out/lib/boot/pkg/${name}
147− sed -i 's/^ - ${name}$//g' $out/lib/boot/boot.yaml
148− sed -i 's/^ - template-haskell$/ - template-haskell\n - ${name}/g' $out/lib/boot/boot.yaml
149− echo "Added ${name} to boot.yaml"
151− ) (pkgs.lib.reverseList overrideBootPackages))
154− chmod -R +w $out/lib/boot/pkg
82+ # nuke the HsBaseConfig.h from base.buildinfo.in; this will
155− '') // {
83+ # prevent it from being installed and provide incorrect values.
156− # The configured source includes /nix/store paths and so filtering can fail.
84+ sed -i 's/HsBaseConfig.h//g' lib/boot/pkg/base/base.buildinfo.in
157− filterPath = { path, ... }: path;
85+ cat lib/boot/pkg/base/base.buildinfo.in
159 # see https://github.com/ghcjs/ghcjs/issues/751 for the happy upper bound.
87 # see https://github.com/ghcjs/ghcjs/issues/751 for the happy upper bound.
161 ghcjsProject = pkgs.haskell-nix.cabalProject' (
89 ghcjsProject = pkgs.haskell-nix.cabalProject' (
162− (pkgs.lib.filterAttrs
90+ (pkgs.lib.filterAttrs
163− (n: _: !(builtins.any (x: x == n)
91+ (n: _: builtins.any (x: x == n)
164− [ "src" "ghcjsVersion" "ghcVersion" "happy" "alex" "cabal-install"
92+ ["src" "ghcjsVersion" "ghcVersion" "happy" "alex" "cabal-install"]) args) // {
165− "overrideBootPackages" "patches"])) args) // {
166 src = configured-src;
93 src = configured-src;
167− index-state = "2021-03-20T00:00:00Z";
168− inherit compiler-nix-name;
169− configureArgs = pkgs.lib.optionalString (isGhcjs88 && !isGhcjs810) "--constraint='Cabal >=3.0.2.0 && <3.1'";
170− # If a package is in both build-depends and build-tool-depends multiple versions may
171− # be in the `plan.json` file. Haskell.nix will pick the newer one, but when nbuilding
172− # ghcjs 8.6 we need to use the older happy version.
173− pkg-def-extras = pkgs.lib.optional (!isGhcjs88) (hackage: {
174− packages.happy.revision = hackage.happy."1.19.9".revisions.default;
176− materialized = ../materialized + "/ghcjs/${compiler-nix-name}";
177 modules = [
94 modules = [
179 # we need ghc-boot in here for ghcjs.
96 # we need ghc-boot in here for ghcjs.
@@ -182,11 +99,8 @@ let
182 "ghc-boot" "binary" "bytestring" "filepath" "directory" "containers"
99 "ghc-boot" "binary" "bytestring" "filepath" "directory" "containers"
183 "time" "unix" "Win32" ];
100 "time" "unix" "Win32" ];
185− (pkgs.lib.optionalAttrs (!isGhcjs88) {
186− packages.Cabal.patches = [ ./../overlays/patches/Cabal/fix-data-dir.patch ];
189− ghcOptions = ["-O2"];
103+ packages.Cabal.patches = [ ./../overlays/patches/Cabal/fix-data-dir.patch ];
190 packages.ghcjs.doHaddock = false;
104 packages.ghcjs.doHaddock = false;
191 packages.haddock-ghcjs.doHaddock = false;
105 packages.haddock-ghcjs.doHaddock = false;
192 packages.haddock-api-ghcjs.doHaddock = false;
106 packages.haddock-api-ghcjs.doHaddock = false;
@@ -200,7 +114,6 @@ let
200 packages.ghc.flags.ghci = true;
114 packages.ghc.flags.ghci = true;
201 packages.ghci.flags.ghci = true;
115 packages.ghci.flags.ghci = true;
202 # packages.ghcjs.components.library.configureFlags = [ "-fno-wrapper-install" ];
116 # packages.ghcjs.components.library.configureFlags = [ "-fno-wrapper-install" ];
203− packages.ghcjs.components.library.build-tools = [ alex ];
@@ -211,8 +124,8 @@ in ghcjsProject // {
211 shellFor = args: (ghcjsProject.hsPkgs.shellFor args).overrideAttrs (drv: {
124 shellFor = args: (ghcjsProject.hsPkgs.shellFor args).overrideAttrs (drv: {
212 buildInputs = (drv.buildInputs or []) ++ configureInputs;
125 buildInputs = (drv.buildInputs or []) ++ configureInputs;
213 nativeBuildInputs = (drv.nativeBuildInputs or []) ++ bootInputs;
126 nativeBuildInputs = (drv.nativeBuildInputs or []) ++ bootInputs;
217− inherit configureInputs bootInputs configured-src emscriptenupstream emscripten emsdk;
129+ inherit configureInputs bootInputs configured-src;
lib/import-and-filter-project.nix+31−42
@@ -4,58 +4,47 @@
4{ pkgs, haskellLib }:
4{ pkgs, haskellLib }:
5{ projectNix, sourceRepos, src }:
5{ projectNix, sourceRepos, src }:
7− # Full source including possible relative paths form the
7+ # Full source including possible relartive paths form the
8 # project directory.
8 # project directory.
9− srcRoot = haskellLib.cleanSourceWith {
9+ srcRoot =
10− name = if src ? name then "${src.name}-root" else "source-root";
10+ if haskellLib.canCleanSource src
11− src = src.origSrc or src;
11+ then haskellLib.cleanSourceWith {
12− filter = src.filter or (_: _: true);
12+ name = src.name + "-root";
13− };
13+ src = src.origSrc or src;
14+ inherit (src) filter;
16+ else src.origSrc or src;
14 # The sub directory containing the cabal.project or stack.yaml file
17 # The sub directory containing the cabal.project or stack.yaml file
15 projectSubDir' = src.origSubDir or ""; # With leading /
18 projectSubDir' = src.origSubDir or ""; # With leading /
16 projectSubDir = pkgs.lib.strings.removePrefix "/" projectSubDir'; # Without /
19 projectSubDir = pkgs.lib.strings.removePrefix "/" projectSubDir'; # Without /
17 projectSubDir'' = if projectSubDir == "" then "" else projectSubDir + "/"; # With trailing /
20 projectSubDir'' = if projectSubDir == "" then "" else projectSubDir + "/"; # With trailing /
18 project = import "${projectNix}${projectSubDir'}";
21 project = import "${projectNix}${projectSubDir'}";
19−in project // {
22+in {
20 extras = hackage: let old = (project.extras hackage).packages; in {
25 extras = hackage: let old = (project.extras hackage).packages; in {
21 packages = pkgs.lib.attrsets.mapAttrs (name: value:
26 packages = pkgs.lib.attrsets.mapAttrs (name: value:
22 if builtins.isFunction value
27 if builtins.isFunction value
23 then value
28 then value
24− else {...}@args: with pkgs.lib.strings;
29+ else {...}@args:
25− let
30+ let oldPkg = import value args;
26− oldPkg = import value args;
31+ packageSrc = if !pkgs.lib.strings.hasPrefix (toString projectNix) (toString oldPkg.src.content)
27− packageInfo =
32+ then toString oldPkg.src.content
28− if oldPkg.src ? url
33+ else let
29− then {
34+ subDir = pkgs.lib.strings.removePrefix "/" (
30− # The source is from a source-repository-package in a cabal.project file
35+ pkgs.lib.strings.removePrefix (toString projectNix)
31− # and lib/call-cabal-project-to-nix.nix should have replaced the url with
36+ (toString oldPkg.src.content));
32− # an index into the sourceRepos list.
37+ srcRepoPrefix = projectSubDir'' + ".source-repository-packages/";
33− isProject = false;
38+ in if pkgs.lib.strings.hasPrefix srcRepoPrefix subDir
34− packageSrc = pkgs.lib.lists.elemAt sourceRepos (toInt oldPkg.src.url);
39+ then
35− }
40+ pkgs.lib.lists.elemAt sourceRepos (
36− else if !hasPrefix "${projectNix}" (toString oldPkg.src.content)
41+ pkgs.lib.strings.toInt (pkgs.lib.strings.removePrefix srcRepoPrefix subDir))
37− then {
42+ else if haskellLib.canCleanSource srcRoot
38− # Source location does not match project prefix
43+ then haskellLib.cleanSourceWith { src = srcRoot; inherit subDir; }
39− isProject = false;
44+ else srcRoot + (if subDir == "" then "" else "/" + subDir);
40− packageSrc = toString oldPkg.src.content;
43− # Source does match project prefix and it is not from a source repository
45− packageSrc = haskellLib.appendSubDir {
47− subDir = removePrefix "/" (removePrefix "${projectNix}"
48− (toString oldPkg.src.content));
49− includeSiblings = true; # Filtering sibling dirs of the package dir is done in the
50− # component builder so that relative paths can be used to
51− # reference project directories not in the package subDir.
54 in oldPkg // {
45 in oldPkg // {
55− src = (pkgs.lib).mkDefault packageInfo.packageSrc;
46+ src = (pkgs.lib).mkDefault packageSrc;
56− package = oldPkg.package // {
57− isProject = (pkgs.lib).mkDefault packageInfo.isProject;
lib/materialize.nix+11−23
@@ -7,9 +7,6 @@
7 # the output. If this is set but does not exist
7 # the output. If this is set but does not exist
8 # the derivation will fail but with a message
8 # the derivation will fail but with a message
9 # advising how to populate it.
9 # advising how to populate it.
11− # A name to use when referring to the thing currently being
12− # materialized. Clients can pass in an attribute name or similar.
13, reasonNotSafe ? null
10, reasonNotSafe ? null
14 # Some times there a reasont the derivation will
11 # Some times there a reasont the derivation will
15 # not produce output that can be safely materialized.
12 # not produce output that can be safely materialized.
@@ -24,7 +21,7 @@
24}: derivation:
21}: derivation:
27− name = derivation.name + pkgs.lib.optionalString (derivation ? version) "-${derivation.version}";
24+ inherit (derivation) name;
29 traceIgnoringSha256 = reason: x:
26 traceIgnoringSha256 = reason: x:
30 if sha256 != null
27 if sha256 != null
@@ -36,15 +33,10 @@ let
36 then builtins.trace ("Warning: ignoring materialized for " + name + " " + reason) x
33 then builtins.trace ("Warning: ignoring materialized for " + name + " " + reason) x
39− traceWhenChecking = message: x:
40− if checkMaterialization
41− then builtins.trace message x
44 unchecked =
36 unchecked =
46− sha256message = "${name}: To make ${this} a fixed-output derivation but not materialized, set `${sha256Arg}` to the output of the 'calculateMaterializedSha' script in 'passthru'.";
38+ sha256message = "To make this a fixed-output derivation but not materialized, set `${sha256Arg}` to the output of ${calculateMaterializedSha}";
47− materializeMessage = "${name}: To materialize ${this} entirely, pass a writable path as the `materialized` argument and run the 'updateMaterialized' script in 'passthru'.";
39+ materializeMessage = "To materialize the output entirely, pass a writable path as the `materialized` argument and pass that path to ${generateMaterialized}";
48 in if reasonNotSafe != null
40 in if reasonNotSafe != null
50 # Warn the user if they tried to pin stuff down when it is not safe
42 # Warn the user if they tried to pin stuff down when it is not safe
@@ -55,20 +47,13 @@ let
55 else if sha256 != null
47 else if sha256 != null
57 # Let the user know how to materialize if they want to.
49 # Let the user know how to materialize if they want to.
58− traceWhenChecking materializeMessage calculateUseHash
50+ builtins.trace materializeMessage calculateUseHash
59 else # materialized == null && sha256 == null
51 else # materialized == null && sha256 == null
60 # Let the user know how to calculate a sha256 or materialize if they want to.
52 # Let the user know how to calculate a sha256 or materialize if they want to.
61− traceWhenChecking sha256message (traceWhenChecking materializeMessage calculateNoHash);
53+ builtins.trace sha256message (builtins.trace materializeMessage calculateNoHash);
63 # Build fully and check the hash and materialized versions
55 # Build fully and check the hash and materialized versions
64− checked =
56+ checked = runCommand name {} (''
65− # Let the user know what we are checking. This is useful for debugging issues
66− # where materialization fails to prevent infinite recurstion when:
67− # checkMaterialization = true;
68− (if materialized != null
69− then __trace "Checking materialization in ${toString materialized}"
71− runCommand name {} (''
72 ERR=$(mktemp -d)/errors.txt
57 ERR=$(mktemp -d)/errors.txt
74 + (pkgs.lib.optionalString (sha256 != null) ''
59 + (pkgs.lib.optionalString (sha256 != null) ''
@@ -128,7 +113,11 @@ let
128 calculateUseMaterialized =
113 calculateUseMaterialized =
129 assert materialized != null;
114 assert materialized != null;
130 assert __pathExists materialized;
115 assert __pathExists materialized;
131− { outPath = materialized; inherit name; };
116+ runCommand name (pkgs.lib.optionalAttrs (sha256 == null) hashArgs) ''
117+ cp -Lr ${materialized} $out
118+ # Make sure output files can be removed from the sandbox
132 calculateMaterializedSha =
121 calculateMaterializedSha =
133 writeShellScript "calculateSha" ''${nix}/bin/nix-hash --base32 --type sha256 ${calculateNoHash}'';
122 writeShellScript "calculateSha" ''${nix}/bin/nix-hash --base32 --type sha256 ${calculateNoHash}'';
@@ -144,7 +133,6 @@ let
146 # Generate the files
135 # Generate the files
148 rm -rf $TARGET
136 rm -rf $TARGET
149 cp -r ${calculateNoHash} "$TARGET"
137 cp -r ${calculateNoHash} "$TARGET"
150 chmod -R +w "$TARGET"
138 chmod -R +w "$TARGET"
lib/pkgconf-nixpkgs-map.nix+17−31
@@ -21,18 +21,18 @@ pkgs:
21 "cairo-ps" = [ pkgs."cairo" ];
21 "cairo-ps" = [ pkgs."cairo" ];
22 "cairo-svg" = [ pkgs."cairo" ];
22 "cairo-svg" = [ pkgs."cairo" ];
23 "crypt" = []; # provided by glibc
23 "crypt" = []; # provided by glibc
24+ "crypto" = [ pkgs."openssl" ];
24 "curses" = [ pkgs."ncurses" ];
25 "curses" = [ pkgs."ncurses" ];
25 "dbusmenu-glib-0.4" = [ pkgs."libdbusmenu" ];
26 "dbusmenu-glib-0.4" = [ pkgs."libdbusmenu" ];
26 "dbusmenu-gtk3-0.4" = [ pkgs."libdbusmenu-gtk3" ]; # do we also need pkgs."gtk3"
27 "dbusmenu-gtk3-0.4" = [ pkgs."libdbusmenu-gtk3" ]; # do we also need pkgs."gtk3"
27 "dl" = []; # provided by glibc
28 "dl" = []; # provided by glibc
28 "fftw3" = [ pkgs."fftw" ];
29 "fftw3" = [ pkgs."fftw" ];
29 "fftw3f" = [ pkgs."fftwFloat" ];
30 "fftw3f" = [ pkgs."fftwFloat" ];
30− "freetype2" = [ pkgs."freetype" ];
31 "gconf" = [ pkgs."GConf" ];
31 "gconf" = [ pkgs."GConf" ];
32 "gconf-2.0" = [ pkgs."GConf" ];
32 "gconf-2.0" = [ pkgs."GConf" ];
33 "gdk-2.0" = [ pkgs."gtk2" ];
33 "gdk-2.0" = [ pkgs."gtk2" ];
34 "gdk-3.0" = [ pkgs."gtk3" ];
34 "gdk-3.0" = [ pkgs."gtk3" ];
35− "gdk-pixbuf-2.0" = [ (pkgs."gdk-pixbuf" or pkgs."gdk_pixbuf") ];
35+ "gdk-pixbuf-2.0" = [ pkgs."gdk_pixbuf" ];
36 "gdk-x11-2.0" = [ pkgs."gdk_x11" ];
36 "gdk-x11-2.0" = [ pkgs."gdk_x11" ];
37 "gdk-x11-3.0" = [ pkgs."gtk3" ];
37 "gdk-x11-3.0" = [ pkgs."gtk3" ];
38 "gio-2.0" = [ pkgs."glib" ];
38 "gio-2.0" = [ pkgs."glib" ];
@@ -45,9 +45,7 @@ pkgs:
45 "gnome-vfs-2.0" = [ pkgs."gnome-vfs" ];
45 "gnome-vfs-2.0" = [ pkgs."gnome-vfs" ];
46 "gnome-vfs-module-2.0" = [ pkgs."gnome-vfs_module" ];
46 "gnome-vfs-module-2.0" = [ pkgs."gnome-vfs_module" ];
47 "gobject-2.0" = [ pkgs."glib" ];
47 "gobject-2.0" = [ pkgs."glib" ];
48− "gmodule-2.0" = [ pkgs."glib" ];
49 "gobject-introspection-1.0" = [ pkgs."gobject-introspection" ];
48 "gobject-introspection-1.0" = [ pkgs."gobject-introspection" ];
50− "graphene-gobject-1.0" = [ pkgs."graphene" ];
51 "gstreamer-audio-0.10" = [ pkgs."gst-plugins-base" ];
49 "gstreamer-audio-0.10" = [ pkgs."gst-plugins-base" ];
52 "gstreamer-audio-1.0" = [ pkgs."gst-plugins-base" ];
50 "gstreamer-audio-1.0" = [ pkgs."gst-plugins-base" ];
53 "gstreamer-base-0.10" = [ pkgs."gst-plugins-base" ];
51 "gstreamer-base-0.10" = [ pkgs."gst-plugins-base" ];
@@ -61,13 +59,10 @@ pkgs:
61 "gtk+-2.0" = [ pkgs."gtk2" ];
59 "gtk+-2.0" = [ pkgs."gtk2" ];
62 "gtk+-3.0" = [ pkgs."gtk3" ];
60 "gtk+-3.0" = [ pkgs."gtk3" ];
63 "gtk-x11-2.0" = [ pkgs."gtk_x11" ];
61 "gtk-x11-2.0" = [ pkgs."gtk_x11" ];
64− "gtkglext-1.0" = [ pkgs.gnome2.gtkglext pkgs.gtk2 ];
65 "gtksourceview-3.0" = [ pkgs."gtksourceview3" ];
62 "gtksourceview-3.0" = [ pkgs."gtksourceview3" ];
66− "harfbuzz-gobject" = [ pkgs."harfbuzz" ];
67 "hidapi-libusb" = [ pkgs."hidapi" ];
63 "hidapi-libusb" = [ pkgs."hidapi" ];
68 "icudata" = [ pkgs."icu" ];
64 "icudata" = [ pkgs."icu" ];
69 "icui18n" = [ pkgs."icu" ];
65 "icui18n" = [ pkgs."icu" ];
70− "icu-i18n" = [ pkgs."icu" ];
71 "icuuc" = [ pkgs."icu" ];
66 "icuuc" = [ pkgs."icu" ];
72 "idn" = [ pkgs."libidn" ];
67 "idn" = [ pkgs."libidn" ];
73 "IL" = [ pkgs."libdevil" ];
68 "IL" = [ pkgs."libdevil" ];
@@ -83,10 +78,7 @@ pkgs:
83 "lber" = [ pkgs."openldap" ];
78 "lber" = [ pkgs."openldap" ];
84 "ldap" = [ pkgs."openldap" ];
79 "ldap" = [ pkgs."openldap" ];
85 "libavutil" = [ pkgs."ffmpeg" ];
80 "libavutil" = [ pkgs."ffmpeg" ];
86− "libcrypto" = [ pkgs."openssl".dev ];
87− "libfreenect" = [ pkgs."freenect" ];
88 "libgsasl" = [ pkgs."gsasl" ];
81 "libgsasl" = [ pkgs."gsasl" ];
89− "liboath" = [ pkgs."liboauth" ];
90 "libpcre" = [ pkgs."pcre" ];
82 "libpcre" = [ pkgs."pcre" ];
91 "libqrencode" = [ pkgs."qrencode" ];
83 "libqrencode" = [ pkgs."qrencode" ];
92 "libR" = [ pkgs."R" ];
84 "libR" = [ pkgs."R" ];
@@ -94,14 +86,11 @@ pkgs:
94 "libsecp256k1" = [ pkgs."secp256k1" ];
86 "libsecp256k1" = [ pkgs."secp256k1" ];
95 "libsoup-2.4" = [ pkgs."libsoup" ];
87 "libsoup-2.4" = [ pkgs."libsoup" ];
96 "libsoup-gnome-2.4" = [ pkgs."libsoup" ];
88 "libsoup-gnome-2.4" = [ pkgs."libsoup" ];
97− "libssl" = [ pkgs."openssl".dev ];
98 "libsystemd" = [ pkgs."systemd" ];
89 "libsystemd" = [ pkgs."systemd" ];
99 "libudev" = [ pkgs."systemd" ];
90 "libudev" = [ pkgs."systemd" ];
100− "libusb-1.0" = [ pkgs."libusb1" ];
101 "libxml-2.0" = [ pkgs."libxml2" ];
91 "libxml-2.0" = [ pkgs."libxml2" ];
102 "libzip" = [ pkgs."libzip" ];
92 "libzip" = [ pkgs."libzip" ];
103 "libzmq" = [ pkgs."zeromq" ];
93 "libzmq" = [ pkgs."zeromq" ];
104− "libzstd" = [ pkgs."zstd" ];
105 "m" = []; # in stdenv
94 "m" = []; # in stdenv
106 "magic" = [ pkgs."file" ];
95 "magic" = [ pkgs."file" ];
107 "MagickWand" = [ pkgs."imagemagick" ];
96 "MagickWand" = [ pkgs."imagemagick" ];
@@ -115,16 +104,13 @@ pkgs:
115 "notify" = [ pkgs."libnotify" ];
104 "notify" = [ pkgs."libnotify" ];
116 "odbc" = [ pkgs."unixODBC" ];
105 "odbc" = [ pkgs."unixODBC" ];
117 "openblas" = [ pkgs."openblasCompat" ];
106 "openblas" = [ pkgs."openblasCompat" ];
118− "opencv" = [ pkgs."opencv3" ];
119 "panelw" = [ pkgs."ncurses" ];
107 "panelw" = [ pkgs."ncurses" ];
120 "pangocairo" = [ pkgs."pango" ];
108 "pangocairo" = [ pkgs."pango" ];
121 "pcap" = [ pkgs."libpcap" ];
109 "pcap" = [ pkgs."libpcap" ];
122 "pfs-1.2" = [ pkgs."pfstools" ];
110 "pfs-1.2" = [ pkgs."pfstools" ];
123 "png" = [ pkgs."libpng" ];
111 "png" = [ pkgs."libpng" ];
124 "poppler-glib" = [ pkgs."poppler" ];
112 "poppler-glib" = [ pkgs."poppler" ];
125− "poppler-cpp" = [ pkgs."poppler" ];
126 "pq" = [ pkgs."postgresql" ];
113 "pq" = [ pkgs."postgresql" ];
127− "libpq" = [ pkgs."postgresql" ];
128 "pthread" = [];
114 "pthread" = [];
129 "pulse" = [ pkgs."libpulseaudio" ];
115 "pulse" = [ pkgs."libpulseaudio" ];
130 "pulse-simple" = [ pkgs."libpulseaudio" ];
116 "pulse-simple" = [ pkgs."libpulseaudio" ];
@@ -146,6 +132,7 @@ pkgs:
146 "sodium" = [ pkgs."libsodium" ];
132 "sodium" = [ pkgs."libsodium" ];
147 "sqlite3" = [ pkgs."sqlite" ];
133 "sqlite3" = [ pkgs."sqlite" ];
148 "ssh2" = [ pkgs."libssh2" ];
134 "ssh2" = [ pkgs."libssh2" ];
135+ "ssl" = [ pkgs."openssl" ];
149 "statgrab" = [ pkgs."libstatgrab" ];
136 "statgrab" = [ pkgs."libstatgrab" ];
150 "stdc++" = []; # What is that?
137 "stdc++" = []; # What is that?
151 "stdc++.dll" = []; # What is that?
138 "stdc++.dll" = []; # What is that?
@@ -164,24 +151,23 @@ pkgs:
164 "webkit2gtk-4.0" = [ pkgs."webkitgtk" ];
151 "webkit2gtk-4.0" = [ pkgs."webkitgtk" ];
165 "webkit2gtk-web-extension-4.0" = [ pkgs."webkitgtk" ];
152 "webkit2gtk-web-extension-4.0" = [ pkgs."webkitgtk" ];
166 "webkitgtk-3.0" = [ pkgs."webkitgtk24x-gtk3" ]; # These are the old APIs, of which 2.4 is the last provider, so map directly to that
153 "webkitgtk-3.0" = [ pkgs."webkitgtk24x-gtk3" ]; # These are the old APIs, of which 2.4 is the last provider, so map directly to that
167− "vulkan" = [ pkgs."vulkan-loader" ]; # vulkan-loader provides vulkan.pc file for pkg-config.
154+ "X11" = [ pkgs."libX11" ];
168− "X11" = [ pkgs.xorg."libX11" ];
155+ "x11" = [ pkgs."xlibsWrapper" ];
169− "x11" = [ pkgs.xorg."xlibsWrapper" ];
156+ "xau" = [ pkgs."libXau" ];
170− "xau" = [ pkgs.xorg."libXau" ];
157+ "Xcursor" = [ pkgs."libXcursor" ];
171− "Xcursor" = [ pkgs.xorg."libXcursor" ];
172 "xerces-c" = [ pkgs."xercesc" ];
158 "xerces-c" = [ pkgs."xercesc" ];
173− "Xext" = [ pkgs.xorg."libXext" ];
159+ "Xext" = [ pkgs."libXext" ];
174− "xft" = [ pkgs.xorg."libXft" ];
160+ "xft" = [ pkgs."libXft" ];
175− "Xi" = [ pkgs.xorg."libXi" ];
161+ "Xi" = [ pkgs."libXi" ];
176− "Xinerama" = [ pkgs.xorg."libXinerama" ];
162+ "Xinerama" = [ pkgs."libXinerama" ];
177 "xkbcommon" = [ pkgs."libxkbcommon" ];
163 "xkbcommon" = [ pkgs."libxkbcommon" ];
178 "xml2" = [ pkgs."libxml2" ];
164 "xml2" = [ pkgs."libxml2" ];
179− "Xpm" = [ pkgs.xorg."libXpm" ];
165+ "Xpm" = [ pkgs."libXpm" ];
180− "Xrandr" = [ pkgs.xorg."libXrandr" ];
166+ "Xrandr" = [ pkgs."libXrandr" ];
181− "Xrender" = [ pkgs.xorg."libXrender" ];
167+ "Xrender" = [ pkgs."libXrender" ];
182− "Xss" = [ pkgs.xorg."libXScrnSaver" ];
168+ "Xss" = [ pkgs."libXScrnSaver" ];
183− "Xtst" = [ pkgs.xorg."libXtst" ];
169+ "Xtst" = [ pkgs."libXtst" ];
184− "Xxf86vm" = [ pkgs.xorg."libXxf86vm" ];
170+ "Xxf86vm" = [ pkgs."libXxf86vm" ];
185 "yaml" = [ pkgs."libyaml" ];
171 "yaml" = [ pkgs."libyaml" ];
186 "yaml-0.1" = [ pkgs."libyaml" ];
172 "yaml-0.1" = [ pkgs."libyaml" ];
187 "z" = [ pkgs."zlib" ];
173 "z" = [ pkgs."zlib" ];
lib/project-overlays.nixdeleted−37
@@ -1,37 +0,0 @@
5− # Provide a devshell profile (https://github.com/numtide/devshell),
6− # adapted from the project normal shell.
7− devshell = final: prev: {
10− packages = final.shell.nativeBuildInputs
11− # devshell does not use pkgs.mkShell / pkgs.stdenv.mkDerivation,
12− # so we need to explicit required dependencies which
13− # are provided implicitely by stdenv when using the normal shell:
14− ++ (lib.filter lib.isDerivation final.shell.stdenv.defaultNativeBuildInputs)
15− ++ [ final.pkgs.buildPackages.binutils ];
16− env = lib.mapAttrsToList lib.nameValuePair {
17− inherit (final.shell) CABAL_CONFIG NIX_GHC_LIBDIR;
22− # Provides easily accessible attrset for each type of
23− # components belonging to the project packages.
24− projectComponents = final: prev: {
25− # local project packages:
26− packages = haskellLib.selectProjectPackages final.hsPkgs;
27− # set of all exes (as first level entries):
28− exes = lib.foldl' lib.mergeAttrs { } (map (p: p.components.exes) (lib.attrValues final.packages));
29− # `tests` are the test suites which have been built.
30− tests = haskellLib.collectComponents' "tests" final.packages;
31− # `benchmarks` (only built, not run).
32− benchmarks = haskellLib.collectComponents' "benchmarks" final.packages;
33− # `checks` collect results of executing the tests:
34− checks = haskellLib.collectChecks' final.packages;
lib/spdx/cabal.nixdeleted−19
@@ -1,19 +0,0 @@
2− spdx = import ./parser.nix;
6− # For better performance these are not in the
7− # let block below (probably helps by increasing
9− license-map = import ../cabal-licenses.nix pkgs;
10− otherLicenseWarning = lic:
11− trace "WARNING: license \"${lic}\" not found"
12− license-map.LicenseRef-OtherLicense;
15− licenses = spdx.compound-expression license;
17− then otherLicenseWarning license
18− else map (lic: license-map.${lic} or (otherLicenseWarning lic))
19− (pkgs.lib.unique (head licenses)._1)
lib/spdx/licenses.nixdeleted−27
@@ -1,27 +0,0 @@
3− spdxJson = pkgs.buildPackages.spdx-license-list-data.json or pkgs.buildPackages.spdx-license-list-data;
4− materialized' = ../../materialized + "/spdx-${spdxJson.version}";
5− licensesJSON = fromJSON (replaceStrings
6− [ "\\u0026" "\\u0027" "\\u003d" ]
8− (readFile "${pkgs.buildPackages.haskell-nix.materialize {
9− materialized = if pathExists materialized' then materialized' else null;
10− } (pkgs.buildPackages.runCommand "spdx-json" { inherit (spdxJson) version; } ''
12− cp ${spdxJson}/json/licenses.json $out
16− dropFour = s: substring 0 (stringLength s - 4) s;
17− toSpdx = lic: with lic;
18− { spdxId = licenseId;
19− shortName = licenseId;
21− url = dropFour detailsUrl + "html";
22− free = isOsiApproved || lic.isFsfLibre or false;
24− toNamedValue = lic: { name = lic.spdxId; value = lic; };
27−listToAttrs (map (l: toNamedValue (toSpdx l)) licensesJSON.licenses)
lib/spdx/parser.nixdeleted−115
@@ -1,115 +0,0 @@
1−let String = { mempty = ""; mappend = a: b: a + b; };
2− List = { singleton = x: [x]; };
3− pair = a: b: { _1 = a; _2 = b; };
4− Pair = { pure = s: pair String.mempty s;
5− mappend = a: b: pair (String.mappend a._1 b._1) b._2;
6− map = f: p: pair (f p._1) p._2;
8− compose = f: g: x: f (g x);
9−in with builtins; rec {
10− # Parser a = String -> [(a, String)]
12− let strL = stringLength str;
14− in if str == substring 0 strL s
15− then [ (pair str (substring strL sL s)) ]
18− regex = capture_groups: re: s:
19− let result = match "(${re})(.*)" s;
22− else [ (pair (elemAt result 0) (elemAt result (1 + capture_groups))) ];
28− else let c = head cs;
38− then [ (Pair.pure s) ]
43− then [ (Pair.pure s) ]
44− else let p = head ps;
49− else let r = head result;
50− rest = chain ps' r._2;
53− else let r' = head rest;
54− in [ (Pair.mappend r r') ];
56− idstring = regex 0 "[-\.0-9a-zA-Z]+";
58− license-ref = let documentref = chain [ (string "DocumentRef-")
63− (optional documentref)
64− (string "LicenseRef-")
68− simple-expression = choice [ license-ref
69− (chain [ idstring (string "+") ])
73− compound-expression = let wrap = compose (map (Pair.map List.singleton));
75− (s: let result = simple-expression s;
78− else let r = head result;
79− rest = chain [(string " WITH ") idstring ] r._2;
82− else [(pair r._1 (head rest)._2)]
84− (s: let result = simple-expression s;
87− else let r = head result;
89− operator = choice [ (string " AND ")
95− else let s' = (head operator)._2;
96− licenses = compound-expression s';
99− else let ls = head licenses;
100− in [(pair ([firstLicense] ++ ls._1) ls._2)]
102− (wrap simple-expression)
103− (s: let openParen = string "(" s;
104− in if openParen == []
106− else let result = compound-expression (head openParen)._2;
109− else let r = head result;
110− closeParen = string ")" r._2;
111− in if closeParen == []
113− else [(pair r._1 (head closeParen)._2)])
lib/spdx/test.nixdeleted−32
@@ -1,32 +0,0 @@
1−let spdx = import ./parser.nix;
3− idstringF = [ (spdx.idstring "$@#!$") ];
4− idstringP = [ (spdx.idstring "blah") ];
6− license-refF = [ (spdx.license-ref "LicenseRef-$@#!$") ];
7− license-refP = [ (spdx.license-ref "LicenseRef-blah")
8− (spdx.license-ref "DocumentRef-beep:LicenseRef-boop")
11− simple-expressionF = [ (spdx.simple-expression "$@#!$") ];
12− simple-expressionP = [
13− (spdx.simple-expression "blah")
14− (spdx.simple-expression "blah+")
15− (spdx.simple-expression "LicenseRef-blah")
16− (spdx.simple-expression "DocumentRef-beep:LicenseRef-boop")
19− compound-expressionF = [ (spdx.compound-expression "$@#!$") ];
20− compound-expressionP = [
21− (spdx.compound-expression "blah")
22− (spdx.compound-expression "blah+")
23− (spdx.compound-expression "LicenseRef-blah")
24− (spdx.compound-expression "DocumentRef-beep:LicenseRef-boop")
25− (spdx.compound-expression "(blah)")
26− (spdx.compound-expression "beep OR boop")
27− (spdx.compound-expression "beep AND boop")
28− (spdx.compound-expression "beep WITH boop")
29− (spdx.compound-expression "beep AND (boop OR blap)")
30− (spdx.compound-expression "(beep AND ((boop OR ((blap)))))")
lib/stack-cache-generator.nix+38−66
@@ -1,59 +1,43 @@
1# Generate cache entries for dependencies of package defined in `src`
1# Generate cache entries for dependencies of package defined in `src`
3−{ src
3+{ pkgs, haskellLib, nix-tools }:
4−, stackYaml ? "stack.yaml"
4+{ src, stackYaml ? "stack.yaml" }:
6− # An alternative to adding `# nix-sha256:` comments into the
9− # { "https://github.com/jgm/pandoc-citeproc"."0.17"
10− # = "0dxx8cp2xndpw3jwiawch2dkrkp15mil7pyx7dvd810pwc22pm2q"; };
12− # A way to specify in which branch a git commit can
16− then { location, tag, ...}: branchMap."${location}"."${tag}" or null
18−, resolverSha256 ? null
24− inherit (evalPackages) runCommand;
25− inherit (evalPackages.haskell-nix) haskellLib;
27 # We only care about the stackYaml file. If src is a local directory
6 # We only care about the stackYaml file. If src is a local directory
28 # we want to avoid recalculating the cache unless the stack.yaml file
7 # we want to avoid recalculating the cache unless the stack.yaml file
29 # changes.
8 # changes.
31− inherit (haskellLib.fetchResolver {
10+ # Using origSrcSubDir bypasses any cleanSourceWith so that it will work when
32− inherit src stackYaml resolverSha256;
11+ # access to the store is restricted. If origSrc was already in the store
33− }) resolver fetchedResolver;
12+ # you can pass the project in as a string.
34−
13+ rawStackYaml = builtins.readFile ((src.origSrcSubDir or src) + ("/" + stackYaml));
35− # Filter just the stack yaml file and any resolver yaml file it points to.
36− maybeCleanedSource = haskellLib.cleanSourceWith {
40− origSrc = if src ? _isLibCleanSourceWith then src.origSrc else src;
41− origSubDir = if src ? _isLibCleanSourceWithEx then src.origSubDir else "";
42− relPath = evalPackages.lib.removePrefix (toString origSrc + origSubDir + "/") path;
44− # checks if path1 is a parent directory for path2
15+ # Determine the resolver as it may point to another file we need
45− isParent = path1: path2: evalPackages.lib.hasPrefix "${path1}/" path2;
16+ # to look at.
19+ rs = pkgs.lib.lists.concatLists (
20+ pkgs.lib.lists.filter (l: l != null)
21+ (builtins.map (l: builtins.match "^resolver: *(.*)" l)
22+ (pkgs.lib.splitString "\n" rawStackYaml)));
24+ pkgs.lib.lists.head (rs ++ [ null ]);
47− in
26+ # Filter just the stack yaml file and any reolver yaml file it points to.
48− (relPath == stackYaml)
27+ maybeCleanedSource =
49− || (resolver != null && (relPath == resolver || isParent relPath resolver))
28+ if haskellLib.canCleanSource src
50− ;
29+ then haskellLib.cleanSourceWith {
32+ pkgs.lib.hasSuffix ("/" + stackYaml) path
33+ || (resolver != null && pkgs.lib.hasSuffix ("/" + resolver) path);
53 # All repos served via ssh or git protocols are usually private
37 # All repos served via ssh or git protocols are usually private
54− private = url: evalPackages.lib.substring 0 4 url != "http";
38+ private = url: pkgs.lib.substring 0 4 url != "http";
56− repos = builtins.fromJSON (builtins.readFile (evalPackages.runCommand "stack-repos" {
40+ repos = builtins.fromJSON (builtins.readFile (pkgs.runCommand "stack-repos" {
57 buildInputs = [ nix-tools ];
41 buildInputs = [ nix-tools ];
59 TMP=$(mktemp -d)
43 TMP=$(mktemp -d)
@@ -61,43 +45,31 @@ let
61 cp -r "${maybeCleanedSource}/." $TMP
45 cp -r "${maybeCleanedSource}/." $TMP
62 chmod -R +w $TMP
46 chmod -R +w $TMP
63 substituteInPlace ${stackYaml} --replace "# nix-sha256:" "nix-sha256:"
47 substituteInPlace ${stackYaml} --replace "# nix-sha256:" "nix-sha256:"
64− ${evalPackages.lib.optionalString (fetchedResolver != null) ''
65− substituteInPlace ${stackYaml} --replace "${resolver}" "${fetchedResolver}"
67 stack-repos --stack-yaml ${stackYaml}
48 stack-repos --stack-yaml ${stackYaml}
68 cp repos.json $out
49 cp repos.json $out
71− cabalName = path: builtins.readFile (evalPackages.runCommand "cabal-name" {
52+ cabalName = path: builtins.readFile (pkgs.runCommand "cabal-name" {
72 buildInputs = [ nix-tools ];
53 buildInputs = [ nix-tools ];
74 cabal-name ${path} > $out
55 cabal-name ${path} > $out
77 hashPath = path:
58 hashPath = path:
78− builtins.readFile (evalPackages.runCommand "hash-path" { preferLocalBuild = true; }
59+ builtins.readFile (pkgs.runCommand "hash-path" { preferLocalBuild = true; }
79− "echo -n $(${evalPackages.nix}/bin/nix-hash --type sha256 --base32 ${path}) > $out");
60+ "echo -n $(${pkgs.nix}/bin/nix-hash --type sha256 --base32 ${path}) > $out");
80−in with evalPackages.lib;
61+in with pkgs.lib;
81concatMap (dep:
62concatMap (dep:
83 is-private = private dep.url;
64 is-private = private dep.url;
85− if dep.sha256 != null then dep.sha256
86− else if sha256map != null then sha256map."${dep.url}"."${dep.rev}"
88− branch = lookupBranch {
93− if !is-private && sha256 != null
66+ if !is-private && dep.sha256 != null
94− then evalPackages.fetchgit {
67+ then pkgs.fetchgit {
95− inherit (dep) url rev;
68+ inherit (dep) url rev sha256;
98− else builtins.fetchGit ({
70+ else builtins.fetchGit {
99 inherit (dep) url rev;
71 inherit (dep) url rev;
100− } // evalPackages.lib.optionalAttrs (branch != null) { ref = branch; });
72+ };
101 in map (subdir: {
73 in map (subdir: {
102 name = cabalName "${pkgsrc}/${subdir}";
74 name = cabalName "${pkgsrc}/${subdir}";
103 inherit (dep) url rev;
75 inherit (dep) url rev;
lib/system-nixpkgs-map.nix+83−122
@@ -1,136 +1,97 @@
1−# Maps of system pkg references from cabal file to nixpkgs pkgs.
1+# Maps of system pkg refenreces from
2−# library name (from `extra-libraries` field of `.cabal` file) -> nixpkgs package(s) mapping.
2+# cabal file to nixpkgs pkgs.
3−# This mapping is used to construct the `libs` component attribute.
3+# See ../docs/dev/pkg-map.md
4−# See ../docs/tutorials/pkg-map.md
6−
5+# fetchgit should always come from the buildPackages
7−with pkgs;
6+# if it comes from the targetPackages we won't even
8−
7+# be able to execute it.
9−let
8+ { fetchgit = pkgs.buildPackages.fetchgit; }
10− # On windows systems we need these to be propagatedBuildInputs so that the DLLs will be found.
9+# haskell lib -> nix lib mapping
11− gcclibs = if pkgs.stdenv.hostPlatform.isWindows then [
12− pkgs.windows.mcfgthreads
13− # If we just use `pkgs.buildPackages.gcc.cc` here it breaks the `th-dlls` test. TODO figure out why exactly.
14− (pkgs.buildPackages.runCommand "gcc-only" { nativeBuildInputs = [ pkgs.buildPackages.xorg.lndir ]; } ''
16− lndir ${pkgs.buildPackages.gcc.cc} $out
21−{ crypto = [ openssl ];
11+// { crypto = pkgs.openssl;
22− "c++" = []; # no libc++
12+ "c++" = null; # no libc++
23− "stdc++" = gcclibs;
13+ "stdc++" = null; "stdc++-6" = null;
24− "stdc++-6" = gcclibs;
14+ ssl = pkgs.openssl;
25− gcc_s_seh-1 = gcclibs;
15+ z = pkgs.zlib;
26− gcc_s = gcclibs;
16+ pthread = null; # available by default
27− gcc = gcclibs;
17+ GL = pkgs.libGL;
28− ssl = [ openssl ];
18+ GLU = pkgs.libGLU;
29− z = [ zlib ];
19+ alut = pkgs.freealut;
30− m = []; # Included with ghc
20+ X11 = pkgs.xorg.libX11;
31− pcap = [ libpcap ];
21+ Xrandr = pkgs.xorg.libXrandr;
32− pthread = null; # available by default
22+ Xext = pkgs.xorg.libXext;
33− GL = [ libGL ];
23+ Xi = pkgs.xorg.libXi;
34− GLEW = [ glew ];
24+ Xxf86vm = pkgs.xorg.libXxf86vm;
35− GLU = [ libGLU ];
25+ Xcursor = pkgs.xorg.libXcursor;
36− alut = [ freealut ];
26+ Xinerama = pkgs.xorg.libXinerama;
37− X11 = with xorg; [ libX11 ];
27+ mysqlclient = pkgs.mysql;
38− Xrandr = [ xorg.libXrandr ];
28+ Imlib2 = pkgs.imlib2;
39− Xrender = [ xorg.libXrender ];
29+ asound = pkgs.alsaLib;
40− Xss = [ xorg.libXScrnSaver ];
30+ ffi = null;
41− Xext = [ xorg.libXext ];
31+ bz2 = pkgs.bzip2;
42− Xi = [ xorg.libXi ];
32+ util = pkgs.utillinux;
43− Xxf86vm = [ xorg.libXxf86vm ];
33+ magic = pkgs.file;
44− Xcursor = [ xorg.libXcursor ];
34+ pq = pkgs.postgresql;
45− Xinerama = [ xorg.libXinerama ];
35+ iconv = pkgs.libiconv;
46− mysqlclient = [ mysql ];
36+ lapack = pkgs.liblapack;
47− Imlib2 = [ imlib2 ];
37+ boost_atomic = pkgs.boost;
48− asound = [ alsaLib ];
38+ boost_chrono = pkgs.boost;
49− ffi = null;
39+ boost_container = pkgs.boost;
50− bz2 = [ bzip2 ];
40+ boost_context = pkgs.boost;
51− util = [ utillinux ];
41+ boost_contract = pkgs.boost;
52− magic = [ file ];
42+ boost_coroutine = pkgs.boost;
53− pq = [ postgresql ];
43+ boost_date_time = pkgs.boost;
54− libpq = [ postgresql ];
44+ boost_fiber = pkgs.boost;
55− iconv = [ libiconv ];
45+ boost_filesystem = pkgs.boost;
56− lapack = [ liblapack ];
46+ boost_graph = pkgs.boost;
57− boost_atomic = [ boost ];
47+ boost_iostreams = pkgs.boost;
58− boost_chrono = [ boost ];
48+ boost_locale = pkgs.boost;
59− boost_container = [ boost ];
49+ boost_log_setup = pkgs.boost;
60− boost_context = [ boost ];
50+ boost_log = pkgs.boost;
61− boost_contract = [ boost ];
51+ boost_math_c99f = pkgs.boost;
62− boost_coroutine = [ boost ];
52+ boost_math_c99l = pkgs.boost;
63− boost_date_time = [ boost ];
53+ boost_math_c99 = pkgs.boost;
64− boost_fiber = [ boost ];
54+ boost_math_tr1f = pkgs.boost;
65− boost_filesystem = [ boost ];
55+ boost_math_tr1l = pkgs.boost;
66− boost_graph = [ boost ];
56+ boost_math_tr1 = pkgs.boost;
67− boost_iostreams = [ boost ];
57+ boost_prg_exec_monitor = pkgs.boost;
68− boost_locale = [ boost ];
58+ boost_program_options = pkgs.boost;
69− boost_log_setup = [ boost ];
59+ boost_random = pkgs.boost;
70− boost_log = [ boost ];
60+ boost_regex = pkgs.boost;
71− boost_math_c99f = [ boost ];
61+ boost_serialization = pkgs.boost;
72− boost_math_c99l = [ boost ];
62+ boost_signals = pkgs.boost;
73− boost_math_c99 = [ boost ];
63+ boost_stacktrace_addr2line = pkgs.boost;
74− boost_math_tr1f = [ boost ];
64+ boost_stacktrace_basic = pkgs.boost;
75− boost_math_tr1l = [ boost ];
65+ boost_stacktrace_noop = pkgs.boost;
76− boost_math_tr1 = [ boost ];
66+ boost_system = pkgs.boost;
77− boost_prg_exec_monitor = [ boost ];
67+ boost_thread = pkgs.boost;
78− boost_program_options = [ boost ];
68+ boost_timer = pkgs.boost;
79− boost_random = [ boost ];
69+ boost_type_erasure = pkgs.boost;
80− boost_regex = [ boost ];
70+ boost_unit_test_framework = pkgs.boost;
81− boost_serialization = [ boost ];
71+ boost_wave = pkgs.boost;
82− boost_signals = [ boost ];
72+ boost_wserialization = pkgs.boost;
83− boost_stacktrace_addr2line = [ boost ];
73+ tensorflow = pkgs.libtensorflow;
84− boost_stacktrace_basic = [ boost ];
74+ opencv = pkgs.opencv3;
85− boost_stacktrace_noop = [ boost ];
75+ icuuc = pkgs.icu;
86− boost_system = [ boost ];
76+ icui18n = pkgs.icu;
87− boost_thread = [ boost ];
77+ icudata = pkgs.icu;
88− boost_timer = [ boost ];
78+ vulkan = pkgs.vulkan-loader;
89− boost_type_erasure = [ boost ];
79+ sodium = pkgs.libsodium;
90− boost_unit_test_framework = [ boost ];
80+ }
91− boost_wave = [ boost ];
92− boost_wserialization = [ boost ];
93− tensorflow = [ libtensorflow ];
94− # odbc package requires unixODBC packages to be installed in order to successfully
95− # compile C sources (https://github.com/fpco/odbc/blob/master/cbits/odbc.c)
97− opencv = [ opencv3 ];
102− vulkan = [ vulkan-loader ];
103− sodium = [ libsodium ];
104− gfortran = [ gfortran.cc.lib ];
106− gpiod = [ libgpiod ];
109− freenect_sync = [ freenect ];
115− pulse-simple = [ libpulseaudio ];
116− oath = [ liboauth ];
118# -- windows
81# -- windows
119// { advapi32 = null; gdi32 = null; imm32 = null; msimg32 = null;
82// { advapi32 = null; gdi32 = null; imm32 = null; msimg32 = null;
120 shell32 = null; shfolder = null; shlwapi = null; user32 = null;
83 shell32 = null; shfolder = null; shlwapi = null; user32 = null;
121− ole32 = null; rpcrt4 = null;
84+ winmm = null;
122− winmm = null; userenv = null;
123 kernel32 = null; ws2_32 = null;
85 kernel32 = null; ws2_32 = null;
124 # this should be bundled with gcc.
86 # this should be bundled with gcc.
125 # if it's not we have more severe
87 # if it's not we have more severe
126 # issues anyway.
88 # issues anyway.
127− ssl32 = null; eay32 = [ openssl ];
89+ gcc_s_seh-1 = null;
90+ ssl32 = null; eay32 = pkgs.openssl;
128 iphlpapi = null; # IP Help API
91 iphlpapi = null; # IP Help API
129 msvcrt = null; # this is the libc
92 msvcrt = null; # this is the libc
130 Crypt32 = null;
93 Crypt32 = null;
135−# NB: these map almost 1:1 to the framework names
96+# NB: these map almost 1:1 to the famework names
136−// darwin.apple_sdk.frameworks
97+// pkgs.darwin.apple_sdk.frameworks
lib/system-pkgs.nixdeleted−16
@@ -1,16 +0,0 @@
1−# Cabal packages can depend on operating system packages. However
2−# package names vary between distributions - there is no standard.
4−# This file augments the nixpkgs package set with extra attributes
5−# from the system packages map file.
7−# This package set will be used when resolving system package
8−# dependencies of package descriptions.
16− // import ./system-nixpkgs-map.nix pkgs
materialized/bootstrap/ghc8107/alex/.plan.nix/alex.nixdeleted−160
@@ -1,160 +0,0 @@
11− flags = { small_base = true; };
14− identifier = { name = "alex"; version = "3.2.4"; };
15− license = "BSD-3-Clause";
16− copyright = "(c) Chis Dornan, Simon Marlow";
17− maintainer = "Simon Marlow <marlowsd@gmail.com>";
18− author = "Chris Dornan and Simon Marlow";
19− homepage = "http://www.haskell.org/alex/";
21− synopsis = "Alex is a tool for generating lexical analysers in Haskell";
22− description = "Alex is a tool for generating lexical analysers in Haskell.\nIt takes a description of tokens based on regular\nexpressions and generates a Haskell module containing code\nfor scanning text efficiently. It is similar to the tool\nlex or flex for C/C++.";
23− buildType = "Simple";
25− detailLevel = "FullDetails";
26− licenseFiles = [ "LICENSE" ];
31− "AlexTemplate-ghc-nopred"
32− "AlexTemplate-ghc-debug"
35− "AlexWrapper-basic-bytestring"
36− "AlexWrapper-strict-bytestring"
38− "AlexWrapper-posn-bytestring"
40− "AlexWrapper-monad-bytestring"
41− "AlexWrapper-monadUserState"
42− "AlexWrapper-monadUserState-bytestring"
60− "examples/Tokens_gscan.x"
61− "examples/Tokens_posn.x"
62− "examples/examples.x"
69− "examples/words_monad.x"
70− "examples/words_posn.x"
74− "templates/GenericTemplate.hs"
75− "templates/wrappers.hs"
80− "tests/tokens_gscan.x"
81− "tests/tokens_posn.x"
82− "tests/tokens_bytestring.x"
83− "tests/tokens_posn_bytestring.x"
84− "tests/tokens_scan_user.x"
85− "tests/tokens_strict_bytestring.x"
86− "tests/tokens_monad_bytestring.x"
87− "tests/tokens_monadUserState_bytestring.x"
88− "tests/tokens_bytestring_unicode.x"
89− "tests/basic_typeclass.x"
90− "tests/basic_typeclass_bytestring.x"
91− "tests/default_typeclass.x"
92− "tests/gscan_typeclass.x"
93− "tests/posn_typeclass.x"
94− "tests/monad_typeclass.x"
95− "tests/monad_typeclass_bytestring.x"
96− "tests/monadUserState_typeclass.x"
97− "tests/monadUserState_typeclass_bytestring.x"
98− "tests/posn_typeclass_bytestring.x"
99− "tests/strict_typeclass.x"
109− (hsPkgs."base" or (errorHandler.buildDepError "base"))
110− ] ++ (if flags.small_base
112− (hsPkgs."base" or (errorHandler.buildDepError "base"))
113− (hsPkgs."array" or (errorHandler.buildDepError "array"))
114− (hsPkgs."containers" or (errorHandler.buildDepError "containers"))
115− (hsPkgs."directory" or (errorHandler.buildDepError "directory"))
117− else [ (hsPkgs."base" or (errorHandler.buildDepError "base")) ]);
138− "Data/Ranged/Boundaries"
139− "Data/Ranged/RangedSet"
140− "Data/Ranged/Ranges"
142− hsSourceDirs = [ "src" ];
143− mainPath = [ "Main.hs" ] ++ [ "" ];
149− (hsPkgs."base" or (errorHandler.buildDepError "base"))
150− (hsPkgs."process" or (errorHandler.buildDepError "process"))
153− (hsPkgs.buildPackages.alex.components.exes.alex or (pkgs.buildPackages.alex or (errorHandler.buildToolDepError "alex:alex")))
156− mainPath = [ "test.hs" ];
160− } // rec { src = (pkgs.lib).mkDefault ../.; }
materialized/bootstrap/ghc8107/alex/default.nixdeleted−69
@@ -1,69 +0,0 @@
5− "ghc-prim".revision = (((hackage."ghc-prim")."0.6.1").revisions).default;
6− "array".revision = (((hackage."array")."0.5.4.0").revisions).default;
7− "integer-gmp".revision = (((hackage."integer-gmp")."1.0.3.0").revisions).default;
8− "process".revision = (((hackage."process")."1.6.13.2").revisions).default;
9− "base".revision = (((hackage."base")."4.14.3.0").revisions).default;
10− "rts".revision = (((hackage."rts")."1.0.1").revisions).default;
11− "time".revision = (((hackage."time")."1.9.3").revisions).default;
12− "unix".revision = (((hackage."unix")."2.7.2.2").revisions).default;
13− "bytestring".revision = (((hackage."bytestring")."0.10.12.0").revisions).default;
14− "containers".revision = (((hackage."containers")."0.6.5.1").revisions).default;
15− "directory".revision = (((hackage."directory")."1.3.6.0").revisions).default;
16− "filepath".revision = (((hackage."filepath")."1.4.2.1").revisions).default;
17− "deepseq".revision = (((hackage."deepseq")."1.4.4.0").revisions).default;
21− nix-name = "ghc8107";
23− "ghc-prim" = "0.6.1";
25− "integer-gmp" = "1.0.3.0";
26− "process" = "1.6.13.2";
31− "bytestring" = "0.10.12.0";
32− "containers" = "0.6.5.1";
33− "directory" = "1.3.6.0";
34− "filepath" = "1.4.2.1";
35− "deepseq" = "1.4.4.0";
40− { packages = { alex = ./.plan.nix/alex.nix; }; };
45− "alex" = { flags = { "small_base" = lib.mkOverride 900 true; }; };
51− "containers".components.library.planned = lib.mkOverride 900 true;
52− "ghc-prim".components.library.planned = lib.mkOverride 900 true;
53− "process".components.library.planned = lib.mkOverride 900 true;
54− "integer-gmp".components.library.planned = lib.mkOverride 900 true;
55− "array".components.library.planned = lib.mkOverride 900 true;
56− "bytestring".components.library.planned = lib.mkOverride 900 true;
57− "unix".components.library.planned = lib.mkOverride 900 true;
58− "alex".components.exes."alex".planned = lib.mkOverride 900 true;
59− "base".components.library.planned = lib.mkOverride 900 true;
60− "rts".components.library.planned = lib.mkOverride 900 true;
61− "time".components.library.planned = lib.mkOverride 900 true;
62− "deepseq".components.library.planned = lib.mkOverride 900 true;
63− "filepath".components.library.planned = lib.mkOverride 900 true;
64− "directory".components.library.planned = lib.mkOverride 900 true;
65− "alex".components.tests."tests".planned = lib.mkOverride 900 true;
materialized/bootstrap/ghc8107/happy-1.19.12/.plan.nix/happy.nixdeleted−200
@@ -1,200 +0,0 @@
11− flags = { small_base = true; };
14− identifier = { name = "happy"; version = "1.19.12"; };
15− license = "BSD-2-Clause";
16− copyright = "(c) Andy Gill, Simon Marlow";
17− maintainer = "Simon Marlow <marlowsd@gmail.com>";
18− author = "Andy Gill and Simon Marlow";
19− homepage = "https://www.haskell.org/happy/";
21− synopsis = "Happy is a parser generator for Haskell";
22− description = "Happy is a parser generator for Haskell. Given a grammar\nspecification in BNF, Happy generates Haskell code to parse the\ngrammar. Happy works in a similar way to the @yacc@ tool for C.";
23− buildType = "Simple";
25− detailLevel = "FullDetails";
26− licenseFiles = [ "LICENSE" ];
30− "HappyTemplate-arrays"
31− "HappyTemplate-arrays-coerce"
32− "HappyTemplate-arrays-coerce-debug"
33− "HappyTemplate-arrays-debug"
34− "HappyTemplate-arrays-ghc"
35− "HappyTemplate-arrays-ghc-debug"
36− "HappyTemplate-coerce"
57− "examples/glr/nlp/Main.lhs"
58− "examples/glr/nlp/Makefile"
59− "examples/glr/nlp/README"
60− "examples/glr/nlp/English.y"
61− "examples/glr/nlp/Hugs.lhs"
62− "examples/glr/Makefile"
63− "examples/glr/Makefile.defs"
64− "examples/glr/expr-eval/Main.lhs"
65− "examples/glr/expr-eval/Makefile"
66− "examples/glr/expr-eval/Expr.y"
67− "examples/glr/expr-eval/README"
68− "examples/glr/expr-eval/Hugs.lhs"
69− "examples/glr/expr-tree/Main.lhs"
70− "examples/glr/expr-tree/Makefile"
71− "examples/glr/expr-tree/Expr.y"
72− "examples/glr/expr-tree/README"
73− "examples/glr/expr-tree/Tree.lhs"
74− "examples/glr/expr-tree/Hugs.lhs"
75− "examples/glr/highly-ambiguous/Main.lhs"
76− "examples/glr/highly-ambiguous/Makefile"
77− "examples/glr/highly-ambiguous/Expr.y"
78− "examples/glr/highly-ambiguous/README"
79− "examples/glr/highly-ambiguous/Hugs.lhs"
80− "examples/glr/hidden-leftrec/Main.lhs"
81− "examples/glr/hidden-leftrec/Makefile"
82− "examples/glr/hidden-leftrec/Expr.y"
83− "examples/glr/hidden-leftrec/README"
84− "examples/glr/hidden-leftrec/Hugs.lhs"
85− "examples/glr/expr-monad/Main.lhs"
86− "examples/glr/expr-monad/Makefile"
87− "examples/glr/expr-monad/Expr.y"
88− "examples/glr/expr-monad/README"
89− "examples/glr/expr-monad/Hugs.lhs"
90− "examples/glr/bio-eg/Main.lhs"
91− "examples/glr/bio-eg/Makefile"
92− "examples/glr/bio-eg/Bio.y"
93− "examples/glr/bio-eg/README"
94− "examples/glr/bio-eg/1-1200.dna"
95− "examples/glr/bio-eg/1-600.dna"
96− "examples/glr/common/DV_lhs"
97− "examples/glr/common/DaVinciTypes.hs"
98− "examples/glr/packing/Main.lhs"
99− "examples/glr/packing/Makefile"
100− "examples/glr/packing/Expr.y"
101− "examples/glr/packing/README"
102− "examples/glr/packing/Hugs.lhs"
103− "examples/PgnParser.ly"
104− "examples/MonadTest.ly"
105− "examples/igloo/ParserM.hs"
106− "examples/igloo/Makefile"
107− "examples/igloo/Parser.y"
108− "examples/igloo/Foo.hs"
109− "examples/igloo/README"
110− "examples/igloo/Lexer.x"
113− "examples/DavesExample.ly"
114− "examples/ErrorTest.ly"
115− "examples/ErlParser.ly"
116− "examples/SimonsExample.ly"
117− "examples/LexerTest.ly"
120− "tests/AttrGrammar001.y"
121− "tests/AttrGrammar002.y"
125− "tests/TestMulti.ly"
126− "tests/TestPrecedence.ly"
127− "tests/bogus-token.y"
130− "tests/error001.stderr"
131− "tests/error001.stdout"
135− "tests/monaderror.y"
136− "tests/precedence001.ly"
137− "tests/precedence002.y"
138− "tests/test_rules.y"
143− "tests/monaderror-explist.y"
144− "tests/typeclass_monad001.y"
145− "tests/typeclass_monad002.ly"
146− "tests/typeclass_monad_lexer.y"
156− (hsPkgs."base" or (errorHandler.buildDepError "base"))
157− (hsPkgs."array" or (errorHandler.buildDepError "array"))
158− (hsPkgs."containers" or (errorHandler.buildDepError "containers"))
159− (hsPkgs."mtl" or (errorHandler.buildDepError "mtl"))
182− hsSourceDirs = [ "src" ];
183− mainPath = [ "Main.lhs" ];
189− (hsPkgs."base" or (errorHandler.buildDepError "base"))
190− (hsPkgs."process" or (errorHandler.buildDepError "process"))
193− (hsPkgs.buildPackages.happy.components.exes.happy or (pkgs.buildPackages.happy or (errorHandler.buildToolDepError "happy:happy")))
196− mainPath = [ "test.hs" ];
200− } // rec { src = (pkgs.lib).mkDefault ../.; }
materialized/bootstrap/ghc8107/happy-1.19.12/default.nixdeleted−75
@@ -1,75 +0,0 @@
5− "ghc-prim".revision = (((hackage."ghc-prim")."0.6.1").revisions).default;
6− "array".revision = (((hackage."array")."0.5.4.0").revisions).default;
7− "integer-gmp".revision = (((hackage."integer-gmp")."1.0.3.0").revisions).default;
8− "process".revision = (((hackage."process")."1.6.13.2").revisions).default;
9− "base".revision = (((hackage."base")."4.14.3.0").revisions).default;
10− "rts".revision = (((hackage."rts")."1.0.1").revisions).default;
11− "mtl".revision = (((hackage."mtl")."2.2.2").revisions).default;
12− "time".revision = (((hackage."time")."1.9.3").revisions).default;
13− "unix".revision = (((hackage."unix")."2.7.2.2").revisions).default;
14− "bytestring".revision = (((hackage."bytestring")."0.10.12.0").revisions).default;
15− "containers".revision = (((hackage."containers")."0.6.5.1").revisions).default;
16− "directory".revision = (((hackage."directory")."1.3.6.0").revisions).default;
17− "filepath".revision = (((hackage."filepath")."1.4.2.1").revisions).default;
18− "deepseq".revision = (((hackage."deepseq")."1.4.4.0").revisions).default;
19− "transformers".revision = (((hackage."transformers")."0.5.6.2").revisions).default;
23− nix-name = "ghc8107";
25− "ghc-prim" = "0.6.1";
27− "integer-gmp" = "1.0.3.0";
28− "process" = "1.6.13.2";
34− "bytestring" = "0.10.12.0";
35− "containers" = "0.6.5.1";
36− "directory" = "1.3.6.0";
37− "filepath" = "1.4.2.1";
38− "deepseq" = "1.4.4.0";
39− "transformers" = "0.5.6.2";
44− { packages = { happy = ./.plan.nix/happy.nix; }; };
49− "happy" = { flags = { "small_base" = lib.mkOverride 900 true; }; };
55− "containers".components.library.planned = lib.mkOverride 900 true;
56− "ghc-prim".components.library.planned = lib.mkOverride 900 true;
57− "happy".components.exes."happy".planned = lib.mkOverride 900 true;
58− "transformers".components.library.planned = lib.mkOverride 900 true;
59− "process".components.library.planned = lib.mkOverride 900 true;
60− "integer-gmp".components.library.planned = lib.mkOverride 900 true;
61− "array".components.library.planned = lib.mkOverride 900 true;
62− "bytestring".components.library.planned = lib.mkOverride 900 true;
63− "unix".components.library.planned = lib.mkOverride 900 true;
64− "base".components.library.planned = lib.mkOverride 900 true;
65− "rts".components.library.planned = lib.mkOverride 900 true;
66− "mtl".components.library.planned = lib.mkOverride 900 true;
67− "time".components.library.planned = lib.mkOverride 900 true;
68− "deepseq".components.library.planned = lib.mkOverride 900 true;
69− "filepath".components.library.planned = lib.mkOverride 900 true;
70− "happy".components.tests."tests".planned = lib.mkOverride 900 true;
71− "directory".components.library.planned = lib.mkOverride 900 true;
materialized/bootstrap/ghc8107/hscolour/.plan.nix/hscolour.nixdeleted−70
@@ -1,70 +0,0 @@
14− identifier = { name = "hscolour"; version = "1.24.4"; };
15− license = "LicenseRef-LGPL";
16− copyright = "2003-2017 Malcolm Wallace; 2006 Bjorn Bringert";
17− maintainer = "Malcolm Wallace";
18− author = "Malcolm Wallace";
19− homepage = "http://code.haskell.org/~malcolm/hscolour/";
21− synopsis = "Colourise Haskell code.";
22− description = "hscolour is a small Haskell script to colourise Haskell code. It currently\nhas six output formats:\nANSI terminal codes (optionally XTerm-256colour codes),\nHTML 3.2 with <font> tags,\nHTML 4.01 with CSS,\nHTML 4.01 with CSS and mouseover annotations,\nXHTML 1.0 with inline CSS styling,\nLaTeX,\nand mIRC chat codes.";
23− buildType = "Simple";
25− detailLevel = "FullDetails";
26− licenseFiles = [ "LICENCE-LGPL" ];
28− dataFiles = [ "hscolour.css" "data/rgb24-example-.hscolour" ];
36− (hsPkgs."base" or (errorHandler.buildDepError "base"))
37− (hsPkgs."containers" or (errorHandler.buildDepError "containers"))
41− "Language/Haskell/HsColour"
42− "Language/Haskell/HsColour/ANSI"
43− "Language/Haskell/HsColour/Anchors"
44− "Language/Haskell/HsColour/ACSS"
45− "Language/Haskell/HsColour/CSS"
46− "Language/Haskell/HsColour/Classify"
47− "Language/Haskell/HsColour/ColourHighlight"
48− "Language/Haskell/HsColour/Colourise"
49− "Language/Haskell/HsColour/General"
50− "Language/Haskell/HsColour/HTML"
51− "Language/Haskell/HsColour/InlineCSS"
52− "Language/Haskell/HsColour/LaTeX"
53− "Language/Haskell/HsColour/MIRC"
54− "Language/Haskell/HsColour/Options"
55− "Language/Haskell/HsColour/Output"
56− "Language/Haskell/HsColour/TTY"
62− (hsPkgs."base" or (errorHandler.buildDepError "base"))
63− (hsPkgs."containers" or (errorHandler.buildDepError "containers"))
66− mainPath = [ "HsColour.hs" ];
70− } // rec { src = (pkgs.lib).mkDefault ../.; }
materialized/bootstrap/ghc8107/hscolour/default.nixdeleted−47
@@ -1,47 +0,0 @@
5− "ghc-prim".revision = (((hackage."ghc-prim")."0.6.1").revisions).default;
6− "array".revision = (((hackage."array")."0.5.4.0").revisions).default;
7− "integer-gmp".revision = (((hackage."integer-gmp")."1.0.3.0").revisions).default;
8− "base".revision = (((hackage."base")."4.14.3.0").revisions).default;
9− "rts".revision = (((hackage."rts")."1.0.1").revisions).default;
10− "containers".revision = (((hackage."containers")."0.6.5.1").revisions).default;
11− "deepseq".revision = (((hackage."deepseq")."1.4.4.0").revisions).default;
15− nix-name = "ghc8107";
17− "ghc-prim" = "0.6.1";
19− "integer-gmp" = "1.0.3.0";
22− "containers" = "0.6.5.1";
23− "deepseq" = "1.4.4.0";
28− { packages = { hscolour = ./.plan.nix/hscolour.nix; }; };
31− { packages = { "hscolour" = { flags = {}; }; }; })
35− "containers".components.library.planned = lib.mkOverride 900 true;
36− "ghc-prim".components.library.planned = lib.mkOverride 900 true;
37− "hscolour".components.exes."HsColour".planned = lib.mkOverride 900 true;
38− "hscolour".components.library.planned = lib.mkOverride 900 true;
39− "integer-gmp".components.library.planned = lib.mkOverride 900 true;
40− "array".components.library.planned = lib.mkOverride 900 true;
41− "base".components.library.planned = lib.mkOverride 900 true;
42− "rts".components.library.planned = lib.mkOverride 900 true;
43− "deepseq".components.library.planned = lib.mkOverride 900 true;
materialized/bootstrap/ghc844/alex/.plan.nix/alex.nix+1−1
@@ -150,7 +150,7 @@
150 (hsPkgs."process" or (errorHandler.buildDepError "process"))
150 (hsPkgs."process" or (errorHandler.buildDepError "process"))
152 build-tools = [
152 build-tools = [
153− (hsPkgs.buildPackages.alex.components.exes.alex or (pkgs.buildPackages.alex or (errorHandler.buildToolDepError "alex:alex")))
153+ (hsPkgs.buildPackages.alex or (pkgs.buildPackages.alex or (errorHandler.buildToolDepError "alex")))
155 buildable = true;
155 buildable = true;
156 mainPath = [ "test.hs" ];
156 mainPath = [ "test.hs" ];
materialized/bootstrap/ghc844/alex/default.nix+18−34
@@ -3,34 +3,36 @@
4 packages = {
4 packages = {
5 "ghc-prim".revision = (((hackage."ghc-prim")."0.5.2.0").revisions).default;
5 "ghc-prim".revision = (((hackage."ghc-prim")."0.5.2.0").revisions).default;
6− "array".revision = (((hackage."array")."0.5.2.0").revisions).default;
7− "integer-gmp".revision = (((hackage."integer-gmp")."1.0.2.0").revisions).default;
8− "base".revision = (((hackage."base")."4.11.1.0").revisions).default;
9− "rts".revision = (((hackage."rts")."1.0").revisions).default;
10− "time".revision = (((hackage."time")."1.8.0.2").revisions).default;
11 "unix".revision = (((hackage."unix")."2.7.2.2").revisions).default;
6 "unix".revision = (((hackage."unix")."2.7.2.2").revisions).default;
12− "bytestring".revision = (((hackage."bytestring")."0.10.8.2").revisions).default;
7+ "rts".revision = (((hackage."rts")."1.0").revisions).default;
13− "containers".revision = (((hackage."containers")."0.5.11.0").revisions).default;
8+ "deepseq".revision = (((hackage."deepseq")."1.4.3.0").revisions).default;
14 "directory".revision = (((hackage."directory")."1.3.1.5").revisions).default;
9 "directory".revision = (((hackage."directory")."1.3.1.5").revisions).default;
10+ "containers".revision = (((hackage."containers")."0.5.11.0").revisions).default;
11+ "bytestring".revision = (((hackage."bytestring")."0.10.8.2").revisions).default;
12+ "base".revision = (((hackage."base")."4.11.1.0").revisions).default;
13+ "time".revision = (((hackage."time")."1.8.0.2").revisions).default;
15 "filepath".revision = (((hackage."filepath")."1.4.2").revisions).default;
14 "filepath".revision = (((hackage."filepath")."1.4.2").revisions).default;
16− "deepseq".revision = (((hackage."deepseq")."1.4.3.0").revisions).default;
15+ "process".revision = (((hackage."process")."1.6.3.0").revisions).default;
16+ "array".revision = (((hackage."array")."0.5.2.0").revisions).default;
17+ "integer-gmp".revision = (((hackage."integer-gmp")."1.0.2.0").revisions).default;
18 compiler = {
19 compiler = {
19 version = "8.4.4";
20 version = "8.4.4";
20 nix-name = "ghc844";
21 nix-name = "ghc844";
21 packages = {
22 packages = {
22 "ghc-prim" = "0.5.2.0";
23 "ghc-prim" = "0.5.2.0";
24− "integer-gmp" = "1.0.2.0";
28 "unix" = "2.7.2.2";
24 "unix" = "2.7.2.2";
29− "bytestring" = "0.10.8.2";
25+ "rts" = "1.0";
30− "containers" = "0.5.11.0";
26+ "deepseq" = "1.4.3.0";
31 "directory" = "1.3.1.5";
27 "directory" = "1.3.1.5";
28+ "containers" = "0.5.11.0";
29+ "bytestring" = "0.10.8.2";
32 "filepath" = "1.4.2";
32 "filepath" = "1.4.2";
33− "deepseq" = "1.4.3.0";
33+ "process" = "1.6.3.0";
35+ "integer-gmp" = "1.0.2.0";
@@ -43,23 +45,5 @@
43 "alex" = { flags = { "small_base" = lib.mkOverride 900 true; }; };
45 "alex" = { flags = { "small_base" = lib.mkOverride 900 true; }; };
49− "containers".components.library.planned = lib.mkOverride 900 true;
50− "ghc-prim".components.library.planned = lib.mkOverride 900 true;
51− "integer-gmp".components.library.planned = lib.mkOverride 900 true;
52− "array".components.library.planned = lib.mkOverride 900 true;
53− "bytestring".components.library.planned = lib.mkOverride 900 true;
54− "unix".components.library.planned = lib.mkOverride 900 true;
55− "alex".components.exes."alex".planned = lib.mkOverride 900 true;
56− "base".components.library.planned = lib.mkOverride 900 true;
57− "rts".components.library.planned = lib.mkOverride 900 true;
58− "time".components.library.planned = lib.mkOverride 900 true;
59− "deepseq".components.library.planned = lib.mkOverride 900 true;
60− "filepath".components.library.planned = lib.mkOverride 900 true;
61− "directory".components.library.planned = lib.mkOverride 900 true;
materialized/bootstrap/ghc844/happy-1.19.11/.plan.nix/happy.nix+5−5
@@ -23,14 +23,14 @@
23 buildType = "Custom";
23 buildType = "Custom";
24 isLocal = true;
24 isLocal = true;
25 setup-depends = [
25 setup-depends = [
26− (hsPkgs.buildPackages.Cabal or (pkgs.buildPackages.Cabal or (errorHandler.setupDepError "Cabal")))
26+ (hsPkgs.buildPackages.Cabal or (pkgs.buildPackages.Cabal or (errorHandler.buildToolDepError "Cabal")))
27− (hsPkgs.buildPackages.base or (pkgs.buildPackages.base or (errorHandler.setupDepError "base")))
27+ (hsPkgs.buildPackages.base or (pkgs.buildPackages.base or (errorHandler.buildToolDepError "base")))
28− (hsPkgs.buildPackages.directory or (pkgs.buildPackages.directory or (errorHandler.setupDepError "directory")))
28+ (hsPkgs.buildPackages.directory or (pkgs.buildPackages.directory or (errorHandler.buildToolDepError "directory")))
29− (hsPkgs.buildPackages.filepath or (pkgs.buildPackages.filepath or (errorHandler.setupDepError "filepath")))
29+ (hsPkgs.buildPackages.filepath or (pkgs.buildPackages.filepath or (errorHandler.buildToolDepError "filepath")))
31 detailLevel = "FullDetails";
31 detailLevel = "FullDetails";
32 licenseFiles = [ "LICENSE" ];
32 licenseFiles = [ "LICENSE" ];
33− dataDir = ".";
33+ dataDir = "";
34 dataFiles = [];
34 dataFiles = [];
35 extraSrcFiles = [
35 extraSrcFiles = [
36 "ANNOUNCE"
36 "ANNOUNCE"
materialized/bootstrap/ghc844/happy-1.19.11/default.nix+28−55
@@ -4,24 +4,24 @@
4 packages = {
4 packages = {
5 "binary".revision = (((hackage."binary")."0.8.5.1").revisions).default;
5 "binary".revision = (((hackage."binary")."0.8.5.1").revisions).default;
6 "ghc-prim".revision = (((hackage."ghc-prim")."0.5.2.0").revisions).default;
6 "ghc-prim".revision = (((hackage."ghc-prim")."0.5.2.0").revisions).default;
7− "array".revision = (((hackage."array")."0.5.2.0").revisions).default;
7+ "unix".revision = (((hackage."unix")."2.7.2.2").revisions).default;
8− "integer-gmp".revision = (((hackage."integer-gmp")."1.0.2.0").revisions).default;
8+ "mtl".revision = (((hackage."mtl")."2.2.2").revisions).default;
9− "pretty".revision = (((hackage."pretty")."1.1.3.6").revisions).default;
10− "process".revision = (((hackage."process")."1.6.3.0").revisions).default;
11− "base".revision = (((hackage."base")."4.11.1.0").revisions).default;
12 "rts".revision = (((hackage."rts")."1.0").revisions).default;
9 "rts".revision = (((hackage."rts")."1.0").revisions).default;
10+ "deepseq".revision = (((hackage."deepseq")."1.4.3.0").revisions).default;
11+ "parsec".revision = (((hackage."parsec")."3.1.13.0").revisions).default;
12+ "directory".revision = (((hackage."directory")."1.3.1.5").revisions).default;
13+ "containers".revision = (((hackage."containers")."0.5.11.0").revisions).default;
14+ "bytestring".revision = (((hackage."bytestring")."0.10.8.2").revisions).default;
13 "text".revision = (((hackage."text")."1.2.3.1").revisions).default;
15 "text".revision = (((hackage."text")."1.2.3.1").revisions).default;
14− "mtl".revision = (((hackage."mtl")."2.2.2").revisions).default;
16+ "Cabal".revision = (((hackage."Cabal")."2.2.0.1").revisions).default;
17+ "base".revision = (((hackage."base")."4.11.1.0").revisions).default;
15 "time".revision = (((hackage."time")."1.8.0.2").revisions).default;
18 "time".revision = (((hackage."time")."1.8.0.2").revisions).default;
16− "unix".revision = (((hackage."unix")."2.7.2.2").revisions).default;
17− "bytestring".revision = (((hackage."bytestring")."0.10.8.2").revisions).default;
18− "containers".revision = (((hackage."containers")."0.5.11.0").revisions).default;
19− "directory".revision = (((hackage."directory")."1.3.1.5").revisions).default;
20− "parsec".revision = (((hackage."parsec")."3.1.13.0").revisions).default;
21− "filepath".revision = (((hackage."filepath")."1.4.2").revisions).default;
22− "deepseq".revision = (((hackage."deepseq")."1.4.3.0").revisions).default;
23 "transformers".revision = (((hackage."transformers")."0.5.5.0").revisions).default;
19 "transformers".revision = (((hackage."transformers")."0.5.5.0").revisions).default;
24− "Cabal".revision = (((hackage."Cabal")."2.2.0.1").revisions).default;
20+ "filepath".revision = (((hackage."filepath")."1.4.2").revisions).default;
21+ "process".revision = (((hackage."process")."1.6.3.0").revisions).default;
22+ "pretty".revision = (((hackage."pretty")."1.1.3.6").revisions).default;
23+ "array".revision = (((hackage."array")."0.5.2.0").revisions).default;
24+ "integer-gmp".revision = (((hackage."integer-gmp")."1.0.2.0").revisions).default;
26 compiler = {
26 compiler = {
27 version = "8.4.4";
27 version = "8.4.4";
@@ -29,24 +29,24 @@
29 packages = {
29 packages = {
30 "binary" = "0.8.5.1";
30 "binary" = "0.8.5.1";
31 "ghc-prim" = "0.5.2.0";
31 "ghc-prim" = "0.5.2.0";
32− "array" = "0.5.2.0";
32+ "unix" = "2.7.2.2";
33− "integer-gmp" = "1.0.2.0";
33+ "mtl" = "2.2.2";
34− "pretty" = "1.1.3.6";
35− "process" = "1.6.3.0";
37 "rts" = "1.0";
34 "rts" = "1.0";
35+ "deepseq" = "1.4.3.0";
36+ "parsec" = "3.1.13.0";
37+ "directory" = "1.3.1.5";
38+ "containers" = "0.5.11.0";
39+ "bytestring" = "0.10.8.2";
38 "text" = "1.2.3.1";
40 "text" = "1.2.3.1";
39− "mtl" = "2.2.2";
41+ "Cabal" = "2.2.0.1";
40 "time" = "1.8.0.2";
43 "time" = "1.8.0.2";
42− "bytestring" = "0.10.8.2";
43− "containers" = "0.5.11.0";
44− "directory" = "1.3.1.5";
45− "parsec" = "3.1.13.0";
46− "filepath" = "1.4.2";
47− "deepseq" = "1.4.3.0";
48 "transformers" = "0.5.5.0";
44 "transformers" = "0.5.5.0";
49− "Cabal" = "2.2.0.1";
45+ "filepath" = "1.4.2";
46+ "process" = "1.6.3.0";
47+ "pretty" = "1.1.3.6";
49+ "integer-gmp" = "1.0.2.0";
@@ -59,32 +59,5 @@
59 "happy" = { flags = { "small_base" = lib.mkOverride 900 true; }; };
59 "happy" = { flags = { "small_base" = lib.mkOverride 900 true; }; };
65− "containers".components.library.planned = lib.mkOverride 900 true;
66− "binary".components.library.planned = lib.mkOverride 900 true;
67− "ghc-prim".components.library.planned = lib.mkOverride 900 true;
68− "happy".components.exes."happy".planned = lib.mkOverride 900 true;
69− "Cabal".components.library.planned = lib.mkOverride 900 true;
70− "transformers".components.library.planned = lib.mkOverride 900 true;
71− "process".components.library.planned = lib.mkOverride 900 true;
72− "pretty".components.library.planned = lib.mkOverride 900 true;
73− "integer-gmp".components.library.planned = lib.mkOverride 900 true;
74− "array".components.library.planned = lib.mkOverride 900 true;
75− "bytestring".components.library.planned = lib.mkOverride 900 true;
76− "unix".components.library.planned = lib.mkOverride 900 true;
77− "text".components.library.planned = lib.mkOverride 900 true;
78− "base".components.library.planned = lib.mkOverride 900 true;
79− "rts".components.library.planned = lib.mkOverride 900 true;
80− "mtl".components.library.planned = lib.mkOverride 900 true;
81− "time".components.library.planned = lib.mkOverride 900 true;
82− "happy".components.setup.planned = lib.mkOverride 900 true;
83− "deepseq".components.library.planned = lib.mkOverride 900 true;
84− "filepath".components.library.planned = lib.mkOverride 900 true;
85− "parsec".components.library.planned = lib.mkOverride 900 true;
86− "directory".components.library.planned = lib.mkOverride 900 true;
materialized/bootstrap/ghc844/happy-1.19.12/default.nixdeleted−56
@@ -1,56 +0,0 @@
5− "ghc-prim".revision = (((hackage."ghc-prim")."0.5.2.0").revisions).default;
6− "array".revision = (((hackage."array")."0.5.2.0").revisions).default;
7− "integer-gmp".revision = (((hackage."integer-gmp")."1.0.2.0").revisions).default;
8− "base".revision = (((hackage."base")."4.11.1.0").revisions).default;
9− "rts".revision = (((hackage."rts")."1.0").revisions).default;
10− "mtl".revision = (((hackage."mtl")."2.2.2").revisions).default;
11− "containers".revision = (((hackage."containers")."0.5.11.0").revisions).default;
12− "deepseq".revision = (((hackage."deepseq")."1.4.3.0").revisions).default;
13− "transformers".revision = (((hackage."transformers")."0.5.5.0").revisions).default;
19− "ghc-prim" = "0.5.2.0";
21− "integer-gmp" = "1.0.2.0";
25− "containers" = "0.5.11.0";
26− "deepseq" = "1.4.3.0";
27− "transformers" = "0.5.5.0";
32− { packages = { happy = ./.plan.nix/happy.nix; }; };
37− "happy" = { flags = { "small_base" = lib.mkOverride 900 true; }; };
43− "containers".components.library.planned = lib.mkOverride 900 true;
44− "ghc-prim".components.library.planned = lib.mkOverride 900 true;
45− "happy".components.exes."happy".planned = lib.mkOverride 900 true;
46− "transformers".components.library.planned = lib.mkOverride 900 true;
47− "integer-gmp".components.library.planned = lib.mkOverride 900 true;
48− "array".components.library.planned = lib.mkOverride 900 true;
49− "base".components.library.planned = lib.mkOverride 900 true;
50− "rts".components.library.planned = lib.mkOverride 900 true;
51− "mtl".components.library.planned = lib.mkOverride 900 true;
52− "deepseq".components.library.planned = lib.mkOverride 900 true;
materialized/bootstrap/ghc844/hscolour/.plan.nix/hscolour.nix+1−1
@@ -24,7 +24,7 @@
24 isLocal = true;
24 isLocal = true;
25 detailLevel = "FullDetails";
25 detailLevel = "FullDetails";
26 licenseFiles = [ "LICENCE-LGPL" ];
26 licenseFiles = [ "LICENCE-LGPL" ];
27− dataDir = ".";
27+ dataDir = "";
28 dataFiles = [ "hscolour.css" "data/rgb24-example-.hscolour" ];
28 dataFiles = [ "hscolour.css" "data/rgb24-example-.hscolour" ];
29 extraSrcFiles = [];
29 extraSrcFiles = [];
30 extraTmpFiles = [];
30 extraTmpFiles = [];
materialized/bootstrap/ghc844/hscolour/default.nix+8−22
@@ -3,24 +3,24 @@
4 packages = {
4 packages = {
5 "ghc-prim".revision = (((hackage."ghc-prim")."0.5.2.0").revisions).default;
5 "ghc-prim".revision = (((hackage."ghc-prim")."0.5.2.0").revisions).default;
6− "array".revision = (((hackage."array")."0.5.2.0").revisions).default;
7− "integer-gmp".revision = (((hackage."integer-gmp")."1.0.2.0").revisions).default;
8− "base".revision = (((hackage."base")."4.11.1.0").revisions).default;
9 "rts".revision = (((hackage."rts")."1.0").revisions).default;
6 "rts".revision = (((hackage."rts")."1.0").revisions).default;
10− "containers".revision = (((hackage."containers")."0.5.11.0").revisions).default;
11 "deepseq".revision = (((hackage."deepseq")."1.4.3.0").revisions).default;
7 "deepseq".revision = (((hackage."deepseq")."1.4.3.0").revisions).default;
8+ "containers".revision = (((hackage."containers")."0.5.11.0").revisions).default;
9+ "base".revision = (((hackage."base")."4.11.1.0").revisions).default;
10+ "array".revision = (((hackage."array")."0.5.2.0").revisions).default;
11+ "integer-gmp".revision = (((hackage."integer-gmp")."1.0.2.0").revisions).default;
13 compiler = {
13 compiler = {
14 version = "8.4.4";
14 version = "8.4.4";
15 nix-name = "ghc844";
15 nix-name = "ghc844";
16 packages = {
16 packages = {
17 "ghc-prim" = "0.5.2.0";
17 "ghc-prim" = "0.5.2.0";
19− "integer-gmp" = "1.0.2.0";
21 "rts" = "1.0";
18 "rts" = "1.0";
22− "containers" = "0.5.11.0";
23 "deepseq" = "1.4.3.0";
19 "deepseq" = "1.4.3.0";
20+ "containers" = "0.5.11.0";
23+ "integer-gmp" = "1.0.2.0";
@@ -29,19 +29,5 @@
29 modules = [
29 modules = [
30 ({ lib, ... }:
30 ({ lib, ... }:
31 { packages = { "hscolour" = { flags = {}; }; }; })
31 { packages = { "hscolour" = { flags = {}; }; }; })
35− "containers".components.library.planned = lib.mkOverride 900 true;
36− "ghc-prim".components.library.planned = lib.mkOverride 900 true;
37− "hscolour".components.exes."HsColour".planned = lib.mkOverride 900 true;
38− "hscolour".components.library.planned = lib.mkOverride 900 true;
39− "integer-gmp".components.library.planned = lib.mkOverride 900 true;
40− "array".components.library.planned = lib.mkOverride 900 true;
41− "base".components.library.planned = lib.mkOverride 900 true;
42− "rts".components.library.planned = lib.mkOverride 900 true;
43− "deepseq".components.library.planned = lib.mkOverride 900 true;
materialized/bootstrap/ghc882/alex/.plan.nix/alex.nix+1−1
@@ -150,7 +150,7 @@
150 (hsPkgs."process" or (errorHandler.buildDepError "process"))
150 (hsPkgs."process" or (errorHandler.buildDepError "process"))
152 build-tools = [
152 build-tools = [
153− (hsPkgs.buildPackages.alex.components.exes.alex or (pkgs.buildPackages.alex or (errorHandler.buildToolDepError "alex:alex")))
153+ (hsPkgs.buildPackages.alex or (pkgs.buildPackages.alex or (errorHandler.buildToolDepError "alex")))
155 buildable = true;
155 buildable = true;
156 mainPath = [ "test.hs" ];
156 mainPath = [ "test.hs" ];
materialized/bootstrap/ghc882/alex/default.nix+18−38
@@ -3,36 +3,36 @@
4 packages = {
4 packages = {
5 "ghc-prim".revision = (((hackage."ghc-prim")."0.5.3").revisions).default;
5 "ghc-prim".revision = (((hackage."ghc-prim")."0.5.3").revisions).default;
6− "array".revision = (((hackage."array")."0.5.4.0").revisions).default;
7− "integer-gmp".revision = (((hackage."integer-gmp")."1.0.2.0").revisions).default;
8− "process".revision = (((hackage."process")."1.6.7.0").revisions).default;
9− "base".revision = (((hackage."base")."4.13.0.0").revisions).default;
10− "rts".revision = (((hackage."rts")."1.0").revisions).default;
11− "time".revision = (((hackage."time")."1.9.3").revisions).default;
12 "unix".revision = (((hackage."unix")."2.7.2.2").revisions).default;
6 "unix".revision = (((hackage."unix")."2.7.2.2").revisions).default;
13− "bytestring".revision = (((hackage."bytestring")."0.10.10.0").revisions).default;
7+ "rts".revision = (((hackage."rts")."1.0").revisions).default;
14− "containers".revision = (((hackage."containers")."0.6.2.1").revisions).default;
8+ "deepseq".revision = (((hackage."deepseq")."1.4.4.0").revisions).default;
15 "directory".revision = (((hackage."directory")."1.3.4.0").revisions).default;
9 "directory".revision = (((hackage."directory")."1.3.4.0").revisions).default;
10+ "containers".revision = (((hackage."containers")."0.6.2.1").revisions).default;
11+ "bytestring".revision = (((hackage."bytestring")."0.10.10.0").revisions).default;
12+ "base".revision = (((hackage."base")."4.13.0.0").revisions).default;
13+ "time".revision = (((hackage."time")."1.9.3").revisions).default;
16 "filepath".revision = (((hackage."filepath")."1.4.2.1").revisions).default;
14 "filepath".revision = (((hackage."filepath")."1.4.2.1").revisions).default;
17− "deepseq".revision = (((hackage."deepseq")."1.4.4.0").revisions).default;
15+ "process".revision = (((hackage."process")."1.6.7.0").revisions).default;
16+ "array".revision = (((hackage."array")."0.5.4.0").revisions).default;
17+ "integer-gmp".revision = (((hackage."integer-gmp")."1.0.2.0").revisions).default;
19 compiler = {
19 compiler = {
20 version = "8.8.2";
20 version = "8.8.2";
21 nix-name = "ghc882";
21 nix-name = "ghc882";
22 packages = {
22 packages = {
23 "ghc-prim" = "0.5.3";
23 "ghc-prim" = "0.5.3";
25− "integer-gmp" = "1.0.2.0";
26− "process" = "1.6.7.0";
30 "unix" = "2.7.2.2";
24 "unix" = "2.7.2.2";
31− "bytestring" = "0.10.10.0";
25+ "rts" = "1.0";
32− "containers" = "0.6.2.1";
26+ "deepseq" = "1.4.4.0";
33 "directory" = "1.3.4.0";
27 "directory" = "1.3.4.0";
28+ "containers" = "0.6.2.1";
29+ "bytestring" = "0.10.10.0";
34 "filepath" = "1.4.2.1";
32 "filepath" = "1.4.2.1";
35− "deepseq" = "1.4.4.0";
33+ "process" = "1.6.7.0";
35+ "integer-gmp" = "1.0.2.0";
@@ -45,25 +45,5 @@
45 "alex" = { flags = { "small_base" = lib.mkOverride 900 true; }; };
45 "alex" = { flags = { "small_base" = lib.mkOverride 900 true; }; };
51− "containers".components.library.planned = lib.mkOverride 900 true;
52− "ghc-prim".components.library.planned = lib.mkOverride 900 true;
53− "process".components.library.planned = lib.mkOverride 900 true;
54− "integer-gmp".components.library.planned = lib.mkOverride 900 true;
55− "array".components.library.planned = lib.mkOverride 900 true;
56− "bytestring".components.library.planned = lib.mkOverride 900 true;
57− "unix".components.library.planned = lib.mkOverride 900 true;
58− "alex".components.exes."alex".planned = lib.mkOverride 900 true;
59− "base".components.library.planned = lib.mkOverride 900 true;
60− "rts".components.library.planned = lib.mkOverride 900 true;
61− "time".components.library.planned = lib.mkOverride 900 true;
62− "deepseq".components.library.planned = lib.mkOverride 900 true;
63− "filepath".components.library.planned = lib.mkOverride 900 true;
64− "directory".components.library.planned = lib.mkOverride 900 true;
65− "alex".components.tests."tests".planned = lib.mkOverride 900 true;
materialized/bootstrap/ghc882/happy-1.19.12/.plan.nix/happy.nix+1−1
@@ -190,7 +190,7 @@
190 (hsPkgs."process" or (errorHandler.buildDepError "process"))
190 (hsPkgs."process" or (errorHandler.buildDepError "process"))
192 build-tools = [
192 build-tools = [
193− (hsPkgs.buildPackages.happy.components.exes.happy or (pkgs.buildPackages.happy or (errorHandler.buildToolDepError "happy:happy")))
193+ (hsPkgs.buildPackages.happy or (pkgs.buildPackages.happy or (errorHandler.buildToolDepError "happy")))
195 buildable = true;
195 buildable = true;
196 mainPath = [ "test.hs" ];
196 mainPath = [ "test.hs" ];
materialized/bootstrap/ghc882/happy-1.19.12/default.nix+22−44
@@ -3,40 +3,40 @@
4 packages = {
4 packages = {
5 "ghc-prim".revision = (((hackage."ghc-prim")."0.5.3").revisions).default;
5 "ghc-prim".revision = (((hackage."ghc-prim")."0.5.3").revisions).default;
6− "array".revision = (((hackage."array")."0.5.4.0").revisions).default;
7− "integer-gmp".revision = (((hackage."integer-gmp")."1.0.2.0").revisions).default;
8− "process".revision = (((hackage."process")."1.6.7.0").revisions).default;
9− "base".revision = (((hackage."base")."4.13.0.0").revisions).default;
10− "rts".revision = (((hackage."rts")."1.0").revisions).default;
11− "mtl".revision = (((hackage."mtl")."2.2.2").revisions).default;
12− "time".revision = (((hackage."time")."1.9.3").revisions).default;
13 "unix".revision = (((hackage."unix")."2.7.2.2").revisions).default;
6 "unix".revision = (((hackage."unix")."2.7.2.2").revisions).default;
14− "bytestring".revision = (((hackage."bytestring")."0.10.10.0").revisions).default;
7+ "mtl".revision = (((hackage."mtl")."2.2.2").revisions).default;
15− "containers".revision = (((hackage."containers")."0.6.2.1").revisions).default;
8+ "rts".revision = (((hackage."rts")."1.0").revisions).default;
16− "directory".revision = (((hackage."directory")."1.3.4.0").revisions).default;
17− "filepath".revision = (((hackage."filepath")."1.4.2.1").revisions).default;
18 "deepseq".revision = (((hackage."deepseq")."1.4.4.0").revisions).default;
9 "deepseq".revision = (((hackage."deepseq")."1.4.4.0").revisions).default;
10+ "directory".revision = (((hackage."directory")."1.3.4.0").revisions).default;
11+ "containers".revision = (((hackage."containers")."0.6.2.1").revisions).default;
12+ "bytestring".revision = (((hackage."bytestring")."0.10.10.0").revisions).default;
13+ "base".revision = (((hackage."base")."4.13.0.0").revisions).default;
14+ "time".revision = (((hackage."time")."1.9.3").revisions).default;
19 "transformers".revision = (((hackage."transformers")."0.5.6.2").revisions).default;
15 "transformers".revision = (((hackage."transformers")."0.5.6.2").revisions).default;
16+ "filepath".revision = (((hackage."filepath")."1.4.2.1").revisions).default;
17+ "process".revision = (((hackage."process")."1.6.7.0").revisions).default;
18+ "array".revision = (((hackage."array")."0.5.4.0").revisions).default;
19+ "integer-gmp".revision = (((hackage."integer-gmp")."1.0.2.0").revisions).default;
21 compiler = {
21 compiler = {
22 version = "8.8.2";
22 version = "8.8.2";
23 nix-name = "ghc882";
23 nix-name = "ghc882";
24 packages = {
24 packages = {
25 "ghc-prim" = "0.5.3";
25 "ghc-prim" = "0.5.3";
27− "integer-gmp" = "1.0.2.0";
28− "process" = "1.6.7.0";
33 "unix" = "2.7.2.2";
26 "unix" = "2.7.2.2";
34− "bytestring" = "0.10.10.0";
27+ "mtl" = "2.2.2";
35− "containers" = "0.6.2.1";
28+ "rts" = "1.0";
36− "directory" = "1.3.4.0";
37− "filepath" = "1.4.2.1";
38 "deepseq" = "1.4.4.0";
29 "deepseq" = "1.4.4.0";
30+ "directory" = "1.3.4.0";
31+ "containers" = "0.6.2.1";
32+ "bytestring" = "0.10.10.0";
39 "transformers" = "0.5.6.2";
35 "transformers" = "0.5.6.2";
36+ "filepath" = "1.4.2.1";
37+ "process" = "1.6.7.0";
39+ "integer-gmp" = "1.0.2.0";
@@ -49,27 +49,5 @@
49 "happy" = { flags = { "small_base" = lib.mkOverride 900 true; }; };
49 "happy" = { flags = { "small_base" = lib.mkOverride 900 true; }; };
55− "containers".components.library.planned = lib.mkOverride 900 true;
56− "ghc-prim".components.library.planned = lib.mkOverride 900 true;
57− "happy".components.exes."happy".planned = lib.mkOverride 900 true;
58− "transformers".components.library.planned = lib.mkOverride 900 true;
59− "process".components.library.planned = lib.mkOverride 900 true;
60− "integer-gmp".components.library.planned = lib.mkOverride 900 true;
61− "array".components.library.planned = lib.mkOverride 900 true;
62− "bytestring".components.library.planned = lib.mkOverride 900 true;
63− "unix".components.library.planned = lib.mkOverride 900 true;
64− "base".components.library.planned = lib.mkOverride 900 true;
65− "rts".components.library.planned = lib.mkOverride 900 true;
66− "mtl".components.library.planned = lib.mkOverride 900 true;
67− "time".components.library.planned = lib.mkOverride 900 true;
68− "deepseq".components.library.planned = lib.mkOverride 900 true;
69− "filepath".components.library.planned = lib.mkOverride 900 true;
70− "happy".components.tests."tests".planned = lib.mkOverride 900 true;
71− "directory".components.library.planned = lib.mkOverride 900 true;
materialized/bootstrap/ghc882/hscolour/.plan.nix/hscolour.nix+1−1
@@ -24,7 +24,7 @@
24 isLocal = true;
24 isLocal = true;
25 detailLevel = "FullDetails";
25 detailLevel = "FullDetails";
26 licenseFiles = [ "LICENCE-LGPL" ];
26 licenseFiles = [ "LICENCE-LGPL" ];
27− dataDir = ".";
27+ dataDir = "";
28 dataFiles = [ "hscolour.css" "data/rgb24-example-.hscolour" ];
28 dataFiles = [ "hscolour.css" "data/rgb24-example-.hscolour" ];
29 extraSrcFiles = [];
29 extraSrcFiles = [];
30 extraTmpFiles = [];
30 extraTmpFiles = [];
materialized/bootstrap/ghc882/hscolour/default.nix+8−22
@@ -3,24 +3,24 @@
4 packages = {
4 packages = {
5 "ghc-prim".revision = (((hackage."ghc-prim")."0.5.3").revisions).default;
5 "ghc-prim".revision = (((hackage."ghc-prim")."0.5.3").revisions).default;
6− "array".revision = (((hackage."array")."0.5.4.0").revisions).default;
7− "integer-gmp".revision = (((hackage."integer-gmp")."1.0.2.0").revisions).default;
8− "base".revision = (((hackage."base")."4.13.0.0").revisions).default;
9 "rts".revision = (((hackage."rts")."1.0").revisions).default;
6 "rts".revision = (((hackage."rts")."1.0").revisions).default;
10− "containers".revision = (((hackage."containers")."0.6.2.1").revisions).default;
11 "deepseq".revision = (((hackage."deepseq")."1.4.4.0").revisions).default;
7 "deepseq".revision = (((hackage."deepseq")."1.4.4.0").revisions).default;
8+ "containers".revision = (((hackage."containers")."0.6.2.1").revisions).default;
9+ "base".revision = (((hackage."base")."4.13.0.0").revisions).default;
10+ "array".revision = (((hackage."array")."0.5.4.0").revisions).default;
11+ "integer-gmp".revision = (((hackage."integer-gmp")."1.0.2.0").revisions).default;
13 compiler = {
13 compiler = {
14 version = "8.8.2";
14 version = "8.8.2";
15 nix-name = "ghc882";
15 nix-name = "ghc882";
16 packages = {
16 packages = {
17 "ghc-prim" = "0.5.3";
17 "ghc-prim" = "0.5.3";
19− "integer-gmp" = "1.0.2.0";
21 "rts" = "1.0";
18 "rts" = "1.0";
22− "containers" = "0.6.2.1";
23 "deepseq" = "1.4.4.0";
19 "deepseq" = "1.4.4.0";
20+ "containers" = "0.6.2.1";
23+ "integer-gmp" = "1.0.2.0";
@@ -29,19 +29,5 @@
29 modules = [
29 modules = [
30 ({ lib, ... }:
30 ({ lib, ... }:
31 { packages = { "hscolour" = { flags = {}; }; }; })
31 { packages = { "hscolour" = { flags = {}; }; }; })
35− "containers".components.library.planned = lib.mkOverride 900 true;
36− "ghc-prim".components.library.planned = lib.mkOverride 900 true;
37− "hscolour".components.exes."HsColour".planned = lib.mkOverride 900 true;
38− "hscolour".components.library.planned = lib.mkOverride 900 true;
39− "integer-gmp".components.library.planned = lib.mkOverride 900 true;
40− "array".components.library.planned = lib.mkOverride 900 true;
41− "base".components.library.planned = lib.mkOverride 900 true;
42− "rts".components.library.planned = lib.mkOverride 900 true;
43− "deepseq".components.library.planned = lib.mkOverride 900 true;
materialized/bootstrap/ghc883/alex/.plan.nix/alex.nixdeleted−160
@@ -1,160 +0,0 @@
11− flags = { small_base = true; };
14− identifier = { name = "alex"; version = "3.2.4"; };
15− license = "BSD-3-Clause";
16− copyright = "(c) Chis Dornan, Simon Marlow";
17− maintainer = "Simon Marlow <marlowsd@gmail.com>";
18− author = "Chris Dornan and Simon Marlow";
19− homepage = "http://www.haskell.org/alex/";
21− synopsis = "Alex is a tool for generating lexical analysers in Haskell";
22− description = "Alex is a tool for generating lexical analysers in Haskell.\nIt takes a description of tokens based on regular\nexpressions and generates a Haskell module containing code\nfor scanning text efficiently. It is similar to the tool\nlex or flex for C/C++.";
23− buildType = "Simple";
25− detailLevel = "FullDetails";
26− licenseFiles = [ "LICENSE" ];
31− "AlexTemplate-ghc-nopred"
32− "AlexTemplate-ghc-debug"
35− "AlexWrapper-basic-bytestring"
36− "AlexWrapper-strict-bytestring"
38− "AlexWrapper-posn-bytestring"
40− "AlexWrapper-monad-bytestring"
41− "AlexWrapper-monadUserState"
42− "AlexWrapper-monadUserState-bytestring"
60− "examples/Tokens_gscan.x"
61− "examples/Tokens_posn.x"
62− "examples/examples.x"
69− "examples/words_monad.x"
70− "examples/words_posn.x"
74− "templates/GenericTemplate.hs"
75− "templates/wrappers.hs"
80− "tests/tokens_gscan.x"
81− "tests/tokens_posn.x"
82− "tests/tokens_bytestring.x"
83− "tests/tokens_posn_bytestring.x"
84− "tests/tokens_scan_user.x"
85− "tests/tokens_strict_bytestring.x"
86− "tests/tokens_monad_bytestring.x"
87− "tests/tokens_monadUserState_bytestring.x"
88− "tests/tokens_bytestring_unicode.x"
89− "tests/basic_typeclass.x"
90− "tests/basic_typeclass_bytestring.x"
91− "tests/default_typeclass.x"
92− "tests/gscan_typeclass.x"
93− "tests/posn_typeclass.x"
94− "tests/monad_typeclass.x"
95− "tests/monad_typeclass_bytestring.x"
96− "tests/monadUserState_typeclass.x"
97− "tests/monadUserState_typeclass_bytestring.x"
98− "tests/posn_typeclass_bytestring.x"
99− "tests/strict_typeclass.x"
109− (hsPkgs."base" or (errorHandler.buildDepError "base"))
110− ] ++ (if flags.small_base
112− (hsPkgs."base" or (errorHandler.buildDepError "base"))
113− (hsPkgs."array" or (errorHandler.buildDepError "array"))
114− (hsPkgs."containers" or (errorHandler.buildDepError "containers"))
115− (hsPkgs."directory" or (errorHandler.buildDepError "directory"))
117− else [ (hsPkgs."base" or (errorHandler.buildDepError "base")) ]);
138− "Data/Ranged/Boundaries"
139− "Data/Ranged/RangedSet"
140− "Data/Ranged/Ranges"
142− hsSourceDirs = [ "src" ];
143− mainPath = [ "Main.hs" ] ++ [ "" ];
149− (hsPkgs."base" or (errorHandler.buildDepError "base"))
150− (hsPkgs."process" or (errorHandler.buildDepError "process"))
153− (hsPkgs.buildPackages.alex.components.exes.alex or (pkgs.buildPackages.alex or (errorHandler.buildToolDepError "alex:alex")))
156− mainPath = [ "test.hs" ];
160− } // rec { src = (pkgs.lib).mkDefault ../.; }
materialized/bootstrap/ghc883/hscolour/.plan.nix/hscolour.nixdeleted−70
@@ -1,70 +0,0 @@
14− identifier = { name = "hscolour"; version = "1.24.4"; };
15− license = "LicenseRef-LGPL";
16− copyright = "2003-2017 Malcolm Wallace; 2006 Bjorn Bringert";
17− maintainer = "Malcolm Wallace";
18− author = "Malcolm Wallace";
19− homepage = "http://code.haskell.org/~malcolm/hscolour/";
21− synopsis = "Colourise Haskell code.";
22− description = "hscolour is a small Haskell script to colourise Haskell code. It currently\nhas six output formats:\nANSI terminal codes (optionally XTerm-256colour codes),\nHTML 3.2 with <font> tags,\nHTML 4.01 with CSS,\nHTML 4.01 with CSS and mouseover annotations,\nXHTML 1.0 with inline CSS styling,\nLaTeX,\nand mIRC chat codes.";
23− buildType = "Simple";
25− detailLevel = "FullDetails";
26− licenseFiles = [ "LICENCE-LGPL" ];
28− dataFiles = [ "hscolour.css" "data/rgb24-example-.hscolour" ];
36− (hsPkgs."base" or (errorHandler.buildDepError "base"))
37− (hsPkgs."containers" or (errorHandler.buildDepError "containers"))
41− "Language/Haskell/HsColour"
42− "Language/Haskell/HsColour/ANSI"
43− "Language/Haskell/HsColour/Anchors"
44− "Language/Haskell/HsColour/ACSS"
45− "Language/Haskell/HsColour/CSS"
46− "Language/Haskell/HsColour/Classify"
47− "Language/Haskell/HsColour/ColourHighlight"
48− "Language/Haskell/HsColour/Colourise"
49− "Language/Haskell/HsColour/General"
50− "Language/Haskell/HsColour/HTML"
51− "Language/Haskell/HsColour/InlineCSS"
52− "Language/Haskell/HsColour/LaTeX"
53− "Language/Haskell/HsColour/MIRC"
54− "Language/Haskell/HsColour/Options"
55− "Language/Haskell/HsColour/Output"
56− "Language/Haskell/HsColour/TTY"
62− (hsPkgs."base" or (errorHandler.buildDepError "base"))
63− (hsPkgs."containers" or (errorHandler.buildDepError "containers"))
66− mainPath = [ "HsColour.hs" ];
70− } // rec { src = (pkgs.lib).mkDefault ../.; }
materialized/bootstrap/ghc883/hscolour/default.nixdeleted−47
@@ -1,47 +0,0 @@
5− "array".revision = (((hackage."array")."0.5.4.0").revisions).default;
6− "ghc-prim".revision = (((hackage."ghc-prim")."0.5.3").revisions).default;
7− "base".revision = (((hackage."base")."4.13.0.0").revisions).default;
8− "rts".revision = (((hackage."rts")."1.0").revisions).default;
9− "deepseq".revision = (((hackage."deepseq")."1.4.4.0").revisions).default;
10− "integer-gmp".revision = (((hackage."integer-gmp")."1.0.2.0").revisions).default;
11− "containers".revision = (((hackage."containers")."0.6.2.1").revisions).default;
18− "ghc-prim" = "0.5.3";
21− "deepseq" = "1.4.4.0";
22− "integer-gmp" = "1.0.2.0";
23− "containers" = "0.6.2.1";
28− { packages = { hscolour = ./.plan.nix/hscolour.nix; }; };
31− { packages = { "hscolour" = { flags = {}; }; }; })
35− "ghc-prim".components.library.planned = lib.mkOverride 900 true;
36− "array".components.library.planned = lib.mkOverride 900 true;
37− "rts".components.library.planned = lib.mkOverride 900 true;
38− "hscolour".components.library.planned = lib.mkOverride 900 true;
39− "hscolour".components.exes."HsColour".planned = lib.mkOverride 900 true;
40− "deepseq".components.library.planned = lib.mkOverride 900 true;
41− "base".components.library.planned = lib.mkOverride 900 true;
42− "integer-gmp".components.library.planned = lib.mkOverride 900 true;
43− "containers".components.library.planned = lib.mkOverride 900 true;
materialized/bootstrap/ghc884/alex/.plan.nix/alex.nixdeleted−160
@@ -1,160 +0,0 @@
11− flags = { small_base = true; };
14− identifier = { name = "alex"; version = "3.2.4"; };
15− license = "BSD-3-Clause";
16− copyright = "(c) Chis Dornan, Simon Marlow";
17− maintainer = "Simon Marlow <marlowsd@gmail.com>";
18− author = "Chris Dornan and Simon Marlow";
19− homepage = "http://www.haskell.org/alex/";
21− synopsis = "Alex is a tool for generating lexical analysers in Haskell";
22− description = "Alex is a tool for generating lexical analysers in Haskell.\nIt takes a description of tokens based on regular\nexpressions and generates a Haskell module containing code\nfor scanning text efficiently. It is similar to the tool\nlex or flex for C/C++.";
23− buildType = "Simple";
25− detailLevel = "FullDetails";
26− licenseFiles = [ "LICENSE" ];
31− "AlexTemplate-ghc-nopred"
32− "AlexTemplate-ghc-debug"
35− "AlexWrapper-basic-bytestring"
36− "AlexWrapper-strict-bytestring"
38− "AlexWrapper-posn-bytestring"
40− "AlexWrapper-monad-bytestring"
41− "AlexWrapper-monadUserState"
42− "AlexWrapper-monadUserState-bytestring"
60− "examples/Tokens_gscan.x"
61− "examples/Tokens_posn.x"
62− "examples/examples.x"
69− "examples/words_monad.x"
70− "examples/words_posn.x"
74− "templates/GenericTemplate.hs"
75− "templates/wrappers.hs"
80− "tests/tokens_gscan.x"
81− "tests/tokens_posn.x"
82− "tests/tokens_bytestring.x"
83− "tests/tokens_posn_bytestring.x"
84− "tests/tokens_scan_user.x"
85− "tests/tokens_strict_bytestring.x"
86− "tests/tokens_monad_bytestring.x"
87− "tests/tokens_monadUserState_bytestring.x"
88− "tests/tokens_bytestring_unicode.x"
89− "tests/basic_typeclass.x"
90− "tests/basic_typeclass_bytestring.x"
91− "tests/default_typeclass.x"
92− "tests/gscan_typeclass.x"
93− "tests/posn_typeclass.x"
94− "tests/monad_typeclass.x"
95− "tests/monad_typeclass_bytestring.x"
96− "tests/monadUserState_typeclass.x"
97− "tests/monadUserState_typeclass_bytestring.x"
98− "tests/posn_typeclass_bytestring.x"
99− "tests/strict_typeclass.x"
109− (hsPkgs."base" or (errorHandler.buildDepError "base"))
110− ] ++ (if flags.small_base
112− (hsPkgs."base" or (errorHandler.buildDepError "base"))
113− (hsPkgs."array" or (errorHandler.buildDepError "array"))
114− (hsPkgs."containers" or (errorHandler.buildDepError "containers"))
115− (hsPkgs."directory" or (errorHandler.buildDepError "directory"))
117− else [ (hsPkgs."base" or (errorHandler.buildDepError "base")) ]);
138− "Data/Ranged/Boundaries"
139− "Data/Ranged/RangedSet"
140− "Data/Ranged/Ranges"
142− hsSourceDirs = [ "src" ];
143− mainPath = [ "Main.hs" ] ++ [ "" ];
149− (hsPkgs."base" or (errorHandler.buildDepError "base"))
150− (hsPkgs."process" or (errorHandler.buildDepError "process"))
153− (hsPkgs.buildPackages.alex.components.exes.alex or (pkgs.buildPackages.alex or (errorHandler.buildToolDepError "alex:alex")))
156− mainPath = [ "test.hs" ];
160− } // rec { src = (pkgs.lib).mkDefault ../.; }
materialized/bootstrap/ghc884/alex/default.nixdeleted−65
@@ -1,65 +0,0 @@
5− "array".revision = (((hackage."array")."0.5.4.0").revisions).default;
6− "bytestring".revision = (((hackage."bytestring")."0.10.10.1").revisions).default;
7− "filepath".revision = (((hackage."filepath")."1.4.2.1").revisions).default;
8− "ghc-prim".revision = (((hackage."ghc-prim")."0.5.3").revisions).default;
9− "base".revision = (((hackage."base")."4.13.0.0").revisions).default;
10− "time".revision = (((hackage."time")."1.9.3").revisions).default;
11− "directory".revision = (((hackage."directory")."1.3.6.0").revisions).default;
12− "rts".revision = (((hackage."rts")."1.0").revisions).default;
13− "deepseq".revision = (((hackage."deepseq")."1.4.4.0").revisions).default;
14− "unix".revision = (((hackage."unix")."2.7.2.2").revisions).default;
15− "integer-gmp".revision = (((hackage."integer-gmp")."1.0.2.0").revisions).default;
16− "containers".revision = (((hackage."containers")."0.6.2.1").revisions).default;
23− "bytestring" = "0.10.10.1";
24− "filepath" = "1.4.2.1";
25− "ghc-prim" = "0.5.3";
28− "directory" = "1.3.6.0";
30− "deepseq" = "1.4.4.0";
32− "integer-gmp" = "1.0.2.0";
33− "containers" = "0.6.2.1";
38− { packages = { alex = ./.plan.nix/alex.nix; }; };
43− "alex" = { flags = { "small_base" = lib.mkOverride 900 true; }; };
49− "filepath".components.library.planned = lib.mkOverride 900 true;
50− "bytestring".components.library.planned = lib.mkOverride 900 true;
51− "ghc-prim".components.library.planned = lib.mkOverride 900 true;
52− "array".components.library.planned = lib.mkOverride 900 true;
53− "rts".components.library.planned = lib.mkOverride 900 true;
54− "unix".components.library.planned = lib.mkOverride 900 true;
55− "directory".components.library.planned = lib.mkOverride 900 true;
56− "time".components.library.planned = lib.mkOverride 900 true;
57− "alex".components.exes."alex".planned = lib.mkOverride 900 true;
58− "deepseq".components.library.planned = lib.mkOverride 900 true;
59− "base".components.library.planned = lib.mkOverride 900 true;
60− "integer-gmp".components.library.planned = lib.mkOverride 900 true;
61− "containers".components.library.planned = lib.mkOverride 900 true;
materialized/bootstrap/ghc884/happy-1.19.12/default.nixdeleted−56
@@ -1,56 +0,0 @@
5− "array".revision = (((hackage."array")."0.5.4.0").revisions).default;
6− "mtl".revision = (((hackage."mtl")."2.2.2").revisions).default;
7− "ghc-prim".revision = (((hackage."ghc-prim")."0.5.3").revisions).default;
8− "base".revision = (((hackage."base")."4.13.0.0").revisions).default;
9− "rts".revision = (((hackage."rts")."1.0").revisions).default;
10− "transformers".revision = (((hackage."transformers")."0.5.6.2").revisions).default;
11− "deepseq".revision = (((hackage."deepseq")."1.4.4.0").revisions).default;
12− "integer-gmp".revision = (((hackage."integer-gmp")."1.0.2.0").revisions).default;
13− "containers".revision = (((hackage."containers")."0.6.2.1").revisions).default;
21− "ghc-prim" = "0.5.3";
24− "transformers" = "0.5.6.2";
25− "deepseq" = "1.4.4.0";
26− "integer-gmp" = "1.0.2.0";
27− "containers" = "0.6.2.1";
32− { packages = { happy = ./.plan.nix/happy.nix; }; };
37− "happy" = { flags = { "small_base" = lib.mkOverride 900 true; }; };
43− "ghc-prim".components.library.planned = lib.mkOverride 900 true;
44− "array".components.library.planned = lib.mkOverride 900 true;
45− "rts".components.library.planned = lib.mkOverride 900 true;
46− "happy".components.exes."happy".planned = lib.mkOverride 900 true;
47− "mtl".components.library.planned = lib.mkOverride 900 true;
48− "transformers".components.library.planned = lib.mkOverride 900 true;
49− "deepseq".components.library.planned = lib.mkOverride 900 true;
50− "base".components.library.planned = lib.mkOverride 900 true;
51− "integer-gmp".components.library.planned = lib.mkOverride 900 true;
52− "containers".components.library.planned = lib.mkOverride 900 true;
materialized/bootstrap/ghc884/hscolour/.plan.nix/hscolour.nixdeleted−70
@@ -1,70 +0,0 @@
14− identifier = { name = "hscolour"; version = "1.24.4"; };
15− license = "LicenseRef-LGPL";
16− copyright = "2003-2017 Malcolm Wallace; 2006 Bjorn Bringert";
17− maintainer = "Malcolm Wallace";
18− author = "Malcolm Wallace";
19− homepage = "http://code.haskell.org/~malcolm/hscolour/";
21− synopsis = "Colourise Haskell code.";
22− description = "hscolour is a small Haskell script to colourise Haskell code. It currently\nhas six output formats:\nANSI terminal codes (optionally XTerm-256colour codes),\nHTML 3.2 with <font> tags,\nHTML 4.01 with CSS,\nHTML 4.01 with CSS and mouseover annotations,\nXHTML 1.0 with inline CSS styling,\nLaTeX,\nand mIRC chat codes.";
23− buildType = "Simple";
25− detailLevel = "FullDetails";
26− licenseFiles = [ "LICENCE-LGPL" ];
28− dataFiles = [ "hscolour.css" "data/rgb24-example-.hscolour" ];
36− (hsPkgs."base" or (errorHandler.buildDepError "base"))
37− (hsPkgs."containers" or (errorHandler.buildDepError "containers"))
41− "Language/Haskell/HsColour"
42− "Language/Haskell/HsColour/ANSI"
43− "Language/Haskell/HsColour/Anchors"
44− "Language/Haskell/HsColour/ACSS"
45− "Language/Haskell/HsColour/CSS"
46− "Language/Haskell/HsColour/Classify"
47− "Language/Haskell/HsColour/ColourHighlight"
48− "Language/Haskell/HsColour/Colourise"
49− "Language/Haskell/HsColour/General"
50− "Language/Haskell/HsColour/HTML"
51− "Language/Haskell/HsColour/InlineCSS"
52− "Language/Haskell/HsColour/LaTeX"
53− "Language/Haskell/HsColour/MIRC"
54− "Language/Haskell/HsColour/Options"
55− "Language/Haskell/HsColour/Output"
56− "Language/Haskell/HsColour/TTY"
62− (hsPkgs."base" or (errorHandler.buildDepError "base"))
63− (hsPkgs."containers" or (errorHandler.buildDepError "containers"))
66− mainPath = [ "HsColour.hs" ];
70− } // rec { src = (pkgs.lib).mkDefault ../.; }
materialized/bootstrap/ghc884/hscolour/default.nixdeleted−47
@@ -1,47 +0,0 @@
5− "array".revision = (((hackage."array")."0.5.4.0").revisions).default;
6− "ghc-prim".revision = (((hackage."ghc-prim")."0.5.3").revisions).default;
7− "base".revision = (((hackage."base")."4.13.0.0").revisions).default;
8− "rts".revision = (((hackage."rts")."1.0").revisions).default;
9− "deepseq".revision = (((hackage."deepseq")."1.4.4.0").revisions).default;
10− "integer-gmp".revision = (((hackage."integer-gmp")."1.0.2.0").revisions).default;
11− "containers".revision = (((hackage."containers")."0.6.2.1").revisions).default;
18− "ghc-prim" = "0.5.3";
21− "deepseq" = "1.4.4.0";
22− "integer-gmp" = "1.0.2.0";
23− "containers" = "0.6.2.1";
28− { packages = { hscolour = ./.plan.nix/hscolour.nix; }; };
31− { packages = { "hscolour" = { flags = {}; }; }; })
35− "ghc-prim".components.library.planned = lib.mkOverride 900 true;
36− "array".components.library.planned = lib.mkOverride 900 true;
37− "rts".components.library.planned = lib.mkOverride 900 true;
38− "hscolour".components.library.planned = lib.mkOverride 900 true;
39− "hscolour".components.exes."HsColour".planned = lib.mkOverride 900 true;
40− "deepseq".components.library.planned = lib.mkOverride 900 true;
41− "base".components.library.planned = lib.mkOverride 900 true;
42− "integer-gmp".components.library.planned = lib.mkOverride 900 true;
43− "containers".components.library.planned = lib.mkOverride 900 true;
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.10.1-x86_64-linux/ghc/info+1−1
@@ -43,7 +43,7 @@
43 ,("RTS expects libdw","NO")
43 ,("RTS expects libdw","NO")
44 ,("Project version","8.10.1")
44 ,("Project version","8.10.1")
45 ,("Project Git commit id","5c3cadf5db0d7eb859ff2c278ab07585c7df17b5")
45 ,("Project Git commit id","5c3cadf5db0d7eb859ff2c278ab07585c7df17b5")
46− ,("Booter version","8.6.5")
46+ ,("Booter version","8.8.3")
47 ,("Stage","1")
47 ,("Stage","1")
48 ,("Build platform","x86_64-unknown-linux")
48 ,("Build platform","x86_64-unknown-linux")
49 ,("Host platform","x86_64-unknown-linux")
49 ,("Host platform","x86_64-unknown-linux")
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.10.2-x86_64-linux/ghc-pkg/dump-globaldeleted−1431
@@ -1,1431 +0,0 @@
7−copyright: 2003-2020, Cabal Development Team (see AUTHORS file)
8−maintainer: cabal-devel@haskell.org
9−author: Cabal Development Team <cabal-devel@haskell.org>
10−homepage: http://www.haskell.org/cabal/
11−synopsis: A framework for packaging Haskell software
13− The Haskell Common Architecture for Building Applications and
14− Libraries: a framework defining a common interface for authors to more
15− easily build their Haskell applications in a portable way.
16− The Haskell Cabal is part of a larger infrastructure for distributing,
17− organizing, and cataloging Haskell libraries and tools.
18−category: Distribution
21− Distribution.Backpack Distribution.Backpack.ComponentsGraph
22− Distribution.Backpack.Configure
23− Distribution.Backpack.ConfiguredComponent
24− Distribution.Backpack.DescribeUnitId
25− Distribution.Backpack.FullUnitId
26− Distribution.Backpack.LinkedComponent
27− Distribution.Backpack.ModSubst Distribution.Backpack.ModuleShape
28− Distribution.Backpack.PreModuleShape Distribution.CabalSpecVersion
29− Distribution.Compat.Binary Distribution.Compat.CharParsing
30− Distribution.Compat.CreatePipe Distribution.Compat.DList
31− Distribution.Compat.Directory Distribution.Compat.Environment
32− Distribution.Compat.Exception Distribution.Compat.FilePath
33− Distribution.Compat.Graph Distribution.Compat.Internal.TempFile
34− Distribution.Compat.Lens Distribution.Compat.Newtype
35− Distribution.Compat.Parsing Distribution.Compat.Prelude.Internal
36− Distribution.Compat.ResponseFile Distribution.Compat.Semigroup
37− Distribution.Compat.Stack Distribution.Compat.Time
38− Distribution.Compat.Typeable Distribution.Compiler
39− Distribution.FieldGrammar Distribution.FieldGrammar.Class
40− Distribution.FieldGrammar.FieldDescrs
41− Distribution.FieldGrammar.Parsec Distribution.FieldGrammar.Pretty
42− Distribution.Fields Distribution.Fields.ConfVar
43− Distribution.Fields.Field Distribution.Fields.Lexer
44− Distribution.Fields.LexerMonad Distribution.Fields.ParseResult
45− Distribution.Fields.Parser Distribution.Fields.Pretty
46− Distribution.InstalledPackageInfo Distribution.License
47− Distribution.Make Distribution.ModuleName Distribution.Package
48− Distribution.PackageDescription
49− Distribution.PackageDescription.Check
50− Distribution.PackageDescription.Configuration
51− Distribution.PackageDescription.FieldGrammar
52− Distribution.PackageDescription.Parsec
53− Distribution.PackageDescription.PrettyPrint
54− Distribution.PackageDescription.Quirks
55− Distribution.PackageDescription.Utils Distribution.Parsec
56− Distribution.Parsec.Error Distribution.Parsec.FieldLineStream
57− Distribution.Parsec.Newtypes Distribution.Parsec.Position
58− Distribution.Parsec.Warning Distribution.Pretty Distribution.ReadE
59− Distribution.SPDX Distribution.SPDX.License
60− Distribution.SPDX.LicenseExceptionId
61− Distribution.SPDX.LicenseExpression Distribution.SPDX.LicenseId
62− Distribution.SPDX.LicenseListVersion
63− Distribution.SPDX.LicenseReference Distribution.Simple
64− Distribution.Simple.Bench Distribution.Simple.Build
65− Distribution.Simple.Build.Macros
66− Distribution.Simple.Build.PathsModule
67− Distribution.Simple.BuildPaths Distribution.Simple.BuildTarget
68− Distribution.Simple.BuildToolDepends Distribution.Simple.CCompiler
69− Distribution.Simple.Command Distribution.Simple.Compiler
70− Distribution.Simple.Configure Distribution.Simple.Doctest
71− Distribution.Simple.Flag Distribution.Simple.GHC
72− Distribution.Simple.GHCJS Distribution.Simple.Glob
73− Distribution.Simple.Haddock Distribution.Simple.HaskellSuite
74− Distribution.Simple.Hpc Distribution.Simple.Install
75− Distribution.Simple.InstallDirs
76− Distribution.Simple.InstallDirs.Internal
77− Distribution.Simple.LocalBuildInfo Distribution.Simple.PackageIndex
78− Distribution.Simple.PreProcess Distribution.Simple.PreProcess.Unlit
79− Distribution.Simple.Program Distribution.Simple.Program.Ar
80− Distribution.Simple.Program.Builtin Distribution.Simple.Program.Db
81− Distribution.Simple.Program.Find Distribution.Simple.Program.GHC
82− Distribution.Simple.Program.HcPkg Distribution.Simple.Program.Hpc
83− Distribution.Simple.Program.Internal Distribution.Simple.Program.Ld
84− Distribution.Simple.Program.ResponseFile
85− Distribution.Simple.Program.Run Distribution.Simple.Program.Script
86− Distribution.Simple.Program.Strip Distribution.Simple.Program.Types
87− Distribution.Simple.Register Distribution.Simple.Setup
88− Distribution.Simple.ShowBuildInfo Distribution.Simple.SrcDist
89− Distribution.Simple.Test Distribution.Simple.Test.ExeV10
90− Distribution.Simple.Test.LibV09 Distribution.Simple.Test.Log
91− Distribution.Simple.UHC Distribution.Simple.UserHooks
92− Distribution.Simple.Utils Distribution.System
93− Distribution.TestSuite Distribution.Text
94− Distribution.Types.AbiDependency Distribution.Types.AbiHash
95− Distribution.Types.AnnotatedId Distribution.Types.Benchmark
96− Distribution.Types.Benchmark.Lens
97− Distribution.Types.BenchmarkInterface
98− Distribution.Types.BenchmarkType Distribution.Types.BuildInfo
99− Distribution.Types.BuildInfo.Lens Distribution.Types.BuildType
100− Distribution.Types.Component Distribution.Types.ComponentId
101− Distribution.Types.ComponentInclude
102− Distribution.Types.ComponentLocalBuildInfo
103− Distribution.Types.ComponentName
104− Distribution.Types.ComponentRequestedSpec
105− Distribution.Types.CondTree Distribution.Types.Condition
106− Distribution.Types.ConfVar Distribution.Types.Dependency
107− Distribution.Types.DependencyMap Distribution.Types.ExeDependency
108− Distribution.Types.Executable Distribution.Types.Executable.Lens
109− Distribution.Types.ExecutableScope Distribution.Types.ExposedModule
110− Distribution.Types.Flag Distribution.Types.ForeignLib
111− Distribution.Types.ForeignLib.Lens
112− Distribution.Types.ForeignLibOption
113− Distribution.Types.ForeignLibType
114− Distribution.Types.GenericPackageDescription
115− Distribution.Types.GenericPackageDescription.Lens
116− Distribution.Types.GivenComponent
117− Distribution.Types.HookedBuildInfo
118− Distribution.Types.IncludeRenaming
119− Distribution.Types.InstalledPackageInfo
120− Distribution.Types.InstalledPackageInfo.FieldGrammar
121− Distribution.Types.InstalledPackageInfo.Lens
122− Distribution.Types.LegacyExeDependency Distribution.Types.Lens
123− Distribution.Types.Library Distribution.Types.Library.Lens
124− Distribution.Types.LibraryName Distribution.Types.LibraryVisibility
125− Distribution.Types.LocalBuildInfo Distribution.Types.Mixin
126− Distribution.Types.Module Distribution.Types.ModuleReexport
127− Distribution.Types.ModuleRenaming
128− Distribution.Types.MungedPackageId
129− Distribution.Types.MungedPackageName
130− Distribution.Types.PackageDescription
131− Distribution.Types.PackageDescription.Lens
132− Distribution.Types.PackageId Distribution.Types.PackageId.Lens
133− Distribution.Types.PackageName Distribution.Types.PackageName.Magic
134− Distribution.Types.PackageVersionConstraint
135− Distribution.Types.PkgconfigDependency
136− Distribution.Types.PkgconfigName
137− Distribution.Types.PkgconfigVersion
138− Distribution.Types.PkgconfigVersionRange
139− Distribution.Types.SetupBuildInfo
140− Distribution.Types.SetupBuildInfo.Lens
141− Distribution.Types.SourceRepo Distribution.Types.SourceRepo.Lens
142− Distribution.Types.TargetInfo Distribution.Types.TestSuite
143− Distribution.Types.TestSuite.Lens
144− Distribution.Types.TestSuiteInterface Distribution.Types.TestType
145− Distribution.Types.UnitId Distribution.Types.UnqualComponentName
146− Distribution.Types.Version Distribution.Types.VersionInterval
147− Distribution.Types.VersionRange
148− Distribution.Types.VersionRange.Internal Distribution.Utils.Generic
149− Distribution.Utils.IOData Distribution.Utils.LogProgress
150− Distribution.Utils.MD5 Distribution.Utils.MapAccum
151− Distribution.Utils.NubList Distribution.Utils.Progress
152− Distribution.Utils.ShortText Distribution.Utils.Structured
153− Distribution.Verbosity Distribution.Verbosity.Internal
154− Distribution.Version Language.Haskell.Extension
156− Distribution.Backpack.PreExistingComponent
157− Distribution.Backpack.ReadyComponent Distribution.Backpack.MixLink
158− Distribution.Backpack.ModuleScope Distribution.Backpack.UnifyM
159− Distribution.Backpack.Id Distribution.Utils.UnionFind
160− Distribution.Utils.Base62 Distribution.Compat.Async
161− Distribution.Compat.CopyFile Distribution.Compat.GetShortPathName
162− Distribution.Compat.MonadFail Distribution.Compat.Prelude
163− Distribution.Compat.SnocList Distribution.GetOpt Distribution.Lex
164− Distribution.Utils.String Distribution.Simple.GHC.EnvironmentParser
165− Distribution.Simple.GHC.Internal Distribution.Simple.GHC.ImplInfo
166− Distribution.Simple.Utils.Json Paths_Cabal
169−dynamic-library-dirs:
171−hs-libraries: HSCabal-3.2.0.0
173− array-0.5.4.0 base-4.14.1.0 binary-0.8.8.0 bytestring-0.10.10.0
174− containers-0.6.2.1 deepseq-1.4.4.0 directory-1.3.6.0
175− filepath-1.4.2.1 mtl-2.2.2 parsec-3.1.14.0 pretty-1.1.3.6
176− process-1.6.9.0 text-1.2.3.2 time-1.9.3 transformers-0.5.6.2
186−license: BSD-3-Clause
187−maintainer: libraries@haskell.org
188−synopsis: Mutable and immutable arrays
190− In addition to providing the "Data.Array" module
191− <http://www.haskell.org/onlinereport/haskell2010/haskellch14.html as specified in the Haskell 2010 Language Report>,
192− this package also defines the classes 'IArray' of
193− immutable arrays and 'MArray' of arrays mutable within appropriate
194− monads, as well as some instances of these classes.
195−category: Data Structures
198− Data.Array Data.Array.Base Data.Array.IArray Data.Array.IO
199− Data.Array.IO.Internals Data.Array.IO.Safe Data.Array.MArray
200− Data.Array.MArray.Safe Data.Array.ST Data.Array.ST.Safe
201− Data.Array.Storable Data.Array.Storable.Internals
202− Data.Array.Storable.Safe Data.Array.Unboxed Data.Array.Unsafe
205−dynamic-library-dirs:
207−hs-libraries: HSarray-0.5.4.0
208−depends: base-4.14.1.0
217−license: BSD-3-Clause
218−maintainer: libraries@haskell.org
219−synopsis: Basic libraries
221− This package contains the Standard Haskell "Prelude" and its support libraries,
222− and a large collection of useful libraries ranging from data
223− structures to parsing combinators and debugging utilities.
227− Control.Applicative Control.Arrow Control.Category
228− Control.Concurrent Control.Concurrent.Chan Control.Concurrent.MVar
229− Control.Concurrent.QSem Control.Concurrent.QSemN Control.Exception
230− Control.Exception.Base Control.Monad Control.Monad.Fail
231− Control.Monad.Fix Control.Monad.IO.Class Control.Monad.Instances
232− Control.Monad.ST Control.Monad.ST.Lazy Control.Monad.ST.Lazy.Safe
233− Control.Monad.ST.Lazy.Unsafe Control.Monad.ST.Safe
234− Control.Monad.ST.Strict Control.Monad.ST.Unsafe Control.Monad.Zip
235− Data.Bifoldable Data.Bifunctor Data.Bitraversable Data.Bits
236− Data.Bool Data.Char Data.Coerce Data.Complex Data.Data Data.Dynamic
237− Data.Either Data.Eq Data.Fixed Data.Foldable Data.Function
238− Data.Functor Data.Functor.Classes Data.Functor.Compose
239− Data.Functor.Const Data.Functor.Contravariant Data.Functor.Identity
240− Data.Functor.Product Data.Functor.Sum Data.IORef Data.Int Data.Ix
241− Data.Kind Data.List Data.List.NonEmpty Data.Maybe Data.Monoid
242− Data.Ord Data.Proxy Data.Ratio Data.STRef Data.STRef.Lazy
243− Data.STRef.Strict Data.Semigroup Data.String Data.Traversable
244− Data.Tuple Data.Type.Bool Data.Type.Coercion Data.Type.Equality
245− Data.Typeable Data.Unique Data.Version Data.Void Data.Word
246− Debug.Trace Foreign Foreign.C Foreign.C.Error Foreign.C.String
247− Foreign.C.Types Foreign.Concurrent Foreign.ForeignPtr
248− Foreign.ForeignPtr.Safe Foreign.ForeignPtr.Unsafe Foreign.Marshal
249− Foreign.Marshal.Alloc Foreign.Marshal.Array Foreign.Marshal.Error
250− Foreign.Marshal.Pool Foreign.Marshal.Safe Foreign.Marshal.Unsafe
251− Foreign.Marshal.Utils Foreign.Ptr Foreign.Safe Foreign.StablePtr
252− Foreign.Storable GHC.Arr GHC.Base GHC.ByteOrder GHC.Char GHC.Clock
253− GHC.Conc GHC.Conc.IO GHC.Conc.Signal GHC.Conc.Sync
254− GHC.ConsoleHandler GHC.Constants GHC.Desugar GHC.Enum
255− GHC.Environment GHC.Err GHC.Event GHC.Exception GHC.Exception.Type
256− GHC.ExecutionStack GHC.ExecutionStack.Internal GHC.Exts
257− GHC.Fingerprint GHC.Fingerprint.Type GHC.Float
258− GHC.Float.ConversionUtils GHC.Float.RealFracMethods GHC.Foreign
259− GHC.ForeignPtr GHC.GHCi GHC.GHCi.Helpers GHC.Generics GHC.IO
260− GHC.IO.Buffer GHC.IO.BufferedIO GHC.IO.Device GHC.IO.Encoding
261− GHC.IO.Encoding.CodePage GHC.IO.Encoding.Failure
262− GHC.IO.Encoding.Iconv GHC.IO.Encoding.Latin1 GHC.IO.Encoding.Types
263− GHC.IO.Encoding.UTF16 GHC.IO.Encoding.UTF32 GHC.IO.Encoding.UTF8
264− GHC.IO.Exception GHC.IO.FD GHC.IO.Handle GHC.IO.Handle.FD
265− GHC.IO.Handle.Internals GHC.IO.Handle.Lock GHC.IO.Handle.Text
266− GHC.IO.Handle.Types GHC.IO.IOMode GHC.IO.Unsafe GHC.IOArray
267− GHC.IORef GHC.Int GHC.Ix GHC.List GHC.MVar GHC.Maybe GHC.Natural
268− GHC.Num GHC.OldList GHC.OverloadedLabels GHC.Pack GHC.Profiling
269− GHC.Ptr GHC.RTS.Flags GHC.Read GHC.Real GHC.Records
270− GHC.ResponseFile GHC.ST GHC.STRef GHC.Show GHC.Stable
271− GHC.StableName GHC.Stack GHC.Stack.CCS GHC.Stack.Types
272− GHC.StaticPtr GHC.Stats GHC.Storable GHC.TopHandler GHC.TypeLits
273− GHC.TypeNats GHC.Unicode GHC.Weak GHC.Word Numeric Numeric.Natural
274− Prelude System.CPUTime System.Console.GetOpt System.Environment
275− System.Environment.Blank System.Exit System.IO System.IO.Error
276− System.IO.Unsafe System.Info System.Mem System.Mem.StableName
277− System.Mem.Weak System.Posix.Internals System.Posix.Types
278− System.Timeout Text.ParserCombinators.ReadP
279− Text.ParserCombinators.ReadPrec Text.Printf Text.Read Text.Read.Lex
280− Text.Show Text.Show.Functions Type.Reflection
281− Type.Reflection.Unsafe Unsafe.Coerce
283− Control.Monad.ST.Imp Control.Monad.ST.Lazy.Imp Data.Functor.Utils
284− Data.OldList Data.Semigroup.Internal Data.Typeable.Internal
285− Foreign.ForeignPtr.Imp GHC.IO.Handle.Lock.Common
286− GHC.IO.Handle.Lock.Flock GHC.IO.Handle.Lock.LinuxOFD
287− GHC.IO.Handle.Lock.NoOp GHC.IO.Handle.Lock.Windows
288− GHC.StaticPtr.Internal System.Environment.ExecutablePath
289− System.CPUTime.Utils GHC.Event.Arr GHC.Event.Array
290− GHC.Event.Control GHC.Event.EPoll GHC.Event.IntTable
291− GHC.Event.Internal GHC.Event.KQueue GHC.Event.Manager GHC.Event.PSQ
292− GHC.Event.Poll GHC.Event.Thread GHC.Event.TimerManager
293− GHC.Event.Unique System.CPUTime.Posix.ClockGetTime
294− System.CPUTime.Posix.Times System.CPUTime.Posix.RUsage
295− System.CPUTime.Unsupported
298−dynamic-library-dirs:
300−hs-libraries: HSbase-4.14.1.0
303−depends: ghc-prim-0.6.1 integer-gmp-1.0.3.0 rts
312−license: BSD-3-Clause
313−maintainer: Lennart Kolmodin, Don Stewart <dons00@gmail.com>
314−author: Lennart Kolmodin <kolmodin@gmail.com>
315−stability: provisional
316−homepage: https://github.com/kolmodin/binary
318− Binary serialisation for Haskell values using lazy ByteStrings
320− Efficient, pure binary serialisation using lazy ByteStrings.
321− Haskell values may be encoded to and from binary formats,
322− written to disk as binary, or sent over the network.
323− The format used can be automatically generated, or
324− you can choose to implement a custom format if needed.
325− Serialisation speeds of over 1 G\/sec have been observed,
326− so this library should be suitable for high performance
328−category: Data, Parsing
331− Data.Binary Data.Binary.Builder Data.Binary.Get
332− Data.Binary.Get.Internal Data.Binary.Put
334− Data.Binary.Class Data.Binary.Internal Data.Binary.Generic
335− Data.Binary.FloatCast
338−dynamic-library-dirs:
340−hs-libraries: HSbinary-0.8.8.0
342− array-0.5.4.0 base-4.14.1.0 bytestring-0.10.10.0 containers-0.6.2.1
349−id: bytestring-0.10.10.0
350−key: bytestring-0.10.10.0
351−license: BSD-3-Clause
353− Copyright (c) Don Stewart 2005-2009,
354− (c) Duncan Coutts 2006-2015,
355− (c) David Roundy 2003-2005,
356− (c) Jasper Van der Jeugt 2010,
357− (c) Simon Meier 2010-2013.
358−maintainer: Duncan Coutts <duncan@community.haskell.org>
362−homepage: https://github.com/haskell/bytestring
364− Fast, compact, strict and lazy byte strings with a list interface
366− An efficient compact, immutable byte string type (both strict and lazy)
367− suitable for binary or 8-bit character data.
368− The 'ByteString' type represents sequences of bytes or 8-bit characters.
369− It is suitable for high performance use, both in terms of large data
370− quantities, or high speed requirements. The 'ByteString' functions follow
371− the same style as Haskell\'s ordinary lists, so it is easy to convert code
372− from using 'String' to 'ByteString'.
373− Two 'ByteString' variants are provided:
374− * Strict 'ByteString's keep the string as a single large array. This
375− makes them convenient for passing data between C and Haskell.
376− * Lazy 'ByteString's use a lazy list of strict chunks which makes it
377− suitable for I\/O streaming tasks.
378− The @Char8@ modules provide a character-based view of the same
379− underlying 'ByteString' types. This makes it convenient to handle mixed
380− binary and 8-bit character content (which is common in many file formats
381− and network protocols).
382− The 'Builder' module provides an efficient way to build up 'ByteString's
383− in an ad-hoc way by repeated concatenation. This is ideal for fast
384− serialisation or pretty printing.
385− There is also a 'ShortByteString' type which has a lower memory overhead
386− and can can be converted to or from a 'ByteString', but supports very few
387− other operations. It is suitable for keeping many short strings in memory.
388− 'ByteString's are not designed for Unicode. For Unicode strings you should
389− use the 'Text' type from the @text@ package.
390− These modules are intended to be imported qualified, to avoid name clashes
391− with "Prelude" functions, e.g.
392− > import qualified Data.ByteString as BS
396− Data.ByteString Data.ByteString.Builder
397− Data.ByteString.Builder.Extra Data.ByteString.Builder.Internal
398− Data.ByteString.Builder.Prim Data.ByteString.Builder.Prim.Internal
399− Data.ByteString.Char8 Data.ByteString.Internal Data.ByteString.Lazy
400− Data.ByteString.Lazy.Builder Data.ByteString.Lazy.Builder.ASCII
401− Data.ByteString.Lazy.Builder.Extras Data.ByteString.Lazy.Char8
402− Data.ByteString.Lazy.Internal Data.ByteString.Short
403− Data.ByteString.Short.Internal Data.ByteString.Unsafe
405− Data.ByteString.Builder.ASCII Data.ByteString.Builder.Prim.Binary
406− Data.ByteString.Builder.Prim.ASCII
407− Data.ByteString.Builder.Prim.Internal.Floating
408− Data.ByteString.Builder.Prim.Internal.UncheckedShifts
409− Data.ByteString.Builder.Prim.Internal.Base16
412−dynamic-library-dirs:
414−hs-libraries: HSbytestring-0.10.10.0
418− base-4.14.1.0 deepseq-1.4.4.0 ghc-prim-0.6.1 integer-gmp-1.0.3.0
425−id: containers-0.6.2.1
426−key: containers-0.6.2.1
427−license: BSD-3-Clause
428−maintainer: libraries@haskell.org
429−synopsis: Assorted concrete container types
431− This package contains efficient general-purpose implementations
432− of various immutable container types including sets, maps, sequences,
434− For a walkthrough of what this package provides with examples of common
435− operations see the [containers
436− introduction](https://haskell-containers.readthedocs.io).
437− The declared cost of each operation is either worst-case or amortized, but
438− remains valid even if structures are shared.
439−category: Data Structures
442− Data.Containers.ListUtils Data.Graph Data.IntMap
443− Data.IntMap.Internal Data.IntMap.Internal.Debug Data.IntMap.Lazy
444− Data.IntMap.Merge.Lazy Data.IntMap.Merge.Strict Data.IntMap.Strict
445− Data.IntMap.Strict.Internal Data.IntSet Data.IntSet.Internal
446− Data.Map Data.Map.Internal Data.Map.Internal.Debug Data.Map.Lazy
447− Data.Map.Merge.Lazy Data.Map.Merge.Strict Data.Map.Strict
448− Data.Map.Strict.Internal Data.Sequence Data.Sequence.Internal
449− Data.Sequence.Internal.Sorting Data.Set Data.Set.Internal Data.Tree
450− Utils.Containers.Internal.BitQueue
451− Utils.Containers.Internal.BitUtil
452− Utils.Containers.Internal.StrictPair
454− Utils.Containers.Internal.State
455− Utils.Containers.Internal.StrictMaybe
456− Utils.Containers.Internal.PtrEquality
457− Utils.Containers.Internal.Coercions
458− Utils.Containers.Internal.TypeError
459− Data.Map.Internal.DeprecatedShowTree
460− Data.IntMap.Internal.DeprecatedDebug
463−dynamic-library-dirs:
465−hs-libraries: HScontainers-0.6.2.1
466−depends: array-0.5.4.0 base-4.14.1.0 deepseq-1.4.4.0
475−license: BSD-3-Clause
476−maintainer: libraries@haskell.org
477−synopsis: Deep evaluation of data structures
479− This package provides methods for fully evaluating data structures
480− (\"deep evaluation\"). Deep evaluation is often used for adding
481− strictness to a program, e.g. in order to force pending exceptions,
482− remove space leaks, or force lazy I/O to happen. It is also useful
483− in parallel programs, to ensure pending work does not migrate to the
485− The primary use of this package is via the 'deepseq' function, a
486− \"deep\" version of 'seq'. It is implemented on top of an 'NFData'
487− typeclass (\"Normal Form Data\", data structures with no unevaluated
488− components) which defines strategies for fully evaluating different
489− data types. See module documentation in "Control.DeepSeq" for more
493−exposed-modules: Control.DeepSeq
494−hidden-modules: Control.DeepSeq.BackDoor
497−dynamic-library-dirs:
499−hs-libraries: HSdeepseq-1.4.4.0
500−depends: array-0.5.4.0 base-4.14.1.0
507−id: directory-1.3.6.0
508−key: directory-1.3.6.0
509−license: BSD-3-Clause
510−maintainer: libraries@haskell.org
511−synopsis: Platform-agnostic library for filesystem operations
513− This library provides a basic set of operations for manipulating files and
514− directories in a portable way.
518− System.Directory System.Directory.Internal
519− System.Directory.Internal.Prelude
521− System.Directory.Internal.C_utimensat
522− System.Directory.Internal.Common System.Directory.Internal.Config
523− System.Directory.Internal.Posix System.Directory.Internal.Windows
526−dynamic-library-dirs:
528−hs-libraries: HSdirectory-1.3.6.0
530− base-4.14.1.0 filepath-1.4.2.1 time-1.9.3 unix-2.7.2.2
537−id: exceptions-0.10.4
538−key: exceptions-0.10.4
539−license: BSD-3-Clause
541− Copyright (C) 2013-2015 Edward A. Kmett
542− Copyright (C) 2012 Google Inc.
543−maintainer: Edward A. Kmett <ekmett@gmail.com>
544−author: Edward A. Kmett
545−stability: provisional
546−homepage: http://github.com/ekmett/exceptions/
547−synopsis: Extensible optionally-pure exceptions
548−description: Extensible optionally-pure exceptions.
549−category: Control, Exceptions, Monad
551−exposed-modules: Control.Monad.Catch Control.Monad.Catch.Pure
554−dynamic-library-dirs:
556−hs-libraries: HSexceptions-0.10.4
558− base-4.14.1.0 mtl-2.2.2 stm-2.5.0.0 template-haskell-2.16.0.0
559− transformers-0.5.6.2
567−key: filepath-1.4.2.1
568−license: BSD-3-Clause
569−copyright: Neil Mitchell 2005-2018
570−maintainer: Neil Mitchell <ndmitchell@gmail.com>
571−author: Neil Mitchell <ndmitchell@gmail.com>
572−homepage: https://github.com/haskell/filepath#readme
573−synopsis: Library for manipulating FilePaths in a cross platform way.
575− This package provides functionality for manipulating @FilePath@ values, and is shipped with both <https://www.haskell.org/ghc/ GHC> and the <https://www.haskell.org/platform/ Haskell Platform>. It provides three modules:
576− * "System.FilePath.Posix" manipulates POSIX\/Linux style @FilePath@ values (with @\/@ as the path separator).
577− * "System.FilePath.Windows" manipulates Windows style @FilePath@ values (with either @\\@ or @\/@ as the path separator, and deals with drives).
578− * "System.FilePath" is an alias for the module appropriate to your platform.
579− All three modules provide the same API, and the same documentation (calling out differences in the different variants).
583− System.FilePath System.FilePath.Posix System.FilePath.Windows
586−dynamic-library-dirs:
588−hs-libraries: HSfilepath-1.4.2.1
589−depends: base-4.14.1.0
598−license: BSD-3-Clause
599−maintainer: ghc-devs@haskell.org
600−synopsis: Shared functionality between GHC and its boot libraries
602− This library is shared between GHC, ghc-pkg, and other boot
604− A note about "GHC.PackageDb": it only deals with the subset of
605− the package database that the compiler cares about: modules
606− paths etc and not package metadata like description, authors
607− etc. It is thus not a library interface to ghc-pkg and is *not*
608− suitable for modifying GHC package databases.
609− The package database format and this library are constructed in
610− such a way that while ghc-pkg depends on Cabal, the GHC library
611− and program do not have to depend on Cabal.
615− GHC.BaseDir GHC.ForeignSrcLang GHC.HandleEncoding
616− GHC.LanguageExtensions GHC.PackageDb GHC.Platform GHC.Platform.Host
617− GHC.Serialized GHC.Settings GHC.UniqueSubdir GHC.Version
620−dynamic-library-dirs:
622−hs-libraries: HSghc-boot-8.10.2
624− base-4.14.1.0 binary-0.8.8.0 bytestring-0.10.10.0
625− containers-0.6.2.1 directory-1.3.6.0 filepath-1.4.2.1
633−id: ghc-boot-th-8.10.2
634−key: ghc-boot-th-8.10.2
635−license: BSD-3-Clause
636−maintainer: ghc-devs@haskell.org
638− Shared functionality between GHC and the @template-haskell@
641− This library contains various bits shared between the @ghc@ and
642− @template-haskell@ libraries.
643− This package exists to ensure that @template-haskell@ has a
644− minimal set of transitive dependencies, since it is intended to
645− be depended upon by user code.
649− GHC.ForeignSrcLang.Type GHC.LanguageExtensions.Type GHC.Lexeme
652−dynamic-library-dirs:
654−hs-libraries: HSghc-boot-th-8.10.2
655−depends: base-4.14.1.0
662−id: ghc-compact-0.1.0.0
663−key: ghc-compact-0.1.0.0
664−license: BSD-3-Clause
665−maintainer: libraries@haskell.org
666−synopsis: In memory storage of deeply evaluated data structure
668− This package provides minimal functionality for working with
669− "compact regions", which hold a fully evaluated Haskell object graph.
670− These regions maintain the invariant that no pointers live inside the struct
671− that point outside it, which ensures efficient garbage collection without
672− ever reading the structure contents (effectively, it works as a manually
673− managed "oldest generation" which is never freed until the whole is
675− Internally, the struct is stored a single contiguous block of memory,
676− which allows efficient serialization and deserialization of structs
677− for distributed computing.
680−exposed-modules: GHC.Compact GHC.Compact.Serialized
683−dynamic-library-dirs:
685−hs-libraries: HSghc-compact-0.1.0.0
686−depends: base-4.14.1.0 bytestring-0.10.10.0 ghc-prim-0.6.1
695−license: BSD-3-Clause
696−maintainer: libraries@haskell.org
697−synopsis: Functions for walking GHC's heap
699− This package provides functions for walking the GHC heap data structures
700− and retrieving information about those data structures.
704− GHC.Exts.Heap GHC.Exts.Heap.ClosureTypes GHC.Exts.Heap.Closures
705− GHC.Exts.Heap.Constants GHC.Exts.Heap.InfoTable
706− GHC.Exts.Heap.InfoTable.Types GHC.Exts.Heap.InfoTableProf
710−dynamic-library-dirs:
712−hs-libraries: HSghc-heap-8.10.2
713−depends: base-4.14.1.0 ghc-prim-0.6.1 rts
722−license: BSD-3-Clause
723−maintainer: libraries@haskell.org
724−synopsis: GHC primitives
726− This package contains the primitive types and operations supplied by GHC.
730− GHC.CString GHC.Classes GHC.Debug GHC.IntWord64 GHC.Magic
731− GHC.Prim.Ext GHC.PrimopWrappers GHC.Tuple GHC.Types GHC.Prim
734−dynamic-library-dirs:
736−hs-libraries: HSghc-prim-0.6.1
747−license: BSD-3-Clause
748−maintainer: ghc-devs@haskell.org
749−synopsis: The library supporting GHC's interactive interpreter
751− This library offers interfaces which mediate interactions between the
752− @ghci@ interactive shell and @iserv@, GHC's out-of-process interpreter
757− GHCi.BinaryArray GHCi.BreakArray GHCi.CreateBCO GHCi.FFI
758− GHCi.InfoTable GHCi.Message GHCi.ObjLink GHCi.RemoteTypes
759− GHCi.ResolvedBCO GHCi.Run GHCi.Signals GHCi.StaticPtrTable GHCi.TH
760− GHCi.TH.Binary SizedSeq
763−dynamic-library-dirs:
765−hs-libraries: HSghci-8.10.2
768− array-0.5.4.0 base-4.14.1.0 binary-0.8.8.0 bytestring-0.10.10.0
769− containers-0.6.2.1 deepseq-1.4.4.0 filepath-1.4.2.1 ghc-boot-8.10.2
770− ghc-boot-th-8.10.2 ghc-heap-8.10.2 template-haskell-2.16.0.0
771− transformers-0.5.6.2 unix-2.7.2.2
778−id: haskeline-0.8.0.1
779−key: haskeline-0.8.0.1
780−license: BSD-3-Clause
781−copyright: (c) Judah Jacobson
782−maintainer: Judah Jacobson <judah.jacobson@gmail.com>
783−author: Judah Jacobson
785−homepage: https://github.com/judah/haskeline
787− A command-line interface for user input, written in Haskell.
789− Haskeline provides a user interface for line input in command-line
790− programs. This library is similar in purpose to readline, but since
791− it is written in Haskell it is (hopefully) more easily used in other
793− Haskeline runs both on POSIX-compatible systems and on Windows.
794−category: User Interfaces
797− System.Console.Haskeline System.Console.Haskeline.Completion
798− System.Console.Haskeline.History System.Console.Haskeline.IO
799− System.Console.Haskeline.Internal
801− System.Console.Haskeline.Backend
802− System.Console.Haskeline.Backend.WCWidth
803− System.Console.Haskeline.Command
804− System.Console.Haskeline.Command.Completion
805− System.Console.Haskeline.Command.History
806− System.Console.Haskeline.Command.KillRing
807− System.Console.Haskeline.Directory System.Console.Haskeline.Emacs
808− System.Console.Haskeline.InputT System.Console.Haskeline.Key
809− System.Console.Haskeline.LineState System.Console.Haskeline.Monads
810− System.Console.Haskeline.Prefs System.Console.Haskeline.Recover
811− System.Console.Haskeline.RunCommand System.Console.Haskeline.Term
812− System.Console.Haskeline.Command.Undo System.Console.Haskeline.Vi
813− System.Console.Haskeline.Backend.Posix
814− System.Console.Haskeline.Backend.Posix.Encoder
815− System.Console.Haskeline.Backend.DumbTerm
818−dynamic-library-dirs:
820−hs-libraries: HShaskeline-0.8.0.1
822− base-4.14.1.0 bytestring-0.10.10.0 containers-0.6.2.1
823− directory-1.3.6.0 exceptions-0.10.4 filepath-1.4.2.1
824− process-1.6.9.0 stm-2.5.0.0 transformers-0.5.6.2 unix-2.7.2.2
833−license: BSD-3-Clause
834−maintainer: ghc-devs@haskell.org
836−synopsis: Code Coverage Library for Haskell
838− This package provides the code coverage library for Haskell.
839− See <http://www.haskell.org/haskellwiki/Haskell_program_coverage> for more
844− Trace.Hpc.Mix Trace.Hpc.Reflect Trace.Hpc.Tix Trace.Hpc.Util
847−dynamic-library-dirs:
849−hs-libraries: HShpc-0.6.1.0
851− base-4.14.1.0 containers-0.6.2.1 deepseq-1.4.4.0 directory-1.3.6.0
852− filepath-1.4.2.1 time-1.9.3
859−id: integer-gmp-1.0.3.0
860−key: integer-gmp-1.0.3.0
861−license: BSD-3-Clause
862−maintainer: hvr@gnu.org
863−author: Herbert Valerio Riedel
864−synopsis: Integer library based on GMP
866− This package provides the low-level implementation of the standard
867− 'Integer' type based on the
868− <http://gmplib.org/ GNU Multiple Precision Arithmetic Library (GMP)>.
869− This package provides access to the internal representation of
870− 'Integer' as well as primitive operations with no proper error
871− handling, and should only be used directly with the utmost care.
872−category: Numeric, Algebra
875− GHC.Integer GHC.Integer.GMP.Internals GHC.Integer.Logarithms
876− GHC.Integer.Logarithms.Internals
877−hidden-modules: GHC.Integer.Type
880−dynamic-library-dirs:
882−hs-libraries: HSinteger-gmp-1.0.3.0
885−depends: ghc-prim-0.6.1
894−license: BSD-3-Clause
898−synopsis: Provides shared functionality between iserv and iserv-proxy
899−category: Development
901−exposed-modules: GHCi.Utils Lib
904−dynamic-library-dirs:
906−hs-libraries: HSlibiserv-8.10.2
908− base-4.14.1.0 binary-0.8.8.0 bytestring-0.10.10.0
909− containers-0.6.2.1 deepseq-1.4.4.0 ghci-8.10.2 unix-2.7.2.2
918−license: BSD-3-Clause
919−maintainer: Edward Kmett <ekmett@gmail.com>
921−homepage: http://github.com/haskell/mtl
922−synopsis: Monad classes, using functional dependencies
924− Monad classes using functional dependencies, with instances
925− for various monad transformers, inspired by the paper
926− /Functional Programming with Overloading and Higher-Order Polymorphism/,
927− by Mark P Jones, in /Advanced School of Functional Programming/, 1995
928− (<http://web.cecs.pdx.edu/~mpj/pubs/springschool.html>).
932− Control.Monad.Cont Control.Monad.Cont.Class Control.Monad.Error
933− Control.Monad.Error.Class Control.Monad.Except
934− Control.Monad.Identity Control.Monad.List Control.Monad.RWS
935− Control.Monad.RWS.Class Control.Monad.RWS.Lazy
936− Control.Monad.RWS.Strict Control.Monad.Reader
937− Control.Monad.Reader.Class Control.Monad.State
938− Control.Monad.State.Class Control.Monad.State.Lazy
939− Control.Monad.State.Strict Control.Monad.Trans Control.Monad.Writer
940− Control.Monad.Writer.Class Control.Monad.Writer.Lazy
941− Control.Monad.Writer.Strict
944−dynamic-library-dirs:
946−hs-libraries: HSmtl-2.2.2
947−depends: base-4.14.1.0 transformers-0.5.6.2
956−license: BSD-3-Clause
957−maintainer: Herbert Valerio Riedel <hvr@gnu.org>
959− Daan Leijen <daan@microsoft.com>, Paolo Martini <paolo@nemail.it>, Antoine Latter <aslatter@gmail.com>
960−homepage: https://github.com/haskell/parsec
961−synopsis: Monadic parser combinators
963− Parsec is designed from scratch as an industrial-strength parser
964− library. It is simple, safe, well documented (on the package
965− homepage), has extensive libraries, good error messages,
966− and is fast. It is defined as a monad transformer that can be
967− stacked on arbitrary monads, and it is also parametric in the
969− The main entry point is the "Text.Parsec" module which provides
970− defaults for parsing 'Char'acter data.
971− The "Text.ParserCombinators.Parsec" module hierarchy contains
972− the legacy @parsec-2@ API and may be removed at some point in
977− Text.Parsec Text.Parsec.ByteString Text.Parsec.ByteString.Lazy
978− Text.Parsec.Char Text.Parsec.Combinator Text.Parsec.Error
979− Text.Parsec.Expr Text.Parsec.Language Text.Parsec.Perm
980− Text.Parsec.Pos Text.Parsec.Prim Text.Parsec.String
981− Text.Parsec.Text Text.Parsec.Text.Lazy Text.Parsec.Token
982− Text.ParserCombinators.Parsec Text.ParserCombinators.Parsec.Char
983− Text.ParserCombinators.Parsec.Combinator
984− Text.ParserCombinators.Parsec.Error
985− Text.ParserCombinators.Parsec.Expr
986− Text.ParserCombinators.Parsec.Language
987− Text.ParserCombinators.Parsec.Perm
988− Text.ParserCombinators.Parsec.Pos
989− Text.ParserCombinators.Parsec.Prim
990− Text.ParserCombinators.Parsec.Token
993−dynamic-library-dirs:
995−hs-libraries: HSparsec-3.1.14.0
997− base-4.14.1.0 bytestring-0.10.10.0 mtl-2.2.2 text-1.2.3.2
1006−license: BSD-3-Clause
1007−maintainer: David Terei <code@davidterei.com>
1009−homepage: http://github.com/haskell/pretty
1010−synopsis: Pretty-printing library
1012− This package contains a pretty-printing library, a set of API's
1013− that provides a way to easily print out text in a consistent
1014− format of your choosing. This is useful for compilers and related
1016− This library was originally designed by John Hughes's and has since
1017− been heavily modified by Simon Peyton Jones.
1021− Text.PrettyPrint Text.PrettyPrint.Annotated
1022− Text.PrettyPrint.Annotated.HughesPJ
1023− Text.PrettyPrint.Annotated.HughesPJClass Text.PrettyPrint.HughesPJ
1024− Text.PrettyPrint.HughesPJClass
1027−dynamic-library-dirs:
1029−hs-libraries: HSpretty-1.1.3.6
1030−depends: base-4.14.1.0 deepseq-1.4.4.0 ghc-prim-0.6.1
1038−key: process-1.6.9.0
1039−license: BSD-3-Clause
1040−maintainer: libraries@haskell.org
1041−synopsis: Process libraries
1043− This package contains libraries for dealing with system processes.
1044− The typed-process package is a more recent take on a process API,
1045− which uses this package internally. It features better binary
1046− support, easier concurrency, and a more composable API. You can
1047− read more about it at
1048− <https://github.com/fpco/typed-process/#readme>.
1051−exposed-modules: System.Cmd System.Process System.Process.Internals
1052−hidden-modules: System.Process.Common System.Process.Posix
1055−dynamic-library-dirs:
1057−hs-libraries: HSprocess-1.6.9.0
1059−includes: runProcess.h
1061− base-4.14.1.0 deepseq-1.4.4.0 directory-1.3.6.0 filepath-1.4.2.1
1071−license: BSD-3-Clause
1072−maintainer: libraries@haskell.org
1073−homepage: https://wiki.haskell.org/Software_transactional_memory
1074−synopsis: Software Transactional Memory
1076− Software Transactional Memory, or STM, is an abstraction for
1077− concurrent communication. The main benefits of STM are
1078− /composability/ and /modularity/. That is, using STM you can write
1079− concurrent abstractions that can be easily composed with any other
1080− abstraction built using STM, without exposing the details of how
1081− your abstraction ensures safety. This is typically not the case
1082− with other forms of concurrent communication, such as locks or
1084−category: Concurrency
1087− Control.Concurrent.STM Control.Concurrent.STM.TArray
1088− Control.Concurrent.STM.TBQueue Control.Concurrent.STM.TChan
1089− Control.Concurrent.STM.TMVar Control.Concurrent.STM.TQueue
1090− Control.Concurrent.STM.TSem Control.Concurrent.STM.TVar
1092−hidden-modules: Control.Sequential.STM
1095−dynamic-library-dirs:
1097−hs-libraries: HSstm-2.5.0.0
1098−depends: array-0.5.4.0 base-4.14.1.0
1102−name: template-haskell
1105−id: template-haskell-2.16.0.0
1106−key: template-haskell-2.16.0.0
1107−license: BSD-3-Clause
1108−maintainer: libraries@haskell.org
1109−synopsis: Support library for Template Haskell
1111− This package provides modules containing facilities for manipulating
1112− Haskell source code using Template Haskell.
1113− See <http://www.haskell.org/haskellwiki/Template_Haskell> for more
1115−category: Template Haskell
1118− Language.Haskell.TH Language.Haskell.TH.LanguageExtensions
1119− Language.Haskell.TH.Lib Language.Haskell.TH.Lib.Internal
1120− Language.Haskell.TH.Ppr Language.Haskell.TH.PprLib
1121− Language.Haskell.TH.Quote Language.Haskell.TH.Syntax
1122−hidden-modules: Language.Haskell.TH.Lib.Map
1125−dynamic-library-dirs:
1127−hs-libraries: HStemplate-haskell-2.16.0.0
1129− base-4.14.1.0 ghc-boot-th-8.10.2 ghc-prim-0.6.1 pretty-1.1.3.6
1138−license: BSD-2-Clause
1139−copyright: 2009-2011 Bryan O'Sullivan, 2008-2009 Tom Harper
1141− Bryan O'Sullivan <bos@serpentine.com>, Herbert Valerio Riedel <hvr@gnu.org>
1142−author: Bryan O'Sullivan <bos@serpentine.com>
1143−homepage: https://github.com/haskell/text
1144−synopsis: An efficient packed Unicode text type.
1146− An efficient packed, immutable Unicode text type (both strict and
1147− lazy), with a powerful loop fusion optimization framework.
1148− The 'Text' type represents Unicode character strings, in a time and
1149− space-efficient manner. This package provides text processing
1150− capabilities that are optimized for performance critical use, both
1151− in terms of large data quantities and high speed.
1152− The 'Text' type provides character-encoding, type-safe case
1153− conversion via whole-string case conversion functions (see "Data.Text").
1154− It also provides a range of functions for converting 'Text' values to
1155− and from 'ByteStrings', using several standard encodings
1156− (see "Data.Text.Encoding").
1157− Efficient locale-sensitive support for text IO is also supported
1158− (see "Data.Text.IO").
1159− These modules are intended to be imported qualified, to avoid name
1160− clashes with Prelude functions, e.g.
1161− > import qualified Data.Text as T
1162− To use an extended and very rich family of functions for working
1163− with Unicode text (including normalization, regular expressions,
1164− non-standard encodings, text breaking, and locales), see
1165− the [text-icu package](https://hackage.haskell.org/package/text-icu)
1166− based on the well-respected and liberally
1167− licensed [ICU library](http://site.icu-project.org/).
1168−category: Data, Text
1171− Data.Text Data.Text.Array Data.Text.Encoding
1172− Data.Text.Encoding.Error Data.Text.Foreign Data.Text.IO
1173− Data.Text.Internal Data.Text.Internal.Builder
1174− Data.Text.Internal.Builder.Functions
1175− Data.Text.Internal.Builder.Int.Digits
1176− Data.Text.Internal.Builder.RealFloat.Functions
1177− Data.Text.Internal.Encoding.Fusion
1178− Data.Text.Internal.Encoding.Fusion.Common
1179− Data.Text.Internal.Encoding.Utf16 Data.Text.Internal.Encoding.Utf32
1180− Data.Text.Internal.Encoding.Utf8 Data.Text.Internal.Functions
1181− Data.Text.Internal.Fusion Data.Text.Internal.Fusion.CaseMapping
1182− Data.Text.Internal.Fusion.Common Data.Text.Internal.Fusion.Size
1183− Data.Text.Internal.Fusion.Types Data.Text.Internal.IO
1184− Data.Text.Internal.Lazy Data.Text.Internal.Lazy.Encoding.Fusion
1185− Data.Text.Internal.Lazy.Fusion Data.Text.Internal.Lazy.Search
1186− Data.Text.Internal.Private Data.Text.Internal.Read
1187− Data.Text.Internal.Search Data.Text.Internal.Unsafe
1188− Data.Text.Internal.Unsafe.Char Data.Text.Internal.Unsafe.Shift
1189− Data.Text.Lazy Data.Text.Lazy.Builder Data.Text.Lazy.Builder.Int
1190− Data.Text.Lazy.Builder.RealFloat Data.Text.Lazy.Encoding
1191− Data.Text.Lazy.IO Data.Text.Lazy.Internal Data.Text.Lazy.Read
1192− Data.Text.Read Data.Text.Unsafe
1193−hidden-modules: Data.Text.Show
1196−dynamic-library-dirs:
1198−hs-libraries: HStext-1.2.3.2
1200− array-0.5.4.0 base-4.14.1.0 binary-0.8.8.0 bytestring-0.10.10.0
1201− deepseq-1.4.4.0 ghc-prim-0.6.1 integer-gmp-1.0.3.0
1210−license: BSD-3-Clause
1211−maintainer: <ashley@semantic.org>
1212−author: Ashley Yakeley
1214−homepage: https://github.com/haskell/time
1215−synopsis: A time library
1216−description: Time, clocks and calendars
1220− Data.Time Data.Time.Calendar Data.Time.Calendar.Easter
1221− Data.Time.Calendar.Julian Data.Time.Calendar.MonthDay
1222− Data.Time.Calendar.OrdinalDate Data.Time.Calendar.WeekDate
1223− Data.Time.Clock Data.Time.Clock.POSIX Data.Time.Clock.System
1224− Data.Time.Clock.TAI Data.Time.Format Data.Time.Format.ISO8601
1225− Data.Time.Format.Internal Data.Time.LocalTime
1227− Data.Format Data.Time.Calendar.Private Data.Time.Calendar.Days
1228− Data.Time.Calendar.Gregorian Data.Time.Calendar.CalendarDiffDays
1229− Data.Time.Calendar.Week Data.Time.Calendar.JulianYearDay
1230− Data.Time.Clock.Internal.DiffTime
1231− Data.Time.Clock.Internal.AbsoluteTime
1232− Data.Time.Clock.Internal.NominalDiffTime
1233− Data.Time.Clock.Internal.POSIXTime
1234− Data.Time.Clock.Internal.UniversalTime
1235− Data.Time.Clock.Internal.SystemTime
1236− Data.Time.Clock.Internal.UTCTime Data.Time.Clock.Internal.CTimeval
1237− Data.Time.Clock.Internal.CTimespec Data.Time.Clock.Internal.UTCDiff
1238− Data.Time.LocalTime.Internal.TimeZone
1239− Data.Time.LocalTime.Internal.TimeOfDay
1240− Data.Time.LocalTime.Internal.CalendarDiffTime
1241− Data.Time.LocalTime.Internal.LocalTime
1242− Data.Time.LocalTime.Internal.ZonedTime Data.Time.Format.Parse
1243− Data.Time.Format.Locale Data.Time.Format.Format.Class
1244− Data.Time.Format.Format.Instances Data.Time.Format.Parse.Class
1245− Data.Time.Format.Parse.Instances
1248−dynamic-library-dirs:
1250−hs-libraries: HStime-1.9.3
1252−depends: base-4.14.1.0 deepseq-1.4.4.0
1259−id: transformers-0.5.6.2
1260−key: transformers-0.5.6.2
1261−license: BSD-3-Clause
1262−maintainer: Ross Paterson <R.Paterson@city.ac.uk>
1263−author: Andy Gill, Ross Paterson
1264−synopsis: Concrete functor and monad transformers
1266− A portable library of functor and monad transformers, inspired by
1268− * \"Functional Programming with Overloading and Higher-Order
1269− Polymorphism\", by Mark P Jones,
1270− in /Advanced School of Functional Programming/, 1995
1271− (<http://web.cecs.pdx.edu/~mpj/pubs/springschool.html>).
1272− This package contains:
1273− * the monad transformer class (in "Control.Monad.Trans.Class")
1274− * concrete functor and monad transformers, each with associated
1275− operations and functions to lift operations associated with other
1277− The package can be used on its own in portable Haskell code, in
1278− which case operations need to be manually lifted through transformer
1279− stacks (see "Control.Monad.Trans.Class" for some examples).
1280− Alternatively, it can be used with the non-portable monad classes in
1281− the @mtl@ or @monads-tf@ packages, which automatically lift operations
1282− introduced by monad transformers through other transformers.
1286− Control.Applicative.Backwards Control.Applicative.Lift
1287− Control.Monad.Signatures Control.Monad.Trans.Accum
1288− Control.Monad.Trans.Class Control.Monad.Trans.Cont
1289− Control.Monad.Trans.Error Control.Monad.Trans.Except
1290− Control.Monad.Trans.Identity Control.Monad.Trans.List
1291− Control.Monad.Trans.Maybe Control.Monad.Trans.RWS
1292− Control.Monad.Trans.RWS.CPS Control.Monad.Trans.RWS.Lazy
1293− Control.Monad.Trans.RWS.Strict Control.Monad.Trans.Reader
1294− Control.Monad.Trans.Select Control.Monad.Trans.State
1295− Control.Monad.Trans.State.Lazy Control.Monad.Trans.State.Strict
1296− Control.Monad.Trans.Writer Control.Monad.Trans.Writer.CPS
1297− Control.Monad.Trans.Writer.Lazy Control.Monad.Trans.Writer.Strict
1298− Data.Functor.Constant Data.Functor.Reverse
1301−dynamic-library-dirs:
1303−hs-libraries: HStransformers-0.5.6.2
1304−depends: base-4.14.1.0
1313−license: BSD-3-Clause
1314−maintainer: libraries@haskell.org
1315−homepage: https://github.com/haskell/unix
1316−synopsis: POSIX functionality
1318− This package gives you access to the set of operating system
1319− services standardised by
1320− <http://pubs.opengroup.org/onlinepubs/9699919799/ POSIX.1-2008>
1321− (or the IEEE Portable Operating System Interface for Computing
1322− Environments - IEEE Std. 1003.1).
1323− The package is not supported under Windows.
1327− System.Posix System.Posix.ByteString
1328− System.Posix.ByteString.FilePath System.Posix.Directory
1329− System.Posix.Directory.ByteString System.Posix.DynamicLinker
1330− System.Posix.DynamicLinker.ByteString
1331− System.Posix.DynamicLinker.Module
1332− System.Posix.DynamicLinker.Module.ByteString
1333− System.Posix.DynamicLinker.Prim System.Posix.Env
1334− System.Posix.Env.ByteString System.Posix.Error System.Posix.Fcntl
1335− System.Posix.Files System.Posix.Files.ByteString System.Posix.IO
1336− System.Posix.IO.ByteString System.Posix.Process
1337− System.Posix.Process.ByteString System.Posix.Process.Internals
1338− System.Posix.Resource System.Posix.Semaphore System.Posix.SharedMem
1339− System.Posix.Signals System.Posix.Signals.Exts System.Posix.Temp
1340− System.Posix.Temp.ByteString System.Posix.Terminal
1341− System.Posix.Terminal.ByteString System.Posix.Time
1342− System.Posix.Unistd System.Posix.User
1344− System.Posix.Directory.Common System.Posix.DynamicLinker.Common
1345− System.Posix.Files.Common System.Posix.IO.Common
1346− System.Posix.Process.Common System.Posix.Terminal.Common
1349−dynamic-library-dirs:
1351−hs-libraries: HSunix-2.7.2.2
1352−extra-libraries: rt util dl pthread
1354−includes: HsUnix.h execvpe.h
1355−depends: base-4.14.1.0 bytestring-0.10.10.0 time-1.9.3
1364−license: BSD-3-Clause
1365−maintainer: glasgow-haskell-users@haskell.org
1369−extra-libraries: m rt dl ffi numa pthread
1373− "-Wl,-u,base_GHCziTopHandler_runIO_closure"
1374− "-Wl,-u,base_GHCziTopHandler_runNonIO_closure"
1375− "-Wl,-u,ghczmprim_GHCziTuple_Z0T_closure"
1376− "-Wl,-u,ghczmprim_GHCziTypes_True_closure"
1377− "-Wl,-u,ghczmprim_GHCziTypes_False_closure"
1378− "-Wl,-u,base_GHCziPack_unpackCString_closure"
1379− "-Wl,-u,base_GHCziWeak_runFinalizzerBatch_closure"
1380− "-Wl,-u,base_GHCziIOziException_stackOverflow_closure"
1381− "-Wl,-u,base_GHCziIOziException_heapOverflow_closure"
1382− "-Wl,-u,base_GHCziIOziException_allocationLimitExceeded_closure"
1383− "-Wl,-u,base_GHCziIOziException_blockedIndefinitelyOnMVar_closure"
1384− "-Wl,-u,base_GHCziIOziException_blockedIndefinitelyOnSTM_closure"
1385− "-Wl,-u,base_GHCziIOziException_cannotCompactFunction_closure"
1386− "-Wl,-u,base_GHCziIOziException_cannotCompactPinned_closure"
1387− "-Wl,-u,base_GHCziIOziException_cannotCompactMutable_closure"
1388− "-Wl,-u,base_ControlziExceptionziBase_absentSumFieldError_closure"
1389− "-Wl,-u,base_ControlziExceptionziBase_nonTermination_closure"
1390− "-Wl,-u,base_ControlziExceptionziBase_nestedAtomically_closure"
1391− "-Wl,-u,base_GHCziEventziThread_blockedOnBadFD_closure"
1392− "-Wl,-u,base_GHCziConcziSync_runSparks_closure"
1393− "-Wl,-u,base_GHCziConcziIO_ensureIOManagerIsRunning_closure"
1394− "-Wl,-u,base_GHCziConcziIO_ioManagerCapabilitiesChanged_closure"
1395− "-Wl,-u,base_GHCziConcziSignal_runHandlersPtr_closure"
1396− "-Wl,-u,base_GHCziTopHandler_flushStdHandles_closure"
1397− "-Wl,-u,base_GHCziTopHandler_runMainIO_closure"
1398− "-Wl,-u,ghczmprim_GHCziTypes_Czh_con_info"
1399− "-Wl,-u,ghczmprim_GHCziTypes_Izh_con_info"
1400− "-Wl,-u,ghczmprim_GHCziTypes_Fzh_con_info"
1401− "-Wl,-u,ghczmprim_GHCziTypes_Dzh_con_info"
1402− "-Wl,-u,ghczmprim_GHCziTypes_Wzh_con_info"
1403− "-Wl,-u,base_GHCziPtr_Ptr_con_info"
1404− "-Wl,-u,base_GHCziPtr_FunPtr_con_info"
1405− "-Wl,-u,base_GHCziInt_I8zh_con_info"
1406− "-Wl,-u,base_GHCziInt_I16zh_con_info"
1407− "-Wl,-u,base_GHCziInt_I32zh_con_info"
1408− "-Wl,-u,base_GHCziInt_I64zh_con_info"
1409− "-Wl,-u,base_GHCziWord_W8zh_con_info"
1410− "-Wl,-u,base_GHCziWord_W16zh_con_info"
1411− "-Wl,-u,base_GHCziWord_W32zh_con_info"
1412− "-Wl,-u,base_GHCziWord_W64zh_con_info"
1413− "-Wl,-u,base_GHCziStable_StablePtr_con_info"
1414− "-Wl,-u,hs_atomic_add8" "-Wl,-u,hs_atomic_add16"
1415− "-Wl,-u,hs_atomic_add32" "-Wl,-u,hs_atomic_add64"
1416− "-Wl,-u,hs_atomic_sub8" "-Wl,-u,hs_atomic_sub16"
1417− "-Wl,-u,hs_atomic_sub32" "-Wl,-u,hs_atomic_sub64"
1418− "-Wl,-u,hs_atomic_and8" "-Wl,-u,hs_atomic_and16"
1419− "-Wl,-u,hs_atomic_and32" "-Wl,-u,hs_atomic_and64"
1420− "-Wl,-u,hs_atomic_nand8" "-Wl,-u,hs_atomic_nand16"
1421− "-Wl,-u,hs_atomic_nand32" "-Wl,-u,hs_atomic_nand64"
1422− "-Wl,-u,hs_atomic_or8" "-Wl,-u,hs_atomic_or16"
1423− "-Wl,-u,hs_atomic_or32" "-Wl,-u,hs_atomic_or64"
1424− "-Wl,-u,hs_atomic_xor8" "-Wl,-u,hs_atomic_xor16"
1425− "-Wl,-u,hs_atomic_xor32" "-Wl,-u,hs_atomic_xor64"
1426− "-Wl,-u,hs_cmpxchg8" "-Wl,-u,hs_cmpxchg16" "-Wl,-u,hs_cmpxchg32"
1427− "-Wl,-u,hs_cmpxchg64" "-Wl,-u,hs_atomicread8"
1428− "-Wl,-u,hs_atomicread16" "-Wl,-u,hs_atomicread32"
1429− "-Wl,-u,hs_atomicread64" "-Wl,-u,hs_atomicwrite8"
1430− "-Wl,-u,hs_atomicwrite16" "-Wl,-u,hs_atomicwrite32"
1431− "-Wl,-u,hs_atomicwrite64"
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.10.2-x86_64-linux/ghc-pkg/versiondeleted−1
@@ -1 +0,0 @@
1−GHC package manager version 8.10.2
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.10.2-x86_64-linux/ghc/infodeleted−67
@@ -1,67 +0,0 @@
1− [("Project name","The Glorious Glasgow Haskell Compilation System")
2− ,("GCC extra via C opts","")
3− ,("C compiler flags","")
4− ,("C++ compiler flags","")
5− ,("C compiler link flags","-Wl,-z,noexecstack")
6− ,("C compiler supports -no-pie","YES")
7− ,("Haskell CPP flags","-E -undef -traditional")
8− ,("ld flags","-z noexecstack")
9− ,("ld supports compact unwind","YES")
10− ,("ld supports build-id","YES")
11− ,("ld supports filelist","NO")
12− ,("ld is GNU ld","YES")
13− ,("Merge objects flags","-r")
15− ,("ar supports at file","YES")
16− ,("touch command","touch")
17− ,("dllwrap command","/bin/false")
18− ,("windres command","/bin/false")
19− ,("libtool command","libtool")
20− ,("cross compiling","YES")
21− ,("target platform string","aarch64-unknown-linux")
22− ,("target os","OSLinux")
23− ,("target arch","ArchARM64")
24− ,("target word size","8")
25− ,("target has GNU nonexec stack","YES")
26− ,("target has .ident directive","YES")
27− ,("target has subsections via symbols","NO")
28− ,("target has RTS linker","YES")
29− ,("Unregisterised","NO")
30− ,("LLVM target","aarch64-unknown-linux")
31− ,("LLVM llc command","llc")
32− ,("LLVM opt command","opt")
33− ,("LLVM clang command","clang")
34− ,("integer library","integer-gmp")
35− ,("Use interpreter","YES")
36− ,("Use native code generator","NO")
37− ,("Support SMP","YES")
38− ,("RTS ways","l debug thr thr_debug thr_l thr_p thr_debug_p debug_p")
39− ,("Tables next to code","YES")
40− ,("Leading underscore","NO")
41− ,("Use LibFFI","YES")
42− ,("Use Threads","YES")
43− ,("Use Debugging","NO")
44− ,("RTS expects libdw","NO")
45− ,("Project version","8.10.2")
46− ,("Project Git commit id","29204b1c4f52ea34d84da33593052ee839293bf2")
47− ,("Booter version","8.6.5")
49− ,("Build platform","x86_64-unknown-linux")
50− ,("Host platform","x86_64-unknown-linux")
51− ,("Target platform","aarch64-unknown-linux")
52− ,("Have interpreter","YES")
53− ,("Object splitting supported","NO")
54− ,("Have native code generator","NO")
55− ,("Support dynamic-too","YES")
56− ,("Support parallel --make","YES")
57− ,("Support reexported-modules","YES")
58− ,("Support thinning and renaming package flags","YES")
59− ,("Support Backpack","YES")
60− ,("Requires unified installed package IDs","YES")
61− ,("Uses package keys","YES")
62− ,("Uses unit IDs","YES")
63− ,("Dynamic by default","NO")
64− ,("GHC Dynamic","NO")
65− ,("GHC Profiled","NO")
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.10.2-x86_64-linux/ghc/numeric-versiondeleted−1
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.10.2-x86_64-linux/ghc/supported-languagesdeleted−255
@@ -1,255 +0,0 @@
9−NoAlternativeLayoutRule
10−AlternativeLayoutRuleTransitional
11−NoAlternativeLayoutRuleTransitional
26−ConstrainedClassMethods
27−NoConstrainedClassMethods
54−DisambiguateRecordFields
55−NoDisambiguateRecordFields
63−NoDuplicateRecordFields
70−ExistentialQuantification
71−NoExistentialQuantification
77−NoExtendedDefaultRules
82−ForeignFunctionInterface
83−NoForeignFunctionInterface
84−FunctionalDependencies
85−NoFunctionalDependencies
91−NoGHCForeignImportPrim
92−GeneralizedNewtypeDeriving
93−NoGeneralizedNewtypeDeriving
94−GeneralisedNewtypeDeriving
95−NoGeneralisedNewtypeDeriving
101−NoImportQualifiedPost
105−NoIncoherentInstances
106−TypeFamilyDependencies
107−NoTypeFamilyDependencies
121−NoLiberalTypeSynonyms
125−NoMonadComprehensions
127−NoMonadFailDesugaring
132−MonomorphismRestriction
133−NoMonomorphismRestriction
134−MultiParamTypeClasses
135−NoMultiParamTypeClasses
150−NondecreasingIndentation
151−NoNondecreasingIndentation
157−NoOverlappingInstances
170−PartialTypeSignatures
171−NoPartialTypeSignatures
180−PolymorphicComponents
181−NoPolymorphicComponents
182−QuantifiedConstraints
183−NoQuantifiedConstraints
207−NoScopedTypeVariables
220−TemplateHaskellQuotes
221−NoTemplateHaskellQuotes
222−StandaloneKindSignatures
223−NoStandaloneKindSignatures
224−TraditionalRecordSyntax
225−NoTraditionalRecordSyntax
239−NoTypeSynonymInstances
245−NoUndecidableInstances
246−UndecidableSuperClasses
247−NoUndecidableSuperClasses
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.10.2-x86_64-linux/ghc/versiondeleted−1
@@ -1 +0,0 @@
1−The Glorious Glasgow Haskell Compilation System, version 8.10.2
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.10.3-x86_64-linux/ghc-pkg/dump-globaldeleted−1443
@@ -1,1443 +0,0 @@
7−copyright: 2003-2020, Cabal Development Team (see AUTHORS file)
8−maintainer: cabal-devel@haskell.org
9−author: Cabal Development Team <cabal-devel@haskell.org>
10−homepage: http://www.haskell.org/cabal/
11−synopsis: A framework for packaging Haskell software
13− The Haskell Common Architecture for Building Applications and
14− Libraries: a framework defining a common interface for authors to more
15− easily build their Haskell applications in a portable way.
16− The Haskell Cabal is part of a larger infrastructure for distributing,
17− organizing, and cataloging Haskell libraries and tools.
18−category: Distribution
21− Distribution.Backpack Distribution.Backpack.ComponentsGraph
22− Distribution.Backpack.Configure
23− Distribution.Backpack.ConfiguredComponent
24− Distribution.Backpack.DescribeUnitId
25− Distribution.Backpack.FullUnitId
26− Distribution.Backpack.LinkedComponent
27− Distribution.Backpack.ModSubst Distribution.Backpack.ModuleShape
28− Distribution.Backpack.PreModuleShape Distribution.CabalSpecVersion
29− Distribution.Compat.Binary Distribution.Compat.CharParsing
30− Distribution.Compat.CreatePipe Distribution.Compat.DList
31− Distribution.Compat.Directory Distribution.Compat.Environment
32− Distribution.Compat.Exception Distribution.Compat.FilePath
33− Distribution.Compat.Graph Distribution.Compat.Internal.TempFile
34− Distribution.Compat.Lens Distribution.Compat.Newtype
35− Distribution.Compat.Parsing Distribution.Compat.Prelude.Internal
36− Distribution.Compat.Process Distribution.Compat.ResponseFile
37− Distribution.Compat.Semigroup Distribution.Compat.Stack
38− Distribution.Compat.Time Distribution.Compat.Typeable
39− Distribution.Compiler Distribution.FieldGrammar
40− Distribution.FieldGrammar.Class
41− Distribution.FieldGrammar.FieldDescrs
42− Distribution.FieldGrammar.Parsec Distribution.FieldGrammar.Pretty
43− Distribution.Fields Distribution.Fields.ConfVar
44− Distribution.Fields.Field Distribution.Fields.Lexer
45− Distribution.Fields.LexerMonad Distribution.Fields.ParseResult
46− Distribution.Fields.Parser Distribution.Fields.Pretty
47− Distribution.InstalledPackageInfo Distribution.License
48− Distribution.Make Distribution.ModuleName Distribution.Package
49− Distribution.PackageDescription
50− Distribution.PackageDescription.Check
51− Distribution.PackageDescription.Configuration
52− Distribution.PackageDescription.FieldGrammar
53− Distribution.PackageDescription.Parsec
54− Distribution.PackageDescription.PrettyPrint
55− Distribution.PackageDescription.Quirks
56− Distribution.PackageDescription.Utils Distribution.Parsec
57− Distribution.Parsec.Error Distribution.Parsec.FieldLineStream
58− Distribution.Parsec.Newtypes Distribution.Parsec.Position
59− Distribution.Parsec.Warning Distribution.Pretty Distribution.ReadE
60− Distribution.SPDX Distribution.SPDX.License
61− Distribution.SPDX.LicenseExceptionId
62− Distribution.SPDX.LicenseExpression Distribution.SPDX.LicenseId
63− Distribution.SPDX.LicenseListVersion
64− Distribution.SPDX.LicenseReference Distribution.Simple
65− Distribution.Simple.Bench Distribution.Simple.Build
66− Distribution.Simple.Build.Macros
67− Distribution.Simple.Build.PathsModule
68− Distribution.Simple.BuildPaths Distribution.Simple.BuildTarget
69− Distribution.Simple.BuildToolDepends Distribution.Simple.CCompiler
70− Distribution.Simple.Command Distribution.Simple.Compiler
71− Distribution.Simple.Configure Distribution.Simple.Doctest
72− Distribution.Simple.Flag Distribution.Simple.GHC
73− Distribution.Simple.GHCJS Distribution.Simple.Glob
74− Distribution.Simple.Haddock Distribution.Simple.HaskellSuite
75− Distribution.Simple.Hpc Distribution.Simple.Install
76− Distribution.Simple.InstallDirs
77− Distribution.Simple.InstallDirs.Internal
78− Distribution.Simple.LocalBuildInfo Distribution.Simple.PackageIndex
79− Distribution.Simple.PreProcess Distribution.Simple.PreProcess.Unlit
80− Distribution.Simple.Program Distribution.Simple.Program.Ar
81− Distribution.Simple.Program.Builtin Distribution.Simple.Program.Db
82− Distribution.Simple.Program.Find Distribution.Simple.Program.GHC
83− Distribution.Simple.Program.HcPkg Distribution.Simple.Program.Hpc
84− Distribution.Simple.Program.Internal Distribution.Simple.Program.Ld
85− Distribution.Simple.Program.ResponseFile
86− Distribution.Simple.Program.Run Distribution.Simple.Program.Script
87− Distribution.Simple.Program.Strip Distribution.Simple.Program.Types
88− Distribution.Simple.Register Distribution.Simple.Setup
89− Distribution.Simple.ShowBuildInfo Distribution.Simple.SrcDist
90− Distribution.Simple.Test Distribution.Simple.Test.ExeV10
91− Distribution.Simple.Test.LibV09 Distribution.Simple.Test.Log
92− Distribution.Simple.UHC Distribution.Simple.UserHooks
93− Distribution.Simple.Utils Distribution.System
94− Distribution.TestSuite Distribution.Text
95− Distribution.Types.AbiDependency Distribution.Types.AbiHash
96− Distribution.Types.AnnotatedId Distribution.Types.Benchmark
97− Distribution.Types.Benchmark.Lens
98− Distribution.Types.BenchmarkInterface
99− Distribution.Types.BenchmarkType Distribution.Types.BuildInfo
100− Distribution.Types.BuildInfo.Lens Distribution.Types.BuildType
101− Distribution.Types.Component Distribution.Types.ComponentId
102− Distribution.Types.ComponentInclude
103− Distribution.Types.ComponentLocalBuildInfo
104− Distribution.Types.ComponentName
105− Distribution.Types.ComponentRequestedSpec
106− Distribution.Types.CondTree Distribution.Types.Condition
107− Distribution.Types.ConfVar Distribution.Types.Dependency
108− Distribution.Types.DependencyMap Distribution.Types.ExeDependency
109− Distribution.Types.Executable Distribution.Types.Executable.Lens
110− Distribution.Types.ExecutableScope Distribution.Types.ExposedModule
111− Distribution.Types.Flag Distribution.Types.ForeignLib
112− Distribution.Types.ForeignLib.Lens
113− Distribution.Types.ForeignLibOption
114− Distribution.Types.ForeignLibType
115− Distribution.Types.GenericPackageDescription
116− Distribution.Types.GenericPackageDescription.Lens
117− Distribution.Types.GivenComponent
118− Distribution.Types.HookedBuildInfo
119− Distribution.Types.IncludeRenaming
120− Distribution.Types.InstalledPackageInfo
121− Distribution.Types.InstalledPackageInfo.FieldGrammar
122− Distribution.Types.InstalledPackageInfo.Lens
123− Distribution.Types.LegacyExeDependency Distribution.Types.Lens
124− Distribution.Types.Library Distribution.Types.Library.Lens
125− Distribution.Types.LibraryName Distribution.Types.LibraryVisibility
126− Distribution.Types.LocalBuildInfo Distribution.Types.Mixin
127− Distribution.Types.Module Distribution.Types.ModuleReexport
128− Distribution.Types.ModuleRenaming
129− Distribution.Types.MungedPackageId
130− Distribution.Types.MungedPackageName
131− Distribution.Types.PackageDescription
132− Distribution.Types.PackageDescription.Lens
133− Distribution.Types.PackageId Distribution.Types.PackageId.Lens
134− Distribution.Types.PackageName Distribution.Types.PackageName.Magic
135− Distribution.Types.PackageVersionConstraint
136− Distribution.Types.PkgconfigDependency
137− Distribution.Types.PkgconfigName
138− Distribution.Types.PkgconfigVersion
139− Distribution.Types.PkgconfigVersionRange
140− Distribution.Types.SetupBuildInfo
141− Distribution.Types.SetupBuildInfo.Lens
142− Distribution.Types.SourceRepo Distribution.Types.SourceRepo.Lens
143− Distribution.Types.TargetInfo Distribution.Types.TestSuite
144− Distribution.Types.TestSuite.Lens
145− Distribution.Types.TestSuiteInterface Distribution.Types.TestType
146− Distribution.Types.UnitId Distribution.Types.UnqualComponentName
147− Distribution.Types.Version Distribution.Types.VersionInterval
148− Distribution.Types.VersionRange
149− Distribution.Types.VersionRange.Internal Distribution.Utils.Generic
150− Distribution.Utils.IOData Distribution.Utils.LogProgress
151− Distribution.Utils.MD5 Distribution.Utils.MapAccum
152− Distribution.Utils.NubList Distribution.Utils.Progress
153− Distribution.Utils.ShortText Distribution.Utils.Structured
154− Distribution.Verbosity Distribution.Verbosity.Internal
155− Distribution.Version Language.Haskell.Extension
157− Distribution.Backpack.PreExistingComponent
158− Distribution.Backpack.ReadyComponent Distribution.Backpack.MixLink
159− Distribution.Backpack.ModuleScope Distribution.Backpack.UnifyM
160− Distribution.Backpack.Id Distribution.Utils.UnionFind
161− Distribution.Utils.Base62 Distribution.Compat.Async
162− Distribution.Compat.CopyFile Distribution.Compat.GetShortPathName
163− Distribution.Compat.MonadFail Distribution.Compat.Prelude
164− Distribution.Compat.SnocList Distribution.GetOpt Distribution.Lex
165− Distribution.Utils.String Distribution.Simple.GHC.EnvironmentParser
166− Distribution.Simple.GHC.Internal Distribution.Simple.GHC.ImplInfo
167− Distribution.Simple.Utils.Json Paths_Cabal
170−dynamic-library-dirs:
172−hs-libraries: HSCabal-3.2.1.0
174− array-0.5.4.0 base-4.14.1.0 binary-0.8.8.0 bytestring-0.10.12.0
175− containers-0.6.2.1 deepseq-1.4.4.0 directory-1.3.6.0
176− filepath-1.4.2.1 mtl-2.2.2 parsec-3.1.14.0 pretty-1.1.3.6
177− process-1.6.9.0 text-1.2.4.1 time-1.9.3 transformers-0.5.6.2
187−license: BSD-3-Clause
188−maintainer: libraries@haskell.org
189−synopsis: Mutable and immutable arrays
191− In addition to providing the "Data.Array" module
192− <http://www.haskell.org/onlinereport/haskell2010/haskellch14.html as specified in the Haskell 2010 Language Report>,
193− this package also defines the classes 'IArray' of
194− immutable arrays and 'MArray' of arrays mutable within appropriate
195− monads, as well as some instances of these classes.
196−category: Data Structures
199− Data.Array Data.Array.Base Data.Array.IArray Data.Array.IO
200− Data.Array.IO.Internals Data.Array.IO.Safe Data.Array.MArray
201− Data.Array.MArray.Safe Data.Array.ST Data.Array.ST.Safe
202− Data.Array.Storable Data.Array.Storable.Internals
203− Data.Array.Storable.Safe Data.Array.Unboxed Data.Array.Unsafe
206−dynamic-library-dirs:
208−hs-libraries: HSarray-0.5.4.0
209−depends: base-4.14.1.0
218−license: BSD-3-Clause
219−maintainer: libraries@haskell.org
220−synopsis: Basic libraries
222− This package contains the Standard Haskell "Prelude" and its support libraries,
223− and a large collection of useful libraries ranging from data
224− structures to parsing combinators and debugging utilities.
228− Control.Applicative Control.Arrow Control.Category
229− Control.Concurrent Control.Concurrent.Chan Control.Concurrent.MVar
230− Control.Concurrent.QSem Control.Concurrent.QSemN Control.Exception
231− Control.Exception.Base Control.Monad Control.Monad.Fail
232− Control.Monad.Fix Control.Monad.IO.Class Control.Monad.Instances
233− Control.Monad.ST Control.Monad.ST.Lazy Control.Monad.ST.Lazy.Safe
234− Control.Monad.ST.Lazy.Unsafe Control.Monad.ST.Safe
235− Control.Monad.ST.Strict Control.Monad.ST.Unsafe Control.Monad.Zip
236− Data.Bifoldable Data.Bifunctor Data.Bitraversable Data.Bits
237− Data.Bool Data.Char Data.Coerce Data.Complex Data.Data Data.Dynamic
238− Data.Either Data.Eq Data.Fixed Data.Foldable Data.Function
239− Data.Functor Data.Functor.Classes Data.Functor.Compose
240− Data.Functor.Const Data.Functor.Contravariant Data.Functor.Identity
241− Data.Functor.Product Data.Functor.Sum Data.IORef Data.Int Data.Ix
242− Data.Kind Data.List Data.List.NonEmpty Data.Maybe Data.Monoid
243− Data.Ord Data.Proxy Data.Ratio Data.STRef Data.STRef.Lazy
244− Data.STRef.Strict Data.Semigroup Data.String Data.Traversable
245− Data.Tuple Data.Type.Bool Data.Type.Coercion Data.Type.Equality
246− Data.Typeable Data.Unique Data.Version Data.Void Data.Word
247− Debug.Trace Foreign Foreign.C Foreign.C.Error Foreign.C.String
248− Foreign.C.Types Foreign.Concurrent Foreign.ForeignPtr
249− Foreign.ForeignPtr.Safe Foreign.ForeignPtr.Unsafe Foreign.Marshal
250− Foreign.Marshal.Alloc Foreign.Marshal.Array Foreign.Marshal.Error
251− Foreign.Marshal.Pool Foreign.Marshal.Safe Foreign.Marshal.Unsafe
252− Foreign.Marshal.Utils Foreign.Ptr Foreign.Safe Foreign.StablePtr
253− Foreign.Storable GHC.Arr GHC.Base GHC.ByteOrder GHC.Char GHC.Clock
254− GHC.Conc GHC.Conc.IO GHC.Conc.Signal GHC.Conc.Sync
255− GHC.ConsoleHandler GHC.Constants GHC.Desugar GHC.Enum
256− GHC.Environment GHC.Err GHC.Event GHC.Exception GHC.Exception.Type
257− GHC.ExecutionStack GHC.ExecutionStack.Internal GHC.Exts
258− GHC.Fingerprint GHC.Fingerprint.Type GHC.Float
259− GHC.Float.ConversionUtils GHC.Float.RealFracMethods GHC.Foreign
260− GHC.ForeignPtr GHC.GHCi GHC.GHCi.Helpers GHC.Generics GHC.IO
261− GHC.IO.Buffer GHC.IO.BufferedIO GHC.IO.Device GHC.IO.Encoding
262− GHC.IO.Encoding.CodePage GHC.IO.Encoding.Failure
263− GHC.IO.Encoding.Iconv GHC.IO.Encoding.Latin1 GHC.IO.Encoding.Types
264− GHC.IO.Encoding.UTF16 GHC.IO.Encoding.UTF32 GHC.IO.Encoding.UTF8
265− GHC.IO.Exception GHC.IO.FD GHC.IO.Handle GHC.IO.Handle.FD
266− GHC.IO.Handle.Internals GHC.IO.Handle.Lock GHC.IO.Handle.Text
267− GHC.IO.Handle.Types GHC.IO.IOMode GHC.IO.Unsafe GHC.IOArray
268− GHC.IORef GHC.Int GHC.Ix GHC.List GHC.MVar GHC.Maybe GHC.Natural
269− GHC.Num GHC.OldList GHC.OverloadedLabels GHC.Pack GHC.Profiling
270− GHC.Ptr GHC.RTS.Flags GHC.Read GHC.Real GHC.Records
271− GHC.ResponseFile GHC.ST GHC.STRef GHC.Show GHC.Stable
272− GHC.StableName GHC.Stack GHC.Stack.CCS GHC.Stack.Types
273− GHC.StaticPtr GHC.Stats GHC.Storable GHC.TopHandler GHC.TypeLits
274− GHC.TypeNats GHC.Unicode GHC.Weak GHC.Word Numeric Numeric.Natural
275− Prelude System.CPUTime System.Console.GetOpt System.Environment
276− System.Environment.Blank System.Exit System.IO System.IO.Error
277− System.IO.Unsafe System.Info System.Mem System.Mem.StableName
278− System.Mem.Weak System.Posix.Internals System.Posix.Types
279− System.Timeout Text.ParserCombinators.ReadP
280− Text.ParserCombinators.ReadPrec Text.Printf Text.Read Text.Read.Lex
281− Text.Show Text.Show.Functions Type.Reflection
282− Type.Reflection.Unsafe Unsafe.Coerce
284− Control.Monad.ST.Imp Control.Monad.ST.Lazy.Imp Data.Functor.Utils
285− Data.OldList Data.Semigroup.Internal Data.Typeable.Internal
286− Foreign.ForeignPtr.Imp GHC.IO.Handle.Lock.Common
287− GHC.IO.Handle.Lock.Flock GHC.IO.Handle.Lock.LinuxOFD
288− GHC.IO.Handle.Lock.NoOp GHC.IO.Handle.Lock.Windows
289− GHC.StaticPtr.Internal System.Environment.ExecutablePath
290− System.CPUTime.Utils GHC.Event.Arr GHC.Event.Array
291− GHC.Event.Control GHC.Event.EPoll GHC.Event.IntTable
292− GHC.Event.Internal GHC.Event.KQueue GHC.Event.Manager GHC.Event.PSQ
293− GHC.Event.Poll GHC.Event.Thread GHC.Event.TimerManager
294− GHC.Event.Unique System.CPUTime.Posix.ClockGetTime
295− System.CPUTime.Posix.Times System.CPUTime.Posix.RUsage
296− System.CPUTime.Unsupported
299−dynamic-library-dirs:
301−hs-libraries: HSbase-4.14.1.0
304−depends: ghc-prim-0.6.1 integer-gmp-1.0.3.0 rts
313−license: BSD-3-Clause
314−maintainer: Lennart Kolmodin, Don Stewart <dons00@gmail.com>
315−author: Lennart Kolmodin <kolmodin@gmail.com>
316−stability: provisional
317−homepage: https://github.com/kolmodin/binary
319− Binary serialisation for Haskell values using lazy ByteStrings
321− Efficient, pure binary serialisation using lazy ByteStrings.
322− Haskell values may be encoded to and from binary formats,
323− written to disk as binary, or sent over the network.
324− The format used can be automatically generated, or
325− you can choose to implement a custom format if needed.
326− Serialisation speeds of over 1 G\/sec have been observed,
327− so this library should be suitable for high performance
329−category: Data, Parsing
332− Data.Binary Data.Binary.Builder Data.Binary.Get
333− Data.Binary.Get.Internal Data.Binary.Put
335− Data.Binary.Class Data.Binary.Internal Data.Binary.Generic
336− Data.Binary.FloatCast
339−dynamic-library-dirs:
341−hs-libraries: HSbinary-0.8.8.0
343− array-0.5.4.0 base-4.14.1.0 bytestring-0.10.12.0 containers-0.6.2.1
350−id: bytestring-0.10.12.0
351−key: bytestring-0.10.12.0
352−license: BSD-3-Clause
354− Copyright (c) Don Stewart 2005-2009,
355− (c) Duncan Coutts 2006-2015,
356− (c) David Roundy 2003-2005,
357− (c) Jasper Van der Jeugt 2010,
358− (c) Simon Meier 2010-2013.
359−maintainer: Duncan Coutts <duncan@community.haskell.org>
363−homepage: https://github.com/haskell/bytestring
365− Fast, compact, strict and lazy byte strings with a list interface
367− An efficient compact, immutable byte string type (both strict and lazy)
368− suitable for binary or 8-bit character data.
369− The 'ByteString' type represents sequences of bytes or 8-bit characters.
370− It is suitable for high performance use, both in terms of large data
371− quantities, or high speed requirements. The 'ByteString' functions follow
372− the same style as Haskell\'s ordinary lists, so it is easy to convert code
373− from using 'String' to 'ByteString'.
374− Two 'ByteString' variants are provided:
375− * Strict 'ByteString's keep the string as a single large array. This
376− makes them convenient for passing data between C and Haskell.
377− * Lazy 'ByteString's use a lazy list of strict chunks which makes it
378− suitable for I\/O streaming tasks.
379− The @Char8@ modules provide a character-based view of the same
380− underlying 'ByteString' types. This makes it convenient to handle mixed
381− binary and 8-bit character content (which is common in many file formats
382− and network protocols).
383− The 'Builder' module provides an efficient way to build up 'ByteString's
384− in an ad-hoc way by repeated concatenation. This is ideal for fast
385− serialisation or pretty printing.
386− There is also a 'ShortByteString' type which has a lower memory overhead
387− and can can be converted to or from a 'ByteString', but supports very few
388− other operations. It is suitable for keeping many short strings in memory.
389− 'ByteString's are not designed for Unicode. For Unicode strings you should
390− use the 'Text' type from the @text@ package.
391− These modules are intended to be imported qualified, to avoid name clashes
392− with "Prelude" functions, e.g.
393− > import qualified Data.ByteString as BS
397− Data.ByteString Data.ByteString.Builder
398− Data.ByteString.Builder.Extra Data.ByteString.Builder.Internal
399− Data.ByteString.Builder.Prim Data.ByteString.Builder.Prim.Internal
400− Data.ByteString.Char8 Data.ByteString.Internal Data.ByteString.Lazy
401− Data.ByteString.Lazy.Builder Data.ByteString.Lazy.Builder.ASCII
402− Data.ByteString.Lazy.Builder.Extras Data.ByteString.Lazy.Char8
403− Data.ByteString.Lazy.Internal Data.ByteString.Short
404− Data.ByteString.Short.Internal Data.ByteString.Unsafe
406− Data.ByteString.Builder.ASCII Data.ByteString.Builder.Prim.Binary
407− Data.ByteString.Builder.Prim.ASCII
408− Data.ByteString.Builder.Prim.Internal.Floating
409− Data.ByteString.Builder.Prim.Internal.UncheckedShifts
410− Data.ByteString.Builder.Prim.Internal.Base16
413−dynamic-library-dirs:
415−hs-libraries: HSbytestring-0.10.12.0
419− base-4.14.1.0 deepseq-1.4.4.0 ghc-prim-0.6.1 integer-gmp-1.0.3.0
426−id: containers-0.6.2.1
427−key: containers-0.6.2.1
428−license: BSD-3-Clause
429−maintainer: libraries@haskell.org
430−synopsis: Assorted concrete container types
432− This package contains efficient general-purpose implementations
433− of various immutable container types including sets, maps, sequences,
435− For a walkthrough of what this package provides with examples of common
436− operations see the [containers
437− introduction](https://haskell-containers.readthedocs.io).
438− The declared cost of each operation is either worst-case or amortized, but
439− remains valid even if structures are shared.
440−category: Data Structures
443− Data.Containers.ListUtils Data.Graph Data.IntMap
444− Data.IntMap.Internal Data.IntMap.Internal.Debug Data.IntMap.Lazy
445− Data.IntMap.Merge.Lazy Data.IntMap.Merge.Strict Data.IntMap.Strict
446− Data.IntMap.Strict.Internal Data.IntSet Data.IntSet.Internal
447− Data.Map Data.Map.Internal Data.Map.Internal.Debug Data.Map.Lazy
448− Data.Map.Merge.Lazy Data.Map.Merge.Strict Data.Map.Strict
449− Data.Map.Strict.Internal Data.Sequence Data.Sequence.Internal
450− Data.Sequence.Internal.Sorting Data.Set Data.Set.Internal Data.Tree
451− Utils.Containers.Internal.BitQueue
452− Utils.Containers.Internal.BitUtil
453− Utils.Containers.Internal.StrictPair
455− Utils.Containers.Internal.State
456− Utils.Containers.Internal.StrictMaybe
457− Utils.Containers.Internal.PtrEquality
458− Utils.Containers.Internal.Coercions
459− Utils.Containers.Internal.TypeError
460− Data.Map.Internal.DeprecatedShowTree
461− Data.IntMap.Internal.DeprecatedDebug
464−dynamic-library-dirs:
466−hs-libraries: HScontainers-0.6.2.1
467−depends: array-0.5.4.0 base-4.14.1.0 deepseq-1.4.4.0
476−license: BSD-3-Clause
477−maintainer: libraries@haskell.org
478−synopsis: Deep evaluation of data structures
480− This package provides methods for fully evaluating data structures
481− (\"deep evaluation\"). Deep evaluation is often used for adding
482− strictness to a program, e.g. in order to force pending exceptions,
483− remove space leaks, or force lazy I/O to happen. It is also useful
484− in parallel programs, to ensure pending work does not migrate to the
486− The primary use of this package is via the 'deepseq' function, a
487− \"deep\" version of 'seq'. It is implemented on top of an 'NFData'
488− typeclass (\"Normal Form Data\", data structures with no unevaluated
489− components) which defines strategies for fully evaluating different
490− data types. See module documentation in "Control.DeepSeq" for more
494−exposed-modules: Control.DeepSeq
495−hidden-modules: Control.DeepSeq.BackDoor
498−dynamic-library-dirs:
500−hs-libraries: HSdeepseq-1.4.4.0
501−depends: array-0.5.4.0 base-4.14.1.0
508−id: directory-1.3.6.0
509−key: directory-1.3.6.0
510−license: BSD-3-Clause
511−maintainer: libraries@haskell.org
512−synopsis: Platform-agnostic library for filesystem operations
514− This library provides a basic set of operations for manipulating files and
515− directories in a portable way.
519− System.Directory System.Directory.Internal
520− System.Directory.Internal.Prelude
522− System.Directory.Internal.C_utimensat
523− System.Directory.Internal.Common System.Directory.Internal.Config
524− System.Directory.Internal.Posix System.Directory.Internal.Windows
527−dynamic-library-dirs:
529−hs-libraries: HSdirectory-1.3.6.0
531− base-4.14.1.0 filepath-1.4.2.1 time-1.9.3 unix-2.7.2.2
538−id: exceptions-0.10.4
539−key: exceptions-0.10.4
540−license: BSD-3-Clause
542− Copyright (C) 2013-2015 Edward A. Kmett
543− Copyright (C) 2012 Google Inc.
544−maintainer: Edward A. Kmett <ekmett@gmail.com>
545−author: Edward A. Kmett
546−stability: provisional
547−homepage: http://github.com/ekmett/exceptions/
548−synopsis: Extensible optionally-pure exceptions
549−description: Extensible optionally-pure exceptions.
550−category: Control, Exceptions, Monad
552−exposed-modules: Control.Monad.Catch Control.Monad.Catch.Pure
555−dynamic-library-dirs:
557−hs-libraries: HSexceptions-0.10.4
559− base-4.14.1.0 mtl-2.2.2 stm-2.5.0.0 template-haskell-2.16.0.0
560− transformers-0.5.6.2
568−key: filepath-1.4.2.1
569−license: BSD-3-Clause
570−copyright: Neil Mitchell 2005-2018
571−maintainer: Neil Mitchell <ndmitchell@gmail.com>
572−author: Neil Mitchell <ndmitchell@gmail.com>
573−homepage: https://github.com/haskell/filepath#readme
574−synopsis: Library for manipulating FilePaths in a cross platform way.
576− This package provides functionality for manipulating @FilePath@ values, and is shipped with both <https://www.haskell.org/ghc/ GHC> and the <https://www.haskell.org/platform/ Haskell Platform>. It provides three modules:
577− * "System.FilePath.Posix" manipulates POSIX\/Linux style @FilePath@ values (with @\/@ as the path separator).
578− * "System.FilePath.Windows" manipulates Windows style @FilePath@ values (with either @\\@ or @\/@ as the path separator, and deals with drives).
579− * "System.FilePath" is an alias for the module appropriate to your platform.
580− All three modules provide the same API, and the same documentation (calling out differences in the different variants).
584− System.FilePath System.FilePath.Posix System.FilePath.Windows
587−dynamic-library-dirs:
589−hs-libraries: HSfilepath-1.4.2.1
590−depends: base-4.14.1.0
599−license: BSD-3-Clause
600−maintainer: ghc-devs@haskell.org
601−synopsis: Shared functionality between GHC and its boot libraries
603− This library is shared between GHC, ghc-pkg, and other boot
605− A note about "GHC.PackageDb": it only deals with the subset of
606− the package database that the compiler cares about: modules
607− paths etc and not package metadata like description, authors
608− etc. It is thus not a library interface to ghc-pkg and is *not*
609− suitable for modifying GHC package databases.
610− The package database format and this library are constructed in
611− such a way that while ghc-pkg depends on Cabal, the GHC library
612− and program do not have to depend on Cabal.
616− GHC.BaseDir GHC.ForeignSrcLang GHC.HandleEncoding
617− GHC.LanguageExtensions GHC.PackageDb GHC.Platform GHC.Platform.Host
618− GHC.Serialized GHC.Settings GHC.UniqueSubdir GHC.Version
621−dynamic-library-dirs:
623−hs-libraries: HSghc-boot-8.10.3
625− base-4.14.1.0 binary-0.8.8.0 bytestring-0.10.12.0
626− containers-0.6.2.1 directory-1.3.6.0 filepath-1.4.2.1
634−id: ghc-boot-th-8.10.3
635−key: ghc-boot-th-8.10.3
636−license: BSD-3-Clause
637−maintainer: ghc-devs@haskell.org
639− Shared functionality between GHC and the @template-haskell@
642− This library contains various bits shared between the @ghc@ and
643− @template-haskell@ libraries.
644− This package exists to ensure that @template-haskell@ has a
645− minimal set of transitive dependencies, since it is intended to
646− be depended upon by user code.
650− GHC.ForeignSrcLang.Type GHC.LanguageExtensions.Type GHC.Lexeme
653−dynamic-library-dirs:
655−hs-libraries: HSghc-boot-th-8.10.3
656−depends: base-4.14.1.0
663−id: ghc-compact-0.1.0.0
664−key: ghc-compact-0.1.0.0
665−license: BSD-3-Clause
666−maintainer: libraries@haskell.org
667−synopsis: In memory storage of deeply evaluated data structure
669− This package provides minimal functionality for working with
670− "compact regions", which hold a fully evaluated Haskell object graph.
671− These regions maintain the invariant that no pointers live inside the struct
672− that point outside it, which ensures efficient garbage collection without
673− ever reading the structure contents (effectively, it works as a manually
674− managed "oldest generation" which is never freed until the whole is
676− Internally, the struct is stored a single contiguous block of memory,
677− which allows efficient serialization and deserialization of structs
678− for distributed computing.
681−exposed-modules: GHC.Compact GHC.Compact.Serialized
684−dynamic-library-dirs:
686−hs-libraries: HSghc-compact-0.1.0.0
687−depends: base-4.14.1.0 bytestring-0.10.12.0 ghc-prim-0.6.1
696−license: BSD-3-Clause
697−maintainer: libraries@haskell.org
698−synopsis: Functions for walking GHC's heap
700− This package provides functions for walking the GHC heap data structures
701− and retrieving information about those data structures.
705− GHC.Exts.Heap GHC.Exts.Heap.ClosureTypes GHC.Exts.Heap.Closures
706− GHC.Exts.Heap.Constants GHC.Exts.Heap.InfoTable
707− GHC.Exts.Heap.InfoTable.Types GHC.Exts.Heap.InfoTableProf
711−dynamic-library-dirs:
713−hs-libraries: HSghc-heap-8.10.3
714−depends: base-4.14.1.0 ghc-prim-0.6.1 rts
723−license: BSD-3-Clause
724−maintainer: libraries@haskell.org
725−synopsis: GHC primitives
727− This package contains the primitive types and operations supplied by GHC.
731− GHC.CString GHC.Classes GHC.Debug GHC.IntWord64 GHC.Magic
732− GHC.Prim.Ext GHC.PrimopWrappers GHC.Tuple GHC.Types GHC.Prim
735−dynamic-library-dirs:
737−hs-libraries: HSghc-prim-0.6.1
738−extra-libraries: gcc c m
748−license: BSD-3-Clause
749−maintainer: ghc-devs@haskell.org
750−synopsis: The library supporting GHC's interactive interpreter
752− This library offers interfaces which mediate interactions between the
753− @ghci@ interactive shell and @iserv@, GHC's out-of-process interpreter
758− GHCi.BinaryArray GHCi.BreakArray GHCi.CreateBCO GHCi.FFI
759− GHCi.InfoTable GHCi.Message GHCi.ObjLink GHCi.RemoteTypes
760− GHCi.ResolvedBCO GHCi.Run GHCi.Signals GHCi.StaticPtrTable GHCi.TH
761− GHCi.TH.Binary SizedSeq
764−dynamic-library-dirs:
766−hs-libraries: HSghci-8.10.3
769− array-0.5.4.0 base-4.14.1.0 binary-0.8.8.0 bytestring-0.10.12.0
770− containers-0.6.2.1 deepseq-1.4.4.0 filepath-1.4.2.1 ghc-boot-8.10.3
771− ghc-boot-th-8.10.3 ghc-heap-8.10.3 template-haskell-2.16.0.0
772− transformers-0.5.6.2 unix-2.7.2.2
779−id: haskeline-0.8.0.1
780−key: haskeline-0.8.0.1
781−license: BSD-3-Clause
782−copyright: (c) Judah Jacobson
783−maintainer: Judah Jacobson <judah.jacobson@gmail.com>
784−author: Judah Jacobson
786−homepage: https://github.com/judah/haskeline
788− A command-line interface for user input, written in Haskell.
790− Haskeline provides a user interface for line input in command-line
791− programs. This library is similar in purpose to readline, but since
792− it is written in Haskell it is (hopefully) more easily used in other
794− Haskeline runs both on POSIX-compatible systems and on Windows.
795−category: User Interfaces
798− System.Console.Haskeline System.Console.Haskeline.Completion
799− System.Console.Haskeline.History System.Console.Haskeline.IO
800− System.Console.Haskeline.Internal
802− System.Console.Haskeline.Backend
803− System.Console.Haskeline.Backend.WCWidth
804− System.Console.Haskeline.Command
805− System.Console.Haskeline.Command.Completion
806− System.Console.Haskeline.Command.History
807− System.Console.Haskeline.Command.KillRing
808− System.Console.Haskeline.Directory System.Console.Haskeline.Emacs
809− System.Console.Haskeline.InputT System.Console.Haskeline.Key
810− System.Console.Haskeline.LineState System.Console.Haskeline.Monads
811− System.Console.Haskeline.Prefs System.Console.Haskeline.Recover
812− System.Console.Haskeline.RunCommand System.Console.Haskeline.Term
813− System.Console.Haskeline.Command.Undo System.Console.Haskeline.Vi
814− System.Console.Haskeline.Backend.Posix
815− System.Console.Haskeline.Backend.Posix.Encoder
816− System.Console.Haskeline.Backend.DumbTerm
819−dynamic-library-dirs:
821−hs-libraries: HShaskeline-0.8.0.1
823− base-4.14.1.0 bytestring-0.10.12.0 containers-0.6.2.1
824− directory-1.3.6.0 exceptions-0.10.4 filepath-1.4.2.1
825− process-1.6.9.0 stm-2.5.0.0 transformers-0.5.6.2 unix-2.7.2.2
834−license: BSD-3-Clause
835−maintainer: ghc-devs@haskell.org
837−synopsis: Code Coverage Library for Haskell
839− This package provides the code coverage library for Haskell.
840− See <http://www.haskell.org/haskellwiki/Haskell_program_coverage> for more
845− Trace.Hpc.Mix Trace.Hpc.Reflect Trace.Hpc.Tix Trace.Hpc.Util
848−dynamic-library-dirs:
850−hs-libraries: HShpc-0.6.1.0
852− base-4.14.1.0 containers-0.6.2.1 deepseq-1.4.4.0 directory-1.3.6.0
853− filepath-1.4.2.1 time-1.9.3
860−id: integer-gmp-1.0.3.0
861−key: integer-gmp-1.0.3.0
862−license: BSD-3-Clause
863−maintainer: hvr@gnu.org
864−author: Herbert Valerio Riedel
865−synopsis: Integer library based on GMP
867− This package provides the low-level implementation of the standard
868− 'Integer' type based on the
869− <http://gmplib.org/ GNU Multiple Precision Arithmetic Library (GMP)>.
870− This package provides access to the internal representation of
871− 'Integer' as well as primitive operations with no proper error
872− handling, and should only be used directly with the utmost care.
873−category: Numeric, Algebra
876− GHC.Integer GHC.Integer.GMP.Internals GHC.Integer.Logarithms
877− GHC.Integer.Logarithms.Internals
878−hidden-modules: GHC.Integer.Type
881−dynamic-library-dirs:
883−hs-libraries: HSinteger-gmp-1.0.3.0
886−depends: ghc-prim-0.6.1
895−license: BSD-3-Clause
899−synopsis: Provides shared functionality between iserv and iserv-proxy
900−category: Development
902−exposed-modules: GHCi.Utils Lib
905−dynamic-library-dirs:
907−hs-libraries: HSlibiserv-8.10.3
909− base-4.14.1.0 binary-0.8.8.0 bytestring-0.10.12.0
910− containers-0.6.2.1 deepseq-1.4.4.0 ghci-8.10.3 unix-2.7.2.2
919−license: BSD-3-Clause
920−maintainer: Edward Kmett <ekmett@gmail.com>
922−homepage: http://github.com/haskell/mtl
923−synopsis: Monad classes, using functional dependencies
925− Monad classes using functional dependencies, with instances
926− for various monad transformers, inspired by the paper
927− /Functional Programming with Overloading and Higher-Order Polymorphism/,
928− by Mark P Jones, in /Advanced School of Functional Programming/, 1995
929− (<http://web.cecs.pdx.edu/~mpj/pubs/springschool.html>).
933− Control.Monad.Cont Control.Monad.Cont.Class Control.Monad.Error
934− Control.Monad.Error.Class Control.Monad.Except
935− Control.Monad.Identity Control.Monad.List Control.Monad.RWS
936− Control.Monad.RWS.Class Control.Monad.RWS.Lazy
937− Control.Monad.RWS.Strict Control.Monad.Reader
938− Control.Monad.Reader.Class Control.Monad.State
939− Control.Monad.State.Class Control.Monad.State.Lazy
940− Control.Monad.State.Strict Control.Monad.Trans Control.Monad.Writer
941− Control.Monad.Writer.Class Control.Monad.Writer.Lazy
942− Control.Monad.Writer.Strict
945−dynamic-library-dirs:
947−hs-libraries: HSmtl-2.2.2
948−depends: base-4.14.1.0 transformers-0.5.6.2
957−license: BSD-3-Clause
958−maintainer: Herbert Valerio Riedel <hvr@gnu.org>
960− Daan Leijen <daan@microsoft.com>, Paolo Martini <paolo@nemail.it>, Antoine Latter <aslatter@gmail.com>
961−homepage: https://github.com/haskell/parsec
962−synopsis: Monadic parser combinators
964− Parsec is designed from scratch as an industrial-strength parser
965− library. It is simple, safe, well documented (on the package
966− homepage), has extensive libraries, good error messages,
967− and is fast. It is defined as a monad transformer that can be
968− stacked on arbitrary monads, and it is also parametric in the
970− The main entry point is the "Text.Parsec" module which provides
971− defaults for parsing 'Char'acter data.
972− The "Text.ParserCombinators.Parsec" module hierarchy contains
973− the legacy @parsec-2@ API and may be removed at some point in
978− Text.Parsec Text.Parsec.ByteString Text.Parsec.ByteString.Lazy
979− Text.Parsec.Char Text.Parsec.Combinator Text.Parsec.Error
980− Text.Parsec.Expr Text.Parsec.Language Text.Parsec.Perm
981− Text.Parsec.Pos Text.Parsec.Prim Text.Parsec.String
982− Text.Parsec.Text Text.Parsec.Text.Lazy Text.Parsec.Token
983− Text.ParserCombinators.Parsec Text.ParserCombinators.Parsec.Char
984− Text.ParserCombinators.Parsec.Combinator
985− Text.ParserCombinators.Parsec.Error
986− Text.ParserCombinators.Parsec.Expr
987− Text.ParserCombinators.Parsec.Language
988− Text.ParserCombinators.Parsec.Perm
989− Text.ParserCombinators.Parsec.Pos
990− Text.ParserCombinators.Parsec.Prim
991− Text.ParserCombinators.Parsec.Token
994−dynamic-library-dirs:
996−hs-libraries: HSparsec-3.1.14.0
998− base-4.14.1.0 bytestring-0.10.12.0 mtl-2.2.2 text-1.2.4.1
1007−license: BSD-3-Clause
1008−maintainer: David Terei <code@davidterei.com>
1010−homepage: http://github.com/haskell/pretty
1011−synopsis: Pretty-printing library
1013− This package contains a pretty-printing library, a set of API's
1014− that provides a way to easily print out text in a consistent
1015− format of your choosing. This is useful for compilers and related
1017− This library was originally designed by John Hughes's and has since
1018− been heavily modified by Simon Peyton Jones.
1022− Text.PrettyPrint Text.PrettyPrint.Annotated
1023− Text.PrettyPrint.Annotated.HughesPJ
1024− Text.PrettyPrint.Annotated.HughesPJClass Text.PrettyPrint.HughesPJ
1025− Text.PrettyPrint.HughesPJClass
1028−dynamic-library-dirs:
1030−hs-libraries: HSpretty-1.1.3.6
1031−depends: base-4.14.1.0 deepseq-1.4.4.0 ghc-prim-0.6.1
1039−key: process-1.6.9.0
1040−license: BSD-3-Clause
1041−maintainer: libraries@haskell.org
1042−synopsis: Process libraries
1044− This package contains libraries for dealing with system processes.
1045− The typed-process package is a more recent take on a process API,
1046− which uses this package internally. It features better binary
1047− support, easier concurrency, and a more composable API. You can
1048− read more about it at
1049− <https://github.com/fpco/typed-process/#readme>.
1052−exposed-modules: System.Cmd System.Process System.Process.Internals
1053−hidden-modules: System.Process.Common System.Process.Posix
1056−dynamic-library-dirs:
1058−hs-libraries: HSprocess-1.6.9.0
1060−includes: runProcess.h
1062− base-4.14.1.0 deepseq-1.4.4.0 directory-1.3.6.0 filepath-1.4.2.1
1072−license: BSD-3-Clause
1073−maintainer: libraries@haskell.org
1074−homepage: https://wiki.haskell.org/Software_transactional_memory
1075−synopsis: Software Transactional Memory
1077− Software Transactional Memory, or STM, is an abstraction for
1078− concurrent communication. The main benefits of STM are
1079− /composability/ and /modularity/. That is, using STM you can write
1080− concurrent abstractions that can be easily composed with any other
1081− abstraction built using STM, without exposing the details of how
1082− your abstraction ensures safety. This is typically not the case
1083− with other forms of concurrent communication, such as locks or
1085−category: Concurrency
1088− Control.Concurrent.STM Control.Concurrent.STM.TArray
1089− Control.Concurrent.STM.TBQueue Control.Concurrent.STM.TChan
1090− Control.Concurrent.STM.TMVar Control.Concurrent.STM.TQueue
1091− Control.Concurrent.STM.TSem Control.Concurrent.STM.TVar
1093−hidden-modules: Control.Sequential.STM
1096−dynamic-library-dirs:
1098−hs-libraries: HSstm-2.5.0.0
1099−depends: array-0.5.4.0 base-4.14.1.0
1103−name: template-haskell
1106−id: template-haskell-2.16.0.0
1107−key: template-haskell-2.16.0.0
1108−license: BSD-3-Clause
1109−maintainer: libraries@haskell.org
1110−synopsis: Support library for Template Haskell
1112− This package provides modules containing facilities for manipulating
1113− Haskell source code using Template Haskell.
1114− See <http://www.haskell.org/haskellwiki/Template_Haskell> for more
1116−category: Template Haskell
1119− Language.Haskell.TH Language.Haskell.TH.LanguageExtensions
1120− Language.Haskell.TH.Lib Language.Haskell.TH.Lib.Internal
1121− Language.Haskell.TH.Ppr Language.Haskell.TH.PprLib
1122− Language.Haskell.TH.Quote Language.Haskell.TH.Syntax
1123−hidden-modules: Language.Haskell.TH.Lib.Map
1126−dynamic-library-dirs:
1128−hs-libraries: HStemplate-haskell-2.16.0.0
1130− base-4.14.1.0 ghc-boot-th-8.10.3 ghc-prim-0.6.1 pretty-1.1.3.6
1139−license: BSD-2-Clause
1140−copyright: 2009-2011 Bryan O'Sullivan, 2008-2009 Tom Harper
1142− Bryan O'Sullivan <bos@serpentine.com>, Herbert Valerio Riedel <hvr@gnu.org>
1143−author: Bryan O'Sullivan <bos@serpentine.com>
1144−homepage: https://github.com/haskell/text
1145−synopsis: An efficient packed Unicode text type.
1147− An efficient packed, immutable Unicode text type (both strict and
1148− lazy), with a powerful loop fusion optimization framework.
1149− The 'Text' type represents Unicode character strings, in a time and
1150− space-efficient manner. This package provides text processing
1151− capabilities that are optimized for performance critical use, both
1152− in terms of large data quantities and high speed.
1153− The 'Text' type provides character-encoding, type-safe case
1154− conversion via whole-string case conversion functions (see "Data.Text").
1155− It also provides a range of functions for converting 'Text' values to
1156− and from 'ByteStrings', using several standard encodings
1157− (see "Data.Text.Encoding").
1158− Efficient locale-sensitive support for text IO is also supported
1159− (see "Data.Text.IO").
1160− These modules are intended to be imported qualified, to avoid name
1161− clashes with Prelude functions, e.g.
1162− > import qualified Data.Text as T
1164− To use an extended and very rich family of functions for working
1165− with Unicode text (including normalization, regular expressions,
1166− non-standard encodings, text breaking, and locales), see
1167− the [text-icu package](https://hackage.haskell.org/package/text-icu)
1168− based on the well-respected and liberally
1169− licensed [ICU library](http://site.icu-project.org/).
1170− == Internal Representation: UTF-16 vs. UTF-8
1171− Currently the @text@ library uses UTF-16 as its internal representation
1172− which is [neither a fixed-width nor always the most dense representation](http://utf8everywhere.org/)
1173− for Unicode text. We're currently investigating the feasibility
1174− of [changing Text's internal representation to UTF-8](https://github.com/text-utf8)
1175− and if you need such a 'Text' type right now you might be interested in using the spin-off
1176− packages <https://hackage.haskell.org/package/text-utf8 text-utf8> and
1177− <https://hackage.haskell.org/package/text-short text-short>.
1178−category: Data, Text
1181− Data.Text Data.Text.Array Data.Text.Encoding
1182− Data.Text.Encoding.Error Data.Text.Foreign Data.Text.IO
1183− Data.Text.Internal Data.Text.Internal.Builder
1184− Data.Text.Internal.Builder.Functions
1185− Data.Text.Internal.Builder.Int.Digits
1186− Data.Text.Internal.Builder.RealFloat.Functions
1187− Data.Text.Internal.ByteStringCompat
1188− Data.Text.Internal.Encoding.Fusion
1189− Data.Text.Internal.Encoding.Fusion.Common
1190− Data.Text.Internal.Encoding.Utf16 Data.Text.Internal.Encoding.Utf32
1191− Data.Text.Internal.Encoding.Utf8 Data.Text.Internal.Functions
1192− Data.Text.Internal.Fusion Data.Text.Internal.Fusion.CaseMapping
1193− Data.Text.Internal.Fusion.Common Data.Text.Internal.Fusion.Size
1194− Data.Text.Internal.Fusion.Types Data.Text.Internal.IO
1195− Data.Text.Internal.Lazy Data.Text.Internal.Lazy.Encoding.Fusion
1196− Data.Text.Internal.Lazy.Fusion Data.Text.Internal.Lazy.Search
1197− Data.Text.Internal.Private Data.Text.Internal.Read
1198− Data.Text.Internal.Search Data.Text.Internal.Unsafe
1199− Data.Text.Internal.Unsafe.Char Data.Text.Internal.Unsafe.Shift
1200− Data.Text.Lazy Data.Text.Lazy.Builder Data.Text.Lazy.Builder.Int
1201− Data.Text.Lazy.Builder.RealFloat Data.Text.Lazy.Encoding
1202− Data.Text.Lazy.IO Data.Text.Lazy.Internal Data.Text.Lazy.Read
1203− Data.Text.Read Data.Text.Unsafe
1204−hidden-modules: Data.Text.Show
1207−dynamic-library-dirs:
1209−hs-libraries: HStext-1.2.4.1
1211− array-0.5.4.0 base-4.14.1.0 binary-0.8.8.0 bytestring-0.10.12.0
1212− deepseq-1.4.4.0 ghc-prim-0.6.1 integer-gmp-1.0.3.0
1213− template-haskell-2.16.0.0
1222−license: BSD-3-Clause
1223−maintainer: <ashley@semantic.org>
1224−author: Ashley Yakeley
1226−homepage: https://github.com/haskell/time
1227−synopsis: A time library
1228−description: Time, clocks and calendars
1232− Data.Time Data.Time.Calendar Data.Time.Calendar.Easter
1233− Data.Time.Calendar.Julian Data.Time.Calendar.MonthDay
1234− Data.Time.Calendar.OrdinalDate Data.Time.Calendar.WeekDate
1235− Data.Time.Clock Data.Time.Clock.POSIX Data.Time.Clock.System
1236− Data.Time.Clock.TAI Data.Time.Format Data.Time.Format.ISO8601
1237− Data.Time.Format.Internal Data.Time.LocalTime
1239− Data.Format Data.Time.Calendar.Private Data.Time.Calendar.Days
1240− Data.Time.Calendar.Gregorian Data.Time.Calendar.CalendarDiffDays
1241− Data.Time.Calendar.Week Data.Time.Calendar.JulianYearDay
1242− Data.Time.Clock.Internal.DiffTime
1243− Data.Time.Clock.Internal.AbsoluteTime
1244− Data.Time.Clock.Internal.NominalDiffTime
1245− Data.Time.Clock.Internal.POSIXTime
1246− Data.Time.Clock.Internal.UniversalTime
1247− Data.Time.Clock.Internal.SystemTime
1248− Data.Time.Clock.Internal.UTCTime Data.Time.Clock.Internal.CTimeval
1249− Data.Time.Clock.Internal.CTimespec Data.Time.Clock.Internal.UTCDiff
1250− Data.Time.LocalTime.Internal.TimeZone
1251− Data.Time.LocalTime.Internal.TimeOfDay
1252− Data.Time.LocalTime.Internal.CalendarDiffTime
1253− Data.Time.LocalTime.Internal.LocalTime
1254− Data.Time.LocalTime.Internal.ZonedTime Data.Time.Format.Parse
1255− Data.Time.Format.Locale Data.Time.Format.Format.Class
1256− Data.Time.Format.Format.Instances Data.Time.Format.Parse.Class
1257− Data.Time.Format.Parse.Instances
1260−dynamic-library-dirs:
1262−hs-libraries: HStime-1.9.3
1264−depends: base-4.14.1.0 deepseq-1.4.4.0
1271−id: transformers-0.5.6.2
1272−key: transformers-0.5.6.2
1273−license: BSD-3-Clause
1274−maintainer: Ross Paterson <R.Paterson@city.ac.uk>
1275−author: Andy Gill, Ross Paterson
1276−synopsis: Concrete functor and monad transformers
1278− A portable library of functor and monad transformers, inspired by
1280− * \"Functional Programming with Overloading and Higher-Order
1281− Polymorphism\", by Mark P Jones,
1282− in /Advanced School of Functional Programming/, 1995
1283− (<http://web.cecs.pdx.edu/~mpj/pubs/springschool.html>).
1284− This package contains:
1285− * the monad transformer class (in "Control.Monad.Trans.Class")
1286− * concrete functor and monad transformers, each with associated
1287− operations and functions to lift operations associated with other
1289− The package can be used on its own in portable Haskell code, in
1290− which case operations need to be manually lifted through transformer
1291− stacks (see "Control.Monad.Trans.Class" for some examples).
1292− Alternatively, it can be used with the non-portable monad classes in
1293− the @mtl@ or @monads-tf@ packages, which automatically lift operations
1294− introduced by monad transformers through other transformers.
1298− Control.Applicative.Backwards Control.Applicative.Lift
1299− Control.Monad.Signatures Control.Monad.Trans.Accum
1300− Control.Monad.Trans.Class Control.Monad.Trans.Cont
1301− Control.Monad.Trans.Error Control.Monad.Trans.Except
1302− Control.Monad.Trans.Identity Control.Monad.Trans.List
1303− Control.Monad.Trans.Maybe Control.Monad.Trans.RWS
1304− Control.Monad.Trans.RWS.CPS Control.Monad.Trans.RWS.Lazy
1305− Control.Monad.Trans.RWS.Strict Control.Monad.Trans.Reader
1306− Control.Monad.Trans.Select Control.Monad.Trans.State
1307− Control.Monad.Trans.State.Lazy Control.Monad.Trans.State.Strict
1308− Control.Monad.Trans.Writer Control.Monad.Trans.Writer.CPS
1309− Control.Monad.Trans.Writer.Lazy Control.Monad.Trans.Writer.Strict
1310− Data.Functor.Constant Data.Functor.Reverse
1313−dynamic-library-dirs:
1315−hs-libraries: HStransformers-0.5.6.2
1316−depends: base-4.14.1.0
1325−license: BSD-3-Clause
1326−maintainer: libraries@haskell.org
1327−homepage: https://github.com/haskell/unix
1328−synopsis: POSIX functionality
1330− This package gives you access to the set of operating system
1331− services standardised by
1332− <http://pubs.opengroup.org/onlinepubs/9699919799/ POSIX.1-2008>
1333− (or the IEEE Portable Operating System Interface for Computing
1334− Environments - IEEE Std. 1003.1).
1335− The package is not supported under Windows.
1339− System.Posix System.Posix.ByteString
1340− System.Posix.ByteString.FilePath System.Posix.Directory
1341− System.Posix.Directory.ByteString System.Posix.DynamicLinker
1342− System.Posix.DynamicLinker.ByteString
1343− System.Posix.DynamicLinker.Module
1344− System.Posix.DynamicLinker.Module.ByteString
1345− System.Posix.DynamicLinker.Prim System.Posix.Env
1346− System.Posix.Env.ByteString System.Posix.Error System.Posix.Fcntl
1347− System.Posix.Files System.Posix.Files.ByteString System.Posix.IO
1348− System.Posix.IO.ByteString System.Posix.Process
1349− System.Posix.Process.ByteString System.Posix.Process.Internals
1350− System.Posix.Resource System.Posix.Semaphore System.Posix.SharedMem
1351− System.Posix.Signals System.Posix.Signals.Exts System.Posix.Temp
1352− System.Posix.Temp.ByteString System.Posix.Terminal
1353− System.Posix.Terminal.ByteString System.Posix.Time
1354− System.Posix.Unistd System.Posix.User
1356− System.Posix.Directory.Common System.Posix.DynamicLinker.Common
1357− System.Posix.Files.Common System.Posix.IO.Common
1358− System.Posix.Process.Common System.Posix.Terminal.Common
1361−dynamic-library-dirs:
1363−hs-libraries: HSunix-2.7.2.2
1364−extra-libraries: rt util dl pthread
1366−includes: HsUnix.h execvpe.h
1367−depends: base-4.14.1.0 bytestring-0.10.12.0 time-1.9.3
1376−license: BSD-3-Clause
1377−maintainer: glasgow-haskell-users@haskell.org
1381−extra-libraries: m rt dl ffi numa pthread
1385− "-Wl,-u,base_GHCziTopHandler_runIO_closure"
1386− "-Wl,-u,base_GHCziTopHandler_runNonIO_closure"
1387− "-Wl,-u,ghczmprim_GHCziTuple_Z0T_closure"
1388− "-Wl,-u,ghczmprim_GHCziTypes_True_closure"
1389− "-Wl,-u,ghczmprim_GHCziTypes_False_closure"
1390− "-Wl,-u,base_GHCziPack_unpackCString_closure"
1391− "-Wl,-u,base_GHCziWeak_runFinalizzerBatch_closure"
1392− "-Wl,-u,base_GHCziIOziException_stackOverflow_closure"
1393− "-Wl,-u,base_GHCziIOziException_heapOverflow_closure"
1394− "-Wl,-u,base_GHCziIOziException_allocationLimitExceeded_closure"
1395− "-Wl,-u,base_GHCziIOziException_blockedIndefinitelyOnMVar_closure"
1396− "-Wl,-u,base_GHCziIOziException_blockedIndefinitelyOnSTM_closure"
1397− "-Wl,-u,base_GHCziIOziException_cannotCompactFunction_closure"
1398− "-Wl,-u,base_GHCziIOziException_cannotCompactPinned_closure"
1399− "-Wl,-u,base_GHCziIOziException_cannotCompactMutable_closure"
1400− "-Wl,-u,base_ControlziExceptionziBase_absentSumFieldError_closure"
1401− "-Wl,-u,base_ControlziExceptionziBase_nonTermination_closure"
1402− "-Wl,-u,base_ControlziExceptionziBase_nestedAtomically_closure"
1403− "-Wl,-u,base_GHCziEventziThread_blockedOnBadFD_closure"
1404− "-Wl,-u,base_GHCziConcziSync_runSparks_closure"
1405− "-Wl,-u,base_GHCziConcziIO_ensureIOManagerIsRunning_closure"
1406− "-Wl,-u,base_GHCziConcziIO_ioManagerCapabilitiesChanged_closure"
1407− "-Wl,-u,base_GHCziConcziSignal_runHandlersPtr_closure"
1408− "-Wl,-u,base_GHCziTopHandler_flushStdHandles_closure"
1409− "-Wl,-u,base_GHCziTopHandler_runMainIO_closure"
1410− "-Wl,-u,ghczmprim_GHCziTypes_Czh_con_info"
1411− "-Wl,-u,ghczmprim_GHCziTypes_Izh_con_info"
1412− "-Wl,-u,ghczmprim_GHCziTypes_Fzh_con_info"
1413− "-Wl,-u,ghczmprim_GHCziTypes_Dzh_con_info"
1414− "-Wl,-u,ghczmprim_GHCziTypes_Wzh_con_info"
1415− "-Wl,-u,base_GHCziPtr_Ptr_con_info"
1416− "-Wl,-u,base_GHCziPtr_FunPtr_con_info"
1417− "-Wl,-u,base_GHCziInt_I8zh_con_info"
1418− "-Wl,-u,base_GHCziInt_I16zh_con_info"
1419− "-Wl,-u,base_GHCziInt_I32zh_con_info"
1420− "-Wl,-u,base_GHCziInt_I64zh_con_info"
1421− "-Wl,-u,base_GHCziWord_W8zh_con_info"
1422− "-Wl,-u,base_GHCziWord_W16zh_con_info"
1423− "-Wl,-u,base_GHCziWord_W32zh_con_info"
1424− "-Wl,-u,base_GHCziWord_W64zh_con_info"
1425− "-Wl,-u,base_GHCziStable_StablePtr_con_info"
1426− "-Wl,-u,hs_atomic_add8" "-Wl,-u,hs_atomic_add16"
1427− "-Wl,-u,hs_atomic_add32" "-Wl,-u,hs_atomic_add64"
1428− "-Wl,-u,hs_atomic_sub8" "-Wl,-u,hs_atomic_sub16"
1429− "-Wl,-u,hs_atomic_sub32" "-Wl,-u,hs_atomic_sub64"
1430− "-Wl,-u,hs_atomic_and8" "-Wl,-u,hs_atomic_and16"
1431− "-Wl,-u,hs_atomic_and32" "-Wl,-u,hs_atomic_and64"
1432− "-Wl,-u,hs_atomic_nand8" "-Wl,-u,hs_atomic_nand16"
1433− "-Wl,-u,hs_atomic_nand32" "-Wl,-u,hs_atomic_nand64"
1434− "-Wl,-u,hs_atomic_or8" "-Wl,-u,hs_atomic_or16"
1435− "-Wl,-u,hs_atomic_or32" "-Wl,-u,hs_atomic_or64"
1436− "-Wl,-u,hs_atomic_xor8" "-Wl,-u,hs_atomic_xor16"
1437− "-Wl,-u,hs_atomic_xor32" "-Wl,-u,hs_atomic_xor64"
1438− "-Wl,-u,hs_cmpxchg8" "-Wl,-u,hs_cmpxchg16" "-Wl,-u,hs_cmpxchg32"
1439− "-Wl,-u,hs_cmpxchg64" "-Wl,-u,hs_atomicread8"
1440− "-Wl,-u,hs_atomicread16" "-Wl,-u,hs_atomicread32"
1441− "-Wl,-u,hs_atomicread64" "-Wl,-u,hs_atomicwrite8"
1442− "-Wl,-u,hs_atomicwrite16" "-Wl,-u,hs_atomicwrite32"
1443− "-Wl,-u,hs_atomicwrite64"
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.10.3-x86_64-linux/ghc-pkg/versiondeleted−1
@@ -1 +0,0 @@
1−GHC package manager version 8.10.3
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.10.3-x86_64-linux/ghc/infodeleted−69
@@ -1,69 +0,0 @@
1− [("Project name","The Glorious Glasgow Haskell Compilation System")
2− ,("GCC extra via C opts","")
3− ,("C compiler flags","")
4− ,("C++ compiler flags","")
5− ,("C compiler link flags","-Wl,-z,noexecstack")
6− ,("C compiler supports -no-pie","YES")
7− ,("Haskell CPP flags","-E -undef -traditional")
8− ,("ld flags","-z noexecstack")
9− ,("ld supports compact unwind","YES")
10− ,("ld supports build-id","YES")
11− ,("ld supports filelist","NO")
12− ,("ld is GNU ld","YES")
13− ,("Merge objects flags","-r")
15− ,("ar supports at file","YES")
16− ,("otool command","otool")
17− ,("install_name_tool command","install_name_tool")
18− ,("touch command","touch")
19− ,("dllwrap command","/bin/false")
20− ,("windres command","/bin/false")
21− ,("libtool command","libtool")
22− ,("cross compiling","YES")
23− ,("target platform string","aarch64-unknown-linux")
24− ,("target os","OSLinux")
25− ,("target arch","ArchARM64")
26− ,("target word size","8")
27− ,("target has GNU nonexec stack","YES")
28− ,("target has .ident directive","YES")
29− ,("target has subsections via symbols","NO")
30− ,("target has RTS linker","YES")
31− ,("Unregisterised","NO")
32− ,("LLVM target","aarch64-unknown-linux")
33− ,("LLVM llc command","llc")
34− ,("LLVM opt command","opt")
35− ,("LLVM clang command","clang")
36− ,("integer library","integer-gmp")
37− ,("Use interpreter","YES")
38− ,("Use native code generator","NO")
39− ,("Support SMP","YES")
40− ,("RTS ways","l debug thr thr_debug thr_l thr_p thr_debug_p debug_p")
41− ,("Tables next to code","YES")
42− ,("Leading underscore","NO")
43− ,("Use LibFFI","YES")
44− ,("Use Threads","YES")
45− ,("Use Debugging","NO")
46− ,("RTS expects libdw","NO")
47− ,("Project version","8.10.3")
48− ,("Project Git commit id","6db6db46af6f8e3e24d7d16b0b43a984a9a14677")
49− ,("Booter version","8.6.5")
51− ,("Build platform","x86_64-unknown-linux")
52− ,("Host platform","x86_64-unknown-linux")
53− ,("Target platform","aarch64-unknown-linux")
54− ,("Have interpreter","YES")
55− ,("Object splitting supported","NO")
56− ,("Have native code generator","NO")
57− ,("Support dynamic-too","YES")
58− ,("Support parallel --make","YES")
59− ,("Support reexported-modules","YES")
60− ,("Support thinning and renaming package flags","YES")
61− ,("Support Backpack","YES")
62− ,("Requires unified installed package IDs","YES")
63− ,("Uses package keys","YES")
64− ,("Uses unit IDs","YES")
65− ,("Dynamic by default","NO")
66− ,("GHC Dynamic","NO")
67− ,("GHC Profiled","NO")
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.10.3-x86_64-linux/ghc/numeric-versiondeleted−1
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.10.3-x86_64-linux/ghc/supported-languagesdeleted−255
@@ -1,255 +0,0 @@
9−NoAlternativeLayoutRule
10−AlternativeLayoutRuleTransitional
11−NoAlternativeLayoutRuleTransitional
26−ConstrainedClassMethods
27−NoConstrainedClassMethods
54−DisambiguateRecordFields
55−NoDisambiguateRecordFields
63−NoDuplicateRecordFields
70−ExistentialQuantification
71−NoExistentialQuantification
77−NoExtendedDefaultRules
82−ForeignFunctionInterface
83−NoForeignFunctionInterface
84−FunctionalDependencies
85−NoFunctionalDependencies
91−NoGHCForeignImportPrim
92−GeneralizedNewtypeDeriving
93−NoGeneralizedNewtypeDeriving
94−GeneralisedNewtypeDeriving
95−NoGeneralisedNewtypeDeriving
101−NoImportQualifiedPost
105−NoIncoherentInstances
106−TypeFamilyDependencies
107−NoTypeFamilyDependencies
121−NoLiberalTypeSynonyms
125−NoMonadComprehensions
127−NoMonadFailDesugaring
132−MonomorphismRestriction
133−NoMonomorphismRestriction
134−MultiParamTypeClasses
135−NoMultiParamTypeClasses
150−NondecreasingIndentation
151−NoNondecreasingIndentation
157−NoOverlappingInstances
170−PartialTypeSignatures
171−NoPartialTypeSignatures
180−PolymorphicComponents
181−NoPolymorphicComponents
182−QuantifiedConstraints
183−NoQuantifiedConstraints
207−NoScopedTypeVariables
220−TemplateHaskellQuotes
221−NoTemplateHaskellQuotes
222−StandaloneKindSignatures
223−NoStandaloneKindSignatures
224−TraditionalRecordSyntax
225−NoTraditionalRecordSyntax
239−NoTypeSynonymInstances
245−NoUndecidableInstances
246−UndecidableSuperClasses
247−NoUndecidableSuperClasses
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.10.3-x86_64-linux/ghc/versiondeleted−1
@@ -1 +0,0 @@
1−The Glorious Glasgow Haskell Compilation System, version 8.10.3
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.10.4-x86_64-linux/ghc-pkg/dump-globaldeleted−1443
@@ -1,1443 +0,0 @@
7−copyright: 2003-2020, Cabal Development Team (see AUTHORS file)
8−maintainer: cabal-devel@haskell.org
9−author: Cabal Development Team <cabal-devel@haskell.org>
10−homepage: http://www.haskell.org/cabal/
11−synopsis: A framework for packaging Haskell software
13− The Haskell Common Architecture for Building Applications and
14− Libraries: a framework defining a common interface for authors to more
15− easily build their Haskell applications in a portable way.
16− The Haskell Cabal is part of a larger infrastructure for distributing,
17− organizing, and cataloging Haskell libraries and tools.
18−category: Distribution
21− Distribution.Backpack Distribution.Backpack.ComponentsGraph
22− Distribution.Backpack.Configure
23− Distribution.Backpack.ConfiguredComponent
24− Distribution.Backpack.DescribeUnitId
25− Distribution.Backpack.FullUnitId
26− Distribution.Backpack.LinkedComponent
27− Distribution.Backpack.ModSubst Distribution.Backpack.ModuleShape
28− Distribution.Backpack.PreModuleShape Distribution.CabalSpecVersion
29− Distribution.Compat.Binary Distribution.Compat.CharParsing
30− Distribution.Compat.CreatePipe Distribution.Compat.DList
31− Distribution.Compat.Directory Distribution.Compat.Environment
32− Distribution.Compat.Exception Distribution.Compat.FilePath
33− Distribution.Compat.Graph Distribution.Compat.Internal.TempFile
34− Distribution.Compat.Lens Distribution.Compat.Newtype
35− Distribution.Compat.Parsing Distribution.Compat.Prelude.Internal
36− Distribution.Compat.Process Distribution.Compat.ResponseFile
37− Distribution.Compat.Semigroup Distribution.Compat.Stack
38− Distribution.Compat.Time Distribution.Compat.Typeable
39− Distribution.Compiler Distribution.FieldGrammar
40− Distribution.FieldGrammar.Class
41− Distribution.FieldGrammar.FieldDescrs
42− Distribution.FieldGrammar.Parsec Distribution.FieldGrammar.Pretty
43− Distribution.Fields Distribution.Fields.ConfVar
44− Distribution.Fields.Field Distribution.Fields.Lexer
45− Distribution.Fields.LexerMonad Distribution.Fields.ParseResult
46− Distribution.Fields.Parser Distribution.Fields.Pretty
47− Distribution.InstalledPackageInfo Distribution.License
48− Distribution.Make Distribution.ModuleName Distribution.Package
49− Distribution.PackageDescription
50− Distribution.PackageDescription.Check
51− Distribution.PackageDescription.Configuration
52− Distribution.PackageDescription.FieldGrammar
53− Distribution.PackageDescription.Parsec
54− Distribution.PackageDescription.PrettyPrint
55− Distribution.PackageDescription.Quirks
56− Distribution.PackageDescription.Utils Distribution.Parsec
57− Distribution.Parsec.Error Distribution.Parsec.FieldLineStream
58− Distribution.Parsec.Newtypes Distribution.Parsec.Position
59− Distribution.Parsec.Warning Distribution.Pretty Distribution.ReadE
60− Distribution.SPDX Distribution.SPDX.License
61− Distribution.SPDX.LicenseExceptionId
62− Distribution.SPDX.LicenseExpression Distribution.SPDX.LicenseId
63− Distribution.SPDX.LicenseListVersion
64− Distribution.SPDX.LicenseReference Distribution.Simple
65− Distribution.Simple.Bench Distribution.Simple.Build
66− Distribution.Simple.Build.Macros
67− Distribution.Simple.Build.PathsModule
68− Distribution.Simple.BuildPaths Distribution.Simple.BuildTarget
69− Distribution.Simple.BuildToolDepends Distribution.Simple.CCompiler
70− Distribution.Simple.Command Distribution.Simple.Compiler
71− Distribution.Simple.Configure Distribution.Simple.Doctest
72− Distribution.Simple.Flag Distribution.Simple.GHC
73− Distribution.Simple.GHCJS Distribution.Simple.Glob
74− Distribution.Simple.Haddock Distribution.Simple.HaskellSuite
75− Distribution.Simple.Hpc Distribution.Simple.Install
76− Distribution.Simple.InstallDirs
77− Distribution.Simple.InstallDirs.Internal
78− Distribution.Simple.LocalBuildInfo Distribution.Simple.PackageIndex
79− Distribution.Simple.PreProcess Distribution.Simple.PreProcess.Unlit
80− Distribution.Simple.Program Distribution.Simple.Program.Ar
81− Distribution.Simple.Program.Builtin Distribution.Simple.Program.Db
82− Distribution.Simple.Program.Find Distribution.Simple.Program.GHC
83− Distribution.Simple.Program.HcPkg Distribution.Simple.Program.Hpc
84− Distribution.Simple.Program.Internal Distribution.Simple.Program.Ld
85− Distribution.Simple.Program.ResponseFile
86− Distribution.Simple.Program.Run Distribution.Simple.Program.Script
87− Distribution.Simple.Program.Strip Distribution.Simple.Program.Types
88− Distribution.Simple.Register Distribution.Simple.Setup
89− Distribution.Simple.ShowBuildInfo Distribution.Simple.SrcDist
90− Distribution.Simple.Test Distribution.Simple.Test.ExeV10
91− Distribution.Simple.Test.LibV09 Distribution.Simple.Test.Log
92− Distribution.Simple.UHC Distribution.Simple.UserHooks
93− Distribution.Simple.Utils Distribution.System
94− Distribution.TestSuite Distribution.Text
95− Distribution.Types.AbiDependency Distribution.Types.AbiHash
96− Distribution.Types.AnnotatedId Distribution.Types.Benchmark
97− Distribution.Types.Benchmark.Lens
98− Distribution.Types.BenchmarkInterface
99− Distribution.Types.BenchmarkType Distribution.Types.BuildInfo
100− Distribution.Types.BuildInfo.Lens Distribution.Types.BuildType
101− Distribution.Types.Component Distribution.Types.ComponentId
102− Distribution.Types.ComponentInclude
103− Distribution.Types.ComponentLocalBuildInfo
104− Distribution.Types.ComponentName
105− Distribution.Types.ComponentRequestedSpec
106− Distribution.Types.CondTree Distribution.Types.Condition
107− Distribution.Types.ConfVar Distribution.Types.Dependency
108− Distribution.Types.DependencyMap Distribution.Types.ExeDependency
109− Distribution.Types.Executable Distribution.Types.Executable.Lens
110− Distribution.Types.ExecutableScope Distribution.Types.ExposedModule
111− Distribution.Types.Flag Distribution.Types.ForeignLib
112− Distribution.Types.ForeignLib.Lens
113− Distribution.Types.ForeignLibOption
114− Distribution.Types.ForeignLibType
115− Distribution.Types.GenericPackageDescription
116− Distribution.Types.GenericPackageDescription.Lens
117− Distribution.Types.GivenComponent
118− Distribution.Types.HookedBuildInfo
119− Distribution.Types.IncludeRenaming
120− Distribution.Types.InstalledPackageInfo
121− Distribution.Types.InstalledPackageInfo.FieldGrammar
122− Distribution.Types.InstalledPackageInfo.Lens
123− Distribution.Types.LegacyExeDependency Distribution.Types.Lens
124− Distribution.Types.Library Distribution.Types.Library.Lens
125− Distribution.Types.LibraryName Distribution.Types.LibraryVisibility
126− Distribution.Types.LocalBuildInfo Distribution.Types.Mixin
127− Distribution.Types.Module Distribution.Types.ModuleReexport
128− Distribution.Types.ModuleRenaming
129− Distribution.Types.MungedPackageId
130− Distribution.Types.MungedPackageName
131− Distribution.Types.PackageDescription
132− Distribution.Types.PackageDescription.Lens
133− Distribution.Types.PackageId Distribution.Types.PackageId.Lens
134− Distribution.Types.PackageName Distribution.Types.PackageName.Magic
135− Distribution.Types.PackageVersionConstraint
136− Distribution.Types.PkgconfigDependency
137− Distribution.Types.PkgconfigName
138− Distribution.Types.PkgconfigVersion
139− Distribution.Types.PkgconfigVersionRange
140− Distribution.Types.SetupBuildInfo
141− Distribution.Types.SetupBuildInfo.Lens
142− Distribution.Types.SourceRepo Distribution.Types.SourceRepo.Lens
143− Distribution.Types.TargetInfo Distribution.Types.TestSuite
144− Distribution.Types.TestSuite.Lens
145− Distribution.Types.TestSuiteInterface Distribution.Types.TestType
146− Distribution.Types.UnitId Distribution.Types.UnqualComponentName
147− Distribution.Types.Version Distribution.Types.VersionInterval
148− Distribution.Types.VersionRange
149− Distribution.Types.VersionRange.Internal Distribution.Utils.Generic
150− Distribution.Utils.IOData Distribution.Utils.LogProgress
151− Distribution.Utils.MD5 Distribution.Utils.MapAccum
152− Distribution.Utils.NubList Distribution.Utils.Progress
153− Distribution.Utils.ShortText Distribution.Utils.Structured
154− Distribution.Verbosity Distribution.Verbosity.Internal
155− Distribution.Version Language.Haskell.Extension
157− Distribution.Backpack.PreExistingComponent
158− Distribution.Backpack.ReadyComponent Distribution.Backpack.MixLink
159− Distribution.Backpack.ModuleScope Distribution.Backpack.UnifyM
160− Distribution.Backpack.Id Distribution.Utils.UnionFind
161− Distribution.Utils.Base62 Distribution.Compat.Async
162− Distribution.Compat.CopyFile Distribution.Compat.GetShortPathName
163− Distribution.Compat.MonadFail Distribution.Compat.Prelude
164− Distribution.Compat.SnocList Distribution.GetOpt Distribution.Lex
165− Distribution.Utils.String Distribution.Simple.GHC.EnvironmentParser
166− Distribution.Simple.GHC.Internal Distribution.Simple.GHC.ImplInfo
167− Distribution.Simple.Utils.Json Paths_Cabal
170−dynamic-library-dirs:
172−hs-libraries: HSCabal-3.2.1.0
174− array-0.5.4.0 base-4.14.1.0 binary-0.8.8.0 bytestring-0.10.12.0
175− containers-0.6.2.1 deepseq-1.4.4.0 directory-1.3.6.0
176− filepath-1.4.2.1 mtl-2.2.2 parsec-3.1.14.0 pretty-1.1.3.6
177− process-1.6.9.0 text-1.2.4.1 time-1.9.3 transformers-0.5.6.2
187−license: BSD-3-Clause
188−maintainer: libraries@haskell.org
189−synopsis: Mutable and immutable arrays
191− In addition to providing the "Data.Array" module
192− <http://www.haskell.org/onlinereport/haskell2010/haskellch14.html as specified in the Haskell 2010 Language Report>,
193− this package also defines the classes 'IArray' of
194− immutable arrays and 'MArray' of arrays mutable within appropriate
195− monads, as well as some instances of these classes.
196−category: Data Structures
199− Data.Array Data.Array.Base Data.Array.IArray Data.Array.IO
200− Data.Array.IO.Internals Data.Array.IO.Safe Data.Array.MArray
201− Data.Array.MArray.Safe Data.Array.ST Data.Array.ST.Safe
202− Data.Array.Storable Data.Array.Storable.Internals
203− Data.Array.Storable.Safe Data.Array.Unboxed Data.Array.Unsafe
206−dynamic-library-dirs:
208−hs-libraries: HSarray-0.5.4.0
209−depends: base-4.14.1.0
218−license: BSD-3-Clause
219−maintainer: libraries@haskell.org
220−synopsis: Basic libraries
222− This package contains the Standard Haskell "Prelude" and its support libraries,
223− and a large collection of useful libraries ranging from data
224− structures to parsing combinators and debugging utilities.
228− Control.Applicative Control.Arrow Control.Category
229− Control.Concurrent Control.Concurrent.Chan Control.Concurrent.MVar
230− Control.Concurrent.QSem Control.Concurrent.QSemN Control.Exception
231− Control.Exception.Base Control.Monad Control.Monad.Fail
232− Control.Monad.Fix Control.Monad.IO.Class Control.Monad.Instances
233− Control.Monad.ST Control.Monad.ST.Lazy Control.Monad.ST.Lazy.Safe
234− Control.Monad.ST.Lazy.Unsafe Control.Monad.ST.Safe
235− Control.Monad.ST.Strict Control.Monad.ST.Unsafe Control.Monad.Zip
236− Data.Bifoldable Data.Bifunctor Data.Bitraversable Data.Bits
237− Data.Bool Data.Char Data.Coerce Data.Complex Data.Data Data.Dynamic
238− Data.Either Data.Eq Data.Fixed Data.Foldable Data.Function
239− Data.Functor Data.Functor.Classes Data.Functor.Compose
240− Data.Functor.Const Data.Functor.Contravariant Data.Functor.Identity
241− Data.Functor.Product Data.Functor.Sum Data.IORef Data.Int Data.Ix
242− Data.Kind Data.List Data.List.NonEmpty Data.Maybe Data.Monoid
243− Data.Ord Data.Proxy Data.Ratio Data.STRef Data.STRef.Lazy
244− Data.STRef.Strict Data.Semigroup Data.String Data.Traversable
245− Data.Tuple Data.Type.Bool Data.Type.Coercion Data.Type.Equality
246− Data.Typeable Data.Unique Data.Version Data.Void Data.Word
247− Debug.Trace Foreign Foreign.C Foreign.C.Error Foreign.C.String
248− Foreign.C.Types Foreign.Concurrent Foreign.ForeignPtr
249− Foreign.ForeignPtr.Safe Foreign.ForeignPtr.Unsafe Foreign.Marshal
250− Foreign.Marshal.Alloc Foreign.Marshal.Array Foreign.Marshal.Error
251− Foreign.Marshal.Pool Foreign.Marshal.Safe Foreign.Marshal.Unsafe
252− Foreign.Marshal.Utils Foreign.Ptr Foreign.Safe Foreign.StablePtr
253− Foreign.Storable GHC.Arr GHC.Base GHC.ByteOrder GHC.Char GHC.Clock
254− GHC.Conc GHC.Conc.IO GHC.Conc.Signal GHC.Conc.Sync
255− GHC.ConsoleHandler GHC.Constants GHC.Desugar GHC.Enum
256− GHC.Environment GHC.Err GHC.Event GHC.Exception GHC.Exception.Type
257− GHC.ExecutionStack GHC.ExecutionStack.Internal GHC.Exts
258− GHC.Fingerprint GHC.Fingerprint.Type GHC.Float
259− GHC.Float.ConversionUtils GHC.Float.RealFracMethods GHC.Foreign
260− GHC.ForeignPtr GHC.GHCi GHC.GHCi.Helpers GHC.Generics GHC.IO
261− GHC.IO.Buffer GHC.IO.BufferedIO GHC.IO.Device GHC.IO.Encoding
262− GHC.IO.Encoding.CodePage GHC.IO.Encoding.Failure
263− GHC.IO.Encoding.Iconv GHC.IO.Encoding.Latin1 GHC.IO.Encoding.Types
264− GHC.IO.Encoding.UTF16 GHC.IO.Encoding.UTF32 GHC.IO.Encoding.UTF8
265− GHC.IO.Exception GHC.IO.FD GHC.IO.Handle GHC.IO.Handle.FD
266− GHC.IO.Handle.Internals GHC.IO.Handle.Lock GHC.IO.Handle.Text
267− GHC.IO.Handle.Types GHC.IO.IOMode GHC.IO.Unsafe GHC.IOArray
268− GHC.IORef GHC.Int GHC.Ix GHC.List GHC.MVar GHC.Maybe GHC.Natural
269− GHC.Num GHC.OldList GHC.OverloadedLabels GHC.Pack GHC.Profiling
270− GHC.Ptr GHC.RTS.Flags GHC.Read GHC.Real GHC.Records
271− GHC.ResponseFile GHC.ST GHC.STRef GHC.Show GHC.Stable
272− GHC.StableName GHC.Stack GHC.Stack.CCS GHC.Stack.Types
273− GHC.StaticPtr GHC.Stats GHC.Storable GHC.TopHandler GHC.TypeLits
274− GHC.TypeNats GHC.Unicode GHC.Weak GHC.Word Numeric Numeric.Natural
275− Prelude System.CPUTime System.Console.GetOpt System.Environment
276− System.Environment.Blank System.Exit System.IO System.IO.Error
277− System.IO.Unsafe System.Info System.Mem System.Mem.StableName
278− System.Mem.Weak System.Posix.Internals System.Posix.Types
279− System.Timeout Text.ParserCombinators.ReadP
280− Text.ParserCombinators.ReadPrec Text.Printf Text.Read Text.Read.Lex
281− Text.Show Text.Show.Functions Type.Reflection
282− Type.Reflection.Unsafe Unsafe.Coerce
284− Control.Monad.ST.Imp Control.Monad.ST.Lazy.Imp Data.Functor.Utils
285− Data.OldList Data.Semigroup.Internal Data.Typeable.Internal
286− Foreign.ForeignPtr.Imp GHC.IO.Handle.Lock.Common
287− GHC.IO.Handle.Lock.Flock GHC.IO.Handle.Lock.LinuxOFD
288− GHC.IO.Handle.Lock.NoOp GHC.IO.Handle.Lock.Windows
289− GHC.StaticPtr.Internal System.Environment.ExecutablePath
290− System.CPUTime.Utils GHC.Event.Arr GHC.Event.Array
291− GHC.Event.Control GHC.Event.EPoll GHC.Event.IntTable
292− GHC.Event.Internal GHC.Event.KQueue GHC.Event.Manager GHC.Event.PSQ
293− GHC.Event.Poll GHC.Event.Thread GHC.Event.TimerManager
294− GHC.Event.Unique System.CPUTime.Posix.ClockGetTime
295− System.CPUTime.Posix.Times System.CPUTime.Posix.RUsage
296− System.CPUTime.Unsupported
299−dynamic-library-dirs:
301−hs-libraries: HSbase-4.14.1.0
304−depends: ghc-prim-0.6.1 integer-gmp-1.0.3.0 rts
313−license: BSD-3-Clause
314−maintainer: Lennart Kolmodin, Don Stewart <dons00@gmail.com>
315−author: Lennart Kolmodin <kolmodin@gmail.com>
316−stability: provisional
317−homepage: https://github.com/kolmodin/binary
319− Binary serialisation for Haskell values using lazy ByteStrings
321− Efficient, pure binary serialisation using lazy ByteStrings.
322− Haskell values may be encoded to and from binary formats,
323− written to disk as binary, or sent over the network.
324− The format used can be automatically generated, or
325− you can choose to implement a custom format if needed.
326− Serialisation speeds of over 1 G\/sec have been observed,
327− so this library should be suitable for high performance
329−category: Data, Parsing
332− Data.Binary Data.Binary.Builder Data.Binary.Get
333− Data.Binary.Get.Internal Data.Binary.Put
335− Data.Binary.Class Data.Binary.Internal Data.Binary.Generic
336− Data.Binary.FloatCast
339−dynamic-library-dirs:
341−hs-libraries: HSbinary-0.8.8.0
343− array-0.5.4.0 base-4.14.1.0 bytestring-0.10.12.0 containers-0.6.2.1
350−id: bytestring-0.10.12.0
351−key: bytestring-0.10.12.0
352−license: BSD-3-Clause
354− Copyright (c) Don Stewart 2005-2009,
355− (c) Duncan Coutts 2006-2015,
356− (c) David Roundy 2003-2005,
357− (c) Jasper Van der Jeugt 2010,
358− (c) Simon Meier 2010-2013.
359−maintainer: Duncan Coutts <duncan@community.haskell.org>
363−homepage: https://github.com/haskell/bytestring
365− Fast, compact, strict and lazy byte strings with a list interface
367− An efficient compact, immutable byte string type (both strict and lazy)
368− suitable for binary or 8-bit character data.
369− The 'ByteString' type represents sequences of bytes or 8-bit characters.
370− It is suitable for high performance use, both in terms of large data
371− quantities, or high speed requirements. The 'ByteString' functions follow
372− the same style as Haskell\'s ordinary lists, so it is easy to convert code
373− from using 'String' to 'ByteString'.
374− Two 'ByteString' variants are provided:
375− * Strict 'ByteString's keep the string as a single large array. This
376− makes them convenient for passing data between C and Haskell.
377− * Lazy 'ByteString's use a lazy list of strict chunks which makes it
378− suitable for I\/O streaming tasks.
379− The @Char8@ modules provide a character-based view of the same
380− underlying 'ByteString' types. This makes it convenient to handle mixed
381− binary and 8-bit character content (which is common in many file formats
382− and network protocols).
383− The 'Builder' module provides an efficient way to build up 'ByteString's
384− in an ad-hoc way by repeated concatenation. This is ideal for fast
385− serialisation or pretty printing.
386− There is also a 'ShortByteString' type which has a lower memory overhead
387− and can can be converted to or from a 'ByteString', but supports very few
388− other operations. It is suitable for keeping many short strings in memory.
389− 'ByteString's are not designed for Unicode. For Unicode strings you should
390− use the 'Text' type from the @text@ package.
391− These modules are intended to be imported qualified, to avoid name clashes
392− with "Prelude" functions, e.g.
393− > import qualified Data.ByteString as BS
397− Data.ByteString Data.ByteString.Builder
398− Data.ByteString.Builder.Extra Data.ByteString.Builder.Internal
399− Data.ByteString.Builder.Prim Data.ByteString.Builder.Prim.Internal
400− Data.ByteString.Char8 Data.ByteString.Internal Data.ByteString.Lazy
401− Data.ByteString.Lazy.Builder Data.ByteString.Lazy.Builder.ASCII
402− Data.ByteString.Lazy.Builder.Extras Data.ByteString.Lazy.Char8
403− Data.ByteString.Lazy.Internal Data.ByteString.Short
404− Data.ByteString.Short.Internal Data.ByteString.Unsafe
406− Data.ByteString.Builder.ASCII Data.ByteString.Builder.Prim.Binary
407− Data.ByteString.Builder.Prim.ASCII
408− Data.ByteString.Builder.Prim.Internal.Floating
409− Data.ByteString.Builder.Prim.Internal.UncheckedShifts
410− Data.ByteString.Builder.Prim.Internal.Base16
413−dynamic-library-dirs:
415−hs-libraries: HSbytestring-0.10.12.0
419− base-4.14.1.0 deepseq-1.4.4.0 ghc-prim-0.6.1 integer-gmp-1.0.3.0
426−id: containers-0.6.2.1
427−key: containers-0.6.2.1
428−license: BSD-3-Clause
429−maintainer: libraries@haskell.org
430−synopsis: Assorted concrete container types
432− This package contains efficient general-purpose implementations
433− of various immutable container types including sets, maps, sequences,
435− For a walkthrough of what this package provides with examples of common
436− operations see the [containers
437− introduction](https://haskell-containers.readthedocs.io).
438− The declared cost of each operation is either worst-case or amortized, but
439− remains valid even if structures are shared.
440−category: Data Structures
443− Data.Containers.ListUtils Data.Graph Data.IntMap
444− Data.IntMap.Internal Data.IntMap.Internal.Debug Data.IntMap.Lazy
445− Data.IntMap.Merge.Lazy Data.IntMap.Merge.Strict Data.IntMap.Strict
446− Data.IntMap.Strict.Internal Data.IntSet Data.IntSet.Internal
447− Data.Map Data.Map.Internal Data.Map.Internal.Debug Data.Map.Lazy
448− Data.Map.Merge.Lazy Data.Map.Merge.Strict Data.Map.Strict
449− Data.Map.Strict.Internal Data.Sequence Data.Sequence.Internal
450− Data.Sequence.Internal.Sorting Data.Set Data.Set.Internal Data.Tree
451− Utils.Containers.Internal.BitQueue
452− Utils.Containers.Internal.BitUtil
453− Utils.Containers.Internal.StrictPair
455− Utils.Containers.Internal.State
456− Utils.Containers.Internal.StrictMaybe
457− Utils.Containers.Internal.PtrEquality
458− Utils.Containers.Internal.Coercions
459− Utils.Containers.Internal.TypeError
460− Data.Map.Internal.DeprecatedShowTree
461− Data.IntMap.Internal.DeprecatedDebug
464−dynamic-library-dirs:
466−hs-libraries: HScontainers-0.6.2.1
467−depends: array-0.5.4.0 base-4.14.1.0 deepseq-1.4.4.0
476−license: BSD-3-Clause
477−maintainer: libraries@haskell.org
478−synopsis: Deep evaluation of data structures
480− This package provides methods for fully evaluating data structures
481− (\"deep evaluation\"). Deep evaluation is often used for adding
482− strictness to a program, e.g. in order to force pending exceptions,
483− remove space leaks, or force lazy I/O to happen. It is also useful
484− in parallel programs, to ensure pending work does not migrate to the
486− The primary use of this package is via the 'deepseq' function, a
487− \"deep\" version of 'seq'. It is implemented on top of an 'NFData'
488− typeclass (\"Normal Form Data\", data structures with no unevaluated
489− components) which defines strategies for fully evaluating different
490− data types. See module documentation in "Control.DeepSeq" for more
494−exposed-modules: Control.DeepSeq
495−hidden-modules: Control.DeepSeq.BackDoor
498−dynamic-library-dirs:
500−hs-libraries: HSdeepseq-1.4.4.0
501−depends: array-0.5.4.0 base-4.14.1.0
508−id: directory-1.3.6.0
509−key: directory-1.3.6.0
510−license: BSD-3-Clause
511−maintainer: libraries@haskell.org
512−synopsis: Platform-agnostic library for filesystem operations
514− This library provides a basic set of operations for manipulating files and
515− directories in a portable way.
519− System.Directory System.Directory.Internal
520− System.Directory.Internal.Prelude
522− System.Directory.Internal.C_utimensat
523− System.Directory.Internal.Common System.Directory.Internal.Config
524− System.Directory.Internal.Posix System.Directory.Internal.Windows
527−dynamic-library-dirs:
529−hs-libraries: HSdirectory-1.3.6.0
531− base-4.14.1.0 filepath-1.4.2.1 time-1.9.3 unix-2.7.2.2
538−id: exceptions-0.10.4
539−key: exceptions-0.10.4
540−license: BSD-3-Clause
542− Copyright (C) 2013-2015 Edward A. Kmett
543− Copyright (C) 2012 Google Inc.
544−maintainer: Edward A. Kmett <ekmett@gmail.com>
545−author: Edward A. Kmett
546−stability: provisional
547−homepage: http://github.com/ekmett/exceptions/
548−synopsis: Extensible optionally-pure exceptions
549−description: Extensible optionally-pure exceptions.
550−category: Control, Exceptions, Monad
552−exposed-modules: Control.Monad.Catch Control.Monad.Catch.Pure
555−dynamic-library-dirs:
557−hs-libraries: HSexceptions-0.10.4
559− base-4.14.1.0 mtl-2.2.2 stm-2.5.0.0 template-haskell-2.16.0.0
560− transformers-0.5.6.2
568−key: filepath-1.4.2.1
569−license: BSD-3-Clause
570−copyright: Neil Mitchell 2005-2018
571−maintainer: Neil Mitchell <ndmitchell@gmail.com>
572−author: Neil Mitchell <ndmitchell@gmail.com>
573−homepage: https://github.com/haskell/filepath#readme
574−synopsis: Library for manipulating FilePaths in a cross platform way.
576− This package provides functionality for manipulating @FilePath@ values, and is shipped with both <https://www.haskell.org/ghc/ GHC> and the <https://www.haskell.org/platform/ Haskell Platform>. It provides three modules:
577− * "System.FilePath.Posix" manipulates POSIX\/Linux style @FilePath@ values (with @\/@ as the path separator).
578− * "System.FilePath.Windows" manipulates Windows style @FilePath@ values (with either @\\@ or @\/@ as the path separator, and deals with drives).
579− * "System.FilePath" is an alias for the module appropriate to your platform.
580− All three modules provide the same API, and the same documentation (calling out differences in the different variants).
584− System.FilePath System.FilePath.Posix System.FilePath.Windows
587−dynamic-library-dirs:
589−hs-libraries: HSfilepath-1.4.2.1
590−depends: base-4.14.1.0
599−license: BSD-3-Clause
600−maintainer: ghc-devs@haskell.org
601−synopsis: Shared functionality between GHC and its boot libraries
603− This library is shared between GHC, ghc-pkg, and other boot
605− A note about "GHC.PackageDb": it only deals with the subset of
606− the package database that the compiler cares about: modules
607− paths etc and not package metadata like description, authors
608− etc. It is thus not a library interface to ghc-pkg and is *not*
609− suitable for modifying GHC package databases.
610− The package database format and this library are constructed in
611− such a way that while ghc-pkg depends on Cabal, the GHC library
612− and program do not have to depend on Cabal.
616− GHC.BaseDir GHC.ForeignSrcLang GHC.HandleEncoding
617− GHC.LanguageExtensions GHC.PackageDb GHC.Platform GHC.Platform.Host
618− GHC.Serialized GHC.Settings GHC.UniqueSubdir GHC.Version
621−dynamic-library-dirs:
623−hs-libraries: HSghc-boot-8.10.4
625− base-4.14.1.0 binary-0.8.8.0 bytestring-0.10.12.0
626− containers-0.6.2.1 directory-1.3.6.0 filepath-1.4.2.1
634−id: ghc-boot-th-8.10.4
635−key: ghc-boot-th-8.10.4
636−license: BSD-3-Clause
637−maintainer: ghc-devs@haskell.org
639− Shared functionality between GHC and the @template-haskell@
642− This library contains various bits shared between the @ghc@ and
643− @template-haskell@ libraries.
644− This package exists to ensure that @template-haskell@ has a
645− minimal set of transitive dependencies, since it is intended to
646− be depended upon by user code.
650− GHC.ForeignSrcLang.Type GHC.LanguageExtensions.Type GHC.Lexeme
653−dynamic-library-dirs:
655−hs-libraries: HSghc-boot-th-8.10.4
656−depends: base-4.14.1.0
663−id: ghc-compact-0.1.0.0
664−key: ghc-compact-0.1.0.0
665−license: BSD-3-Clause
666−maintainer: libraries@haskell.org
667−synopsis: In memory storage of deeply evaluated data structure
669− This package provides minimal functionality for working with
670− "compact regions", which hold a fully evaluated Haskell object graph.
671− These regions maintain the invariant that no pointers live inside the struct
672− that point outside it, which ensures efficient garbage collection without
673− ever reading the structure contents (effectively, it works as a manually
674− managed "oldest generation" which is never freed until the whole is
676− Internally, the struct is stored a single contiguous block of memory,
677− which allows efficient serialization and deserialization of structs
678− for distributed computing.
681−exposed-modules: GHC.Compact GHC.Compact.Serialized
684−dynamic-library-dirs:
686−hs-libraries: HSghc-compact-0.1.0.0
687−depends: base-4.14.1.0 bytestring-0.10.12.0 ghc-prim-0.6.1
696−license: BSD-3-Clause
697−maintainer: libraries@haskell.org
698−synopsis: Functions for walking GHC's heap
700− This package provides functions for walking the GHC heap data structures
701− and retrieving information about those data structures.
705− GHC.Exts.Heap GHC.Exts.Heap.ClosureTypes GHC.Exts.Heap.Closures
706− GHC.Exts.Heap.Constants GHC.Exts.Heap.InfoTable
707− GHC.Exts.Heap.InfoTable.Types GHC.Exts.Heap.InfoTableProf
711−dynamic-library-dirs:
713−hs-libraries: HSghc-heap-8.10.4
714−depends: base-4.14.1.0 ghc-prim-0.6.1 rts
723−license: BSD-3-Clause
724−maintainer: libraries@haskell.org
725−synopsis: GHC primitives
727− This package contains the primitive types and operations supplied by GHC.
731− GHC.CString GHC.Classes GHC.Debug GHC.IntWord64 GHC.Magic
732− GHC.Prim.Ext GHC.PrimopWrappers GHC.Tuple GHC.Types GHC.Prim
735−dynamic-library-dirs:
737−hs-libraries: HSghc-prim-0.6.1
738−extra-libraries: gcc c m
748−license: BSD-3-Clause
749−maintainer: ghc-devs@haskell.org
750−synopsis: The library supporting GHC's interactive interpreter
752− This library offers interfaces which mediate interactions between the
753− @ghci@ interactive shell and @iserv@, GHC's out-of-process interpreter
758− GHCi.BinaryArray GHCi.BreakArray GHCi.CreateBCO GHCi.FFI
759− GHCi.InfoTable GHCi.Message GHCi.ObjLink GHCi.RemoteTypes
760− GHCi.ResolvedBCO GHCi.Run GHCi.Signals GHCi.StaticPtrTable GHCi.TH
761− GHCi.TH.Binary SizedSeq
764−dynamic-library-dirs:
766−hs-libraries: HSghci-8.10.4
769− array-0.5.4.0 base-4.14.1.0 binary-0.8.8.0 bytestring-0.10.12.0
770− containers-0.6.2.1 deepseq-1.4.4.0 filepath-1.4.2.1 ghc-boot-8.10.4
771− ghc-boot-th-8.10.4 ghc-heap-8.10.4 template-haskell-2.16.0.0
772− transformers-0.5.6.2 unix-2.7.2.2
779−id: haskeline-0.8.0.1
780−key: haskeline-0.8.0.1
781−license: BSD-3-Clause
782−copyright: (c) Judah Jacobson
783−maintainer: Judah Jacobson <judah.jacobson@gmail.com>
784−author: Judah Jacobson
786−homepage: https://github.com/judah/haskeline
788− A command-line interface for user input, written in Haskell.
790− Haskeline provides a user interface for line input in command-line
791− programs. This library is similar in purpose to readline, but since
792− it is written in Haskell it is (hopefully) more easily used in other
794− Haskeline runs both on POSIX-compatible systems and on Windows.
795−category: User Interfaces
798− System.Console.Haskeline System.Console.Haskeline.Completion
799− System.Console.Haskeline.History System.Console.Haskeline.IO
800− System.Console.Haskeline.Internal
802− System.Console.Haskeline.Backend
803− System.Console.Haskeline.Backend.WCWidth
804− System.Console.Haskeline.Command
805− System.Console.Haskeline.Command.Completion
806− System.Console.Haskeline.Command.History
807− System.Console.Haskeline.Command.KillRing
808− System.Console.Haskeline.Directory System.Console.Haskeline.Emacs
809− System.Console.Haskeline.InputT System.Console.Haskeline.Key
810− System.Console.Haskeline.LineState System.Console.Haskeline.Monads
811− System.Console.Haskeline.Prefs System.Console.Haskeline.Recover
812− System.Console.Haskeline.RunCommand System.Console.Haskeline.Term
813− System.Console.Haskeline.Command.Undo System.Console.Haskeline.Vi
814− System.Console.Haskeline.Backend.Posix
815− System.Console.Haskeline.Backend.Posix.Encoder
816− System.Console.Haskeline.Backend.DumbTerm
819−dynamic-library-dirs:
821−hs-libraries: HShaskeline-0.8.0.1
823− base-4.14.1.0 bytestring-0.10.12.0 containers-0.6.2.1
824− directory-1.3.6.0 exceptions-0.10.4 filepath-1.4.2.1
825− process-1.6.9.0 stm-2.5.0.0 transformers-0.5.6.2 unix-2.7.2.2
834−license: BSD-3-Clause
835−maintainer: ghc-devs@haskell.org
837−synopsis: Code Coverage Library for Haskell
839− This package provides the code coverage library for Haskell.
840− See <http://www.haskell.org/haskellwiki/Haskell_program_coverage> for more
845− Trace.Hpc.Mix Trace.Hpc.Reflect Trace.Hpc.Tix Trace.Hpc.Util
848−dynamic-library-dirs:
850−hs-libraries: HShpc-0.6.1.0
852− base-4.14.1.0 containers-0.6.2.1 deepseq-1.4.4.0 directory-1.3.6.0
853− filepath-1.4.2.1 time-1.9.3
860−id: integer-gmp-1.0.3.0
861−key: integer-gmp-1.0.3.0
862−license: BSD-3-Clause
863−maintainer: hvr@gnu.org
864−author: Herbert Valerio Riedel
865−synopsis: Integer library based on GMP
867− This package provides the low-level implementation of the standard
868− 'Integer' type based on the
869− <http://gmplib.org/ GNU Multiple Precision Arithmetic Library (GMP)>.
870− This package provides access to the internal representation of
871− 'Integer' as well as primitive operations with no proper error
872− handling, and should only be used directly with the utmost care.
873−category: Numeric, Algebra
876− GHC.Integer GHC.Integer.GMP.Internals GHC.Integer.Logarithms
877− GHC.Integer.Logarithms.Internals
878−hidden-modules: GHC.Integer.Type
881−dynamic-library-dirs:
883−hs-libraries: HSinteger-gmp-1.0.3.0
886−depends: ghc-prim-0.6.1
895−license: BSD-3-Clause
899−synopsis: Provides shared functionality between iserv and iserv-proxy
900−category: Development
902−exposed-modules: GHCi.Utils Lib
905−dynamic-library-dirs:
907−hs-libraries: HSlibiserv-8.10.4
909− base-4.14.1.0 binary-0.8.8.0 bytestring-0.10.12.0
910− containers-0.6.2.1 deepseq-1.4.4.0 ghci-8.10.4 unix-2.7.2.2
919−license: BSD-3-Clause
920−maintainer: Edward Kmett <ekmett@gmail.com>
922−homepage: http://github.com/haskell/mtl
923−synopsis: Monad classes, using functional dependencies
925− Monad classes using functional dependencies, with instances
926− for various monad transformers, inspired by the paper
927− /Functional Programming with Overloading and Higher-Order Polymorphism/,
928− by Mark P Jones, in /Advanced School of Functional Programming/, 1995
929− (<http://web.cecs.pdx.edu/~mpj/pubs/springschool.html>).
933− Control.Monad.Cont Control.Monad.Cont.Class Control.Monad.Error
934− Control.Monad.Error.Class Control.Monad.Except
935− Control.Monad.Identity Control.Monad.List Control.Monad.RWS
936− Control.Monad.RWS.Class Control.Monad.RWS.Lazy
937− Control.Monad.RWS.Strict Control.Monad.Reader
938− Control.Monad.Reader.Class Control.Monad.State
939− Control.Monad.State.Class Control.Monad.State.Lazy
940− Control.Monad.State.Strict Control.Monad.Trans Control.Monad.Writer
941− Control.Monad.Writer.Class Control.Monad.Writer.Lazy
942− Control.Monad.Writer.Strict
945−dynamic-library-dirs:
947−hs-libraries: HSmtl-2.2.2
948−depends: base-4.14.1.0 transformers-0.5.6.2
957−license: BSD-3-Clause
958−maintainer: Herbert Valerio Riedel <hvr@gnu.org>
960− Daan Leijen <daan@microsoft.com>, Paolo Martini <paolo@nemail.it>, Antoine Latter <aslatter@gmail.com>
961−homepage: https://github.com/haskell/parsec
962−synopsis: Monadic parser combinators
964− Parsec is designed from scratch as an industrial-strength parser
965− library. It is simple, safe, well documented (on the package
966− homepage), has extensive libraries, good error messages,
967− and is fast. It is defined as a monad transformer that can be
968− stacked on arbitrary monads, and it is also parametric in the
970− The main entry point is the "Text.Parsec" module which provides
971− defaults for parsing 'Char'acter data.
972− The "Text.ParserCombinators.Parsec" module hierarchy contains
973− the legacy @parsec-2@ API and may be removed at some point in
978− Text.Parsec Text.Parsec.ByteString Text.Parsec.ByteString.Lazy
979− Text.Parsec.Char Text.Parsec.Combinator Text.Parsec.Error
980− Text.Parsec.Expr Text.Parsec.Language Text.Parsec.Perm
981− Text.Parsec.Pos Text.Parsec.Prim Text.Parsec.String
982− Text.Parsec.Text Text.Parsec.Text.Lazy Text.Parsec.Token
983− Text.ParserCombinators.Parsec Text.ParserCombinators.Parsec.Char
984− Text.ParserCombinators.Parsec.Combinator
985− Text.ParserCombinators.Parsec.Error
986− Text.ParserCombinators.Parsec.Expr
987− Text.ParserCombinators.Parsec.Language
988− Text.ParserCombinators.Parsec.Perm
989− Text.ParserCombinators.Parsec.Pos
990− Text.ParserCombinators.Parsec.Prim
991− Text.ParserCombinators.Parsec.Token
994−dynamic-library-dirs:
996−hs-libraries: HSparsec-3.1.14.0
998− base-4.14.1.0 bytestring-0.10.12.0 mtl-2.2.2 text-1.2.4.1
1007−license: BSD-3-Clause
1008−maintainer: David Terei <code@davidterei.com>
1010−homepage: http://github.com/haskell/pretty
1011−synopsis: Pretty-printing library
1013− This package contains a pretty-printing library, a set of API's
1014− that provides a way to easily print out text in a consistent
1015− format of your choosing. This is useful for compilers and related
1017− This library was originally designed by John Hughes's and has since
1018− been heavily modified by Simon Peyton Jones.
1022− Text.PrettyPrint Text.PrettyPrint.Annotated
1023− Text.PrettyPrint.Annotated.HughesPJ
1024− Text.PrettyPrint.Annotated.HughesPJClass Text.PrettyPrint.HughesPJ
1025− Text.PrettyPrint.HughesPJClass
1028−dynamic-library-dirs:
1030−hs-libraries: HSpretty-1.1.3.6
1031−depends: base-4.14.1.0 deepseq-1.4.4.0 ghc-prim-0.6.1
1039−key: process-1.6.9.0
1040−license: BSD-3-Clause
1041−maintainer: libraries@haskell.org
1042−synopsis: Process libraries
1044− This package contains libraries for dealing with system processes.
1045− The typed-process package is a more recent take on a process API,
1046− which uses this package internally. It features better binary
1047− support, easier concurrency, and a more composable API. You can
1048− read more about it at
1049− <https://github.com/fpco/typed-process/#readme>.
1052−exposed-modules: System.Cmd System.Process System.Process.Internals
1053−hidden-modules: System.Process.Common System.Process.Posix
1056−dynamic-library-dirs:
1058−hs-libraries: HSprocess-1.6.9.0
1060−includes: runProcess.h
1062− base-4.14.1.0 deepseq-1.4.4.0 directory-1.3.6.0 filepath-1.4.2.1
1072−license: BSD-3-Clause
1073−maintainer: libraries@haskell.org
1074−homepage: https://wiki.haskell.org/Software_transactional_memory
1075−synopsis: Software Transactional Memory
1077− Software Transactional Memory, or STM, is an abstraction for
1078− concurrent communication. The main benefits of STM are
1079− /composability/ and /modularity/. That is, using STM you can write
1080− concurrent abstractions that can be easily composed with any other
1081− abstraction built using STM, without exposing the details of how
1082− your abstraction ensures safety. This is typically not the case
1083− with other forms of concurrent communication, such as locks or
1085−category: Concurrency
1088− Control.Concurrent.STM Control.Concurrent.STM.TArray
1089− Control.Concurrent.STM.TBQueue Control.Concurrent.STM.TChan
1090− Control.Concurrent.STM.TMVar Control.Concurrent.STM.TQueue
1091− Control.Concurrent.STM.TSem Control.Concurrent.STM.TVar
1093−hidden-modules: Control.Sequential.STM
1096−dynamic-library-dirs:
1098−hs-libraries: HSstm-2.5.0.0
1099−depends: array-0.5.4.0 base-4.14.1.0
1103−name: template-haskell
1106−id: template-haskell-2.16.0.0
1107−key: template-haskell-2.16.0.0
1108−license: BSD-3-Clause
1109−maintainer: libraries@haskell.org
1110−synopsis: Support library for Template Haskell
1112− This package provides modules containing facilities for manipulating
1113− Haskell source code using Template Haskell.
1114− See <http://www.haskell.org/haskellwiki/Template_Haskell> for more
1116−category: Template Haskell
1119− Language.Haskell.TH Language.Haskell.TH.LanguageExtensions
1120− Language.Haskell.TH.Lib Language.Haskell.TH.Lib.Internal
1121− Language.Haskell.TH.Ppr Language.Haskell.TH.PprLib
1122− Language.Haskell.TH.Quote Language.Haskell.TH.Syntax
1123−hidden-modules: Language.Haskell.TH.Lib.Map
1126−dynamic-library-dirs:
1128−hs-libraries: HStemplate-haskell-2.16.0.0
1130− base-4.14.1.0 ghc-boot-th-8.10.4 ghc-prim-0.6.1 pretty-1.1.3.6
1139−license: BSD-2-Clause
1140−copyright: 2009-2011 Bryan O'Sullivan, 2008-2009 Tom Harper
1142− Bryan O'Sullivan <bos@serpentine.com>, Herbert Valerio Riedel <hvr@gnu.org>
1143−author: Bryan O'Sullivan <bos@serpentine.com>
1144−homepage: https://github.com/haskell/text
1145−synopsis: An efficient packed Unicode text type.
1147− An efficient packed, immutable Unicode text type (both strict and
1148− lazy), with a powerful loop fusion optimization framework.
1149− The 'Text' type represents Unicode character strings, in a time and
1150− space-efficient manner. This package provides text processing
1151− capabilities that are optimized for performance critical use, both
1152− in terms of large data quantities and high speed.
1153− The 'Text' type provides character-encoding, type-safe case
1154− conversion via whole-string case conversion functions (see "Data.Text").
1155− It also provides a range of functions for converting 'Text' values to
1156− and from 'ByteStrings', using several standard encodings
1157− (see "Data.Text.Encoding").
1158− Efficient locale-sensitive support for text IO is also supported
1159− (see "Data.Text.IO").
1160− These modules are intended to be imported qualified, to avoid name
1161− clashes with Prelude functions, e.g.
1162− > import qualified Data.Text as T
1164− To use an extended and very rich family of functions for working
1165− with Unicode text (including normalization, regular expressions,
1166− non-standard encodings, text breaking, and locales), see
1167− the [text-icu package](https://hackage.haskell.org/package/text-icu)
1168− based on the well-respected and liberally
1169− licensed [ICU library](http://site.icu-project.org/).
1170− == Internal Representation: UTF-16 vs. UTF-8
1171− Currently the @text@ library uses UTF-16 as its internal representation
1172− which is [neither a fixed-width nor always the most dense representation](http://utf8everywhere.org/)
1173− for Unicode text. We're currently investigating the feasibility
1174− of [changing Text's internal representation to UTF-8](https://github.com/text-utf8)
1175− and if you need such a 'Text' type right now you might be interested in using the spin-off
1176− packages <https://hackage.haskell.org/package/text-utf8 text-utf8> and
1177− <https://hackage.haskell.org/package/text-short text-short>.
1178−category: Data, Text
1181− Data.Text Data.Text.Array Data.Text.Encoding
1182− Data.Text.Encoding.Error Data.Text.Foreign Data.Text.IO
1183− Data.Text.Internal Data.Text.Internal.Builder
1184− Data.Text.Internal.Builder.Functions
1185− Data.Text.Internal.Builder.Int.Digits
1186− Data.Text.Internal.Builder.RealFloat.Functions
1187− Data.Text.Internal.ByteStringCompat
1188− Data.Text.Internal.Encoding.Fusion
1189− Data.Text.Internal.Encoding.Fusion.Common
1190− Data.Text.Internal.Encoding.Utf16 Data.Text.Internal.Encoding.Utf32
1191− Data.Text.Internal.Encoding.Utf8 Data.Text.Internal.Functions
1192− Data.Text.Internal.Fusion Data.Text.Internal.Fusion.CaseMapping
1193− Data.Text.Internal.Fusion.Common Data.Text.Internal.Fusion.Size
1194− Data.Text.Internal.Fusion.Types Data.Text.Internal.IO
1195− Data.Text.Internal.Lazy Data.Text.Internal.Lazy.Encoding.Fusion
1196− Data.Text.Internal.Lazy.Fusion Data.Text.Internal.Lazy.Search
1197− Data.Text.Internal.Private Data.Text.Internal.Read
1198− Data.Text.Internal.Search Data.Text.Internal.Unsafe
1199− Data.Text.Internal.Unsafe.Char Data.Text.Internal.Unsafe.Shift
1200− Data.Text.Lazy Data.Text.Lazy.Builder Data.Text.Lazy.Builder.Int
1201− Data.Text.Lazy.Builder.RealFloat Data.Text.Lazy.Encoding
1202− Data.Text.Lazy.IO Data.Text.Lazy.Internal Data.Text.Lazy.Read
1203− Data.Text.Read Data.Text.Unsafe
1204−hidden-modules: Data.Text.Show
1207−dynamic-library-dirs:
1209−hs-libraries: HStext-1.2.4.1
1211− array-0.5.4.0 base-4.14.1.0 binary-0.8.8.0 bytestring-0.10.12.0
1212− deepseq-1.4.4.0 ghc-prim-0.6.1 integer-gmp-1.0.3.0
1213− template-haskell-2.16.0.0
1222−license: BSD-3-Clause
1223−maintainer: <ashley@semantic.org>
1224−author: Ashley Yakeley
1226−homepage: https://github.com/haskell/time
1227−synopsis: A time library
1228−description: Time, clocks and calendars
1232− Data.Time Data.Time.Calendar Data.Time.Calendar.Easter
1233− Data.Time.Calendar.Julian Data.Time.Calendar.MonthDay
1234− Data.Time.Calendar.OrdinalDate Data.Time.Calendar.WeekDate
1235− Data.Time.Clock Data.Time.Clock.POSIX Data.Time.Clock.System
1236− Data.Time.Clock.TAI Data.Time.Format Data.Time.Format.ISO8601
1237− Data.Time.Format.Internal Data.Time.LocalTime
1239− Data.Format Data.Time.Calendar.Private Data.Time.Calendar.Days
1240− Data.Time.Calendar.Gregorian Data.Time.Calendar.CalendarDiffDays
1241− Data.Time.Calendar.Week Data.Time.Calendar.JulianYearDay
1242− Data.Time.Clock.Internal.DiffTime
1243− Data.Time.Clock.Internal.AbsoluteTime
1244− Data.Time.Clock.Internal.NominalDiffTime
1245− Data.Time.Clock.Internal.POSIXTime
1246− Data.Time.Clock.Internal.UniversalTime
1247− Data.Time.Clock.Internal.SystemTime
1248− Data.Time.Clock.Internal.UTCTime Data.Time.Clock.Internal.CTimeval
1249− Data.Time.Clock.Internal.CTimespec Data.Time.Clock.Internal.UTCDiff
1250− Data.Time.LocalTime.Internal.TimeZone
1251− Data.Time.LocalTime.Internal.TimeOfDay
1252− Data.Time.LocalTime.Internal.CalendarDiffTime
1253− Data.Time.LocalTime.Internal.LocalTime
1254− Data.Time.LocalTime.Internal.ZonedTime Data.Time.Format.Parse
1255− Data.Time.Format.Locale Data.Time.Format.Format.Class
1256− Data.Time.Format.Format.Instances Data.Time.Format.Parse.Class
1257− Data.Time.Format.Parse.Instances
1260−dynamic-library-dirs:
1262−hs-libraries: HStime-1.9.3
1264−depends: base-4.14.1.0 deepseq-1.4.4.0
1271−id: transformers-0.5.6.2
1272−key: transformers-0.5.6.2
1273−license: BSD-3-Clause
1274−maintainer: Ross Paterson <R.Paterson@city.ac.uk>
1275−author: Andy Gill, Ross Paterson
1276−synopsis: Concrete functor and monad transformers
1278− A portable library of functor and monad transformers, inspired by
1280− * \"Functional Programming with Overloading and Higher-Order
1281− Polymorphism\", by Mark P Jones,
1282− in /Advanced School of Functional Programming/, 1995
1283− (<http://web.cecs.pdx.edu/~mpj/pubs/springschool.html>).
1284− This package contains:
1285− * the monad transformer class (in "Control.Monad.Trans.Class")
1286− * concrete functor and monad transformers, each with associated
1287− operations and functions to lift operations associated with other
1289− The package can be used on its own in portable Haskell code, in
1290− which case operations need to be manually lifted through transformer
1291− stacks (see "Control.Monad.Trans.Class" for some examples).
1292− Alternatively, it can be used with the non-portable monad classes in
1293− the @mtl@ or @monads-tf@ packages, which automatically lift operations
1294− introduced by monad transformers through other transformers.
1298− Control.Applicative.Backwards Control.Applicative.Lift
1299− Control.Monad.Signatures Control.Monad.Trans.Accum
1300− Control.Monad.Trans.Class Control.Monad.Trans.Cont
1301− Control.Monad.Trans.Error Control.Monad.Trans.Except
1302− Control.Monad.Trans.Identity Control.Monad.Trans.List
1303− Control.Monad.Trans.Maybe Control.Monad.Trans.RWS
1304− Control.Monad.Trans.RWS.CPS Control.Monad.Trans.RWS.Lazy
1305− Control.Monad.Trans.RWS.Strict Control.Monad.Trans.Reader
1306− Control.Monad.Trans.Select Control.Monad.Trans.State
1307− Control.Monad.Trans.State.Lazy Control.Monad.Trans.State.Strict
1308− Control.Monad.Trans.Writer Control.Monad.Trans.Writer.CPS
1309− Control.Monad.Trans.Writer.Lazy Control.Monad.Trans.Writer.Strict
1310− Data.Functor.Constant Data.Functor.Reverse
1313−dynamic-library-dirs:
1315−hs-libraries: HStransformers-0.5.6.2
1316−depends: base-4.14.1.0
1325−license: BSD-3-Clause
1326−maintainer: libraries@haskell.org
1327−homepage: https://github.com/haskell/unix
1328−synopsis: POSIX functionality
1330− This package gives you access to the set of operating system
1331− services standardised by
1332− <http://pubs.opengroup.org/onlinepubs/9699919799/ POSIX.1-2008>
1333− (or the IEEE Portable Operating System Interface for Computing
1334− Environments - IEEE Std. 1003.1).
1335− The package is not supported under Windows.
1339− System.Posix System.Posix.ByteString
1340− System.Posix.ByteString.FilePath System.Posix.Directory
1341− System.Posix.Directory.ByteString System.Posix.DynamicLinker
1342− System.Posix.DynamicLinker.ByteString
1343− System.Posix.DynamicLinker.Module
1344− System.Posix.DynamicLinker.Module.ByteString
1345− System.Posix.DynamicLinker.Prim System.Posix.Env
1346− System.Posix.Env.ByteString System.Posix.Error System.Posix.Fcntl
1347− System.Posix.Files System.Posix.Files.ByteString System.Posix.IO
1348− System.Posix.IO.ByteString System.Posix.Process
1349− System.Posix.Process.ByteString System.Posix.Process.Internals
1350− System.Posix.Resource System.Posix.Semaphore System.Posix.SharedMem
1351− System.Posix.Signals System.Posix.Signals.Exts System.Posix.Temp
1352− System.Posix.Temp.ByteString System.Posix.Terminal
1353− System.Posix.Terminal.ByteString System.Posix.Time
1354− System.Posix.Unistd System.Posix.User
1356− System.Posix.Directory.Common System.Posix.DynamicLinker.Common
1357− System.Posix.Files.Common System.Posix.IO.Common
1358− System.Posix.Process.Common System.Posix.Terminal.Common
1361−dynamic-library-dirs:
1363−hs-libraries: HSunix-2.7.2.2
1364−extra-libraries: rt util dl pthread
1366−includes: HsUnix.h execvpe.h
1367−depends: base-4.14.1.0 bytestring-0.10.12.0 time-1.9.3
1376−license: BSD-3-Clause
1377−maintainer: glasgow-haskell-users@haskell.org
1381−extra-libraries: m rt dl ffi numa pthread
1385− "-Wl,-u,base_GHCziTopHandler_runIO_closure"
1386− "-Wl,-u,base_GHCziTopHandler_runNonIO_closure"
1387− "-Wl,-u,ghczmprim_GHCziTuple_Z0T_closure"
1388− "-Wl,-u,ghczmprim_GHCziTypes_True_closure"
1389− "-Wl,-u,ghczmprim_GHCziTypes_False_closure"
1390− "-Wl,-u,base_GHCziPack_unpackCString_closure"
1391− "-Wl,-u,base_GHCziWeak_runFinalizzerBatch_closure"
1392− "-Wl,-u,base_GHCziIOziException_stackOverflow_closure"
1393− "-Wl,-u,base_GHCziIOziException_heapOverflow_closure"
1394− "-Wl,-u,base_GHCziIOziException_allocationLimitExceeded_closure"
1395− "-Wl,-u,base_GHCziIOziException_blockedIndefinitelyOnMVar_closure"
1396− "-Wl,-u,base_GHCziIOziException_blockedIndefinitelyOnSTM_closure"
1397− "-Wl,-u,base_GHCziIOziException_cannotCompactFunction_closure"
1398− "-Wl,-u,base_GHCziIOziException_cannotCompactPinned_closure"
1399− "-Wl,-u,base_GHCziIOziException_cannotCompactMutable_closure"
1400− "-Wl,-u,base_ControlziExceptionziBase_absentSumFieldError_closure"
1401− "-Wl,-u,base_ControlziExceptionziBase_nonTermination_closure"
1402− "-Wl,-u,base_ControlziExceptionziBase_nestedAtomically_closure"
1403− "-Wl,-u,base_GHCziEventziThread_blockedOnBadFD_closure"
1404− "-Wl,-u,base_GHCziConcziSync_runSparks_closure"
1405− "-Wl,-u,base_GHCziConcziIO_ensureIOManagerIsRunning_closure"
1406− "-Wl,-u,base_GHCziConcziIO_ioManagerCapabilitiesChanged_closure"
1407− "-Wl,-u,base_GHCziConcziSignal_runHandlersPtr_closure"
1408− "-Wl,-u,base_GHCziTopHandler_flushStdHandles_closure"
1409− "-Wl,-u,base_GHCziTopHandler_runMainIO_closure"
1410− "-Wl,-u,ghczmprim_GHCziTypes_Czh_con_info"
1411− "-Wl,-u,ghczmprim_GHCziTypes_Izh_con_info"
1412− "-Wl,-u,ghczmprim_GHCziTypes_Fzh_con_info"
1413− "-Wl,-u,ghczmprim_GHCziTypes_Dzh_con_info"
1414− "-Wl,-u,ghczmprim_GHCziTypes_Wzh_con_info"
1415− "-Wl,-u,base_GHCziPtr_Ptr_con_info"
1416− "-Wl,-u,base_GHCziPtr_FunPtr_con_info"
1417− "-Wl,-u,base_GHCziInt_I8zh_con_info"
1418− "-Wl,-u,base_GHCziInt_I16zh_con_info"
1419− "-Wl,-u,base_GHCziInt_I32zh_con_info"
1420− "-Wl,-u,base_GHCziInt_I64zh_con_info"
1421− "-Wl,-u,base_GHCziWord_W8zh_con_info"
1422− "-Wl,-u,base_GHCziWord_W16zh_con_info"
1423− "-Wl,-u,base_GHCziWord_W32zh_con_info"
1424− "-Wl,-u,base_GHCziWord_W64zh_con_info"
1425− "-Wl,-u,base_GHCziStable_StablePtr_con_info"
1426− "-Wl,-u,hs_atomic_add8" "-Wl,-u,hs_atomic_add16"
1427− "-Wl,-u,hs_atomic_add32" "-Wl,-u,hs_atomic_add64"
1428− "-Wl,-u,hs_atomic_sub8" "-Wl,-u,hs_atomic_sub16"
1429− "-Wl,-u,hs_atomic_sub32" "-Wl,-u,hs_atomic_sub64"
1430− "-Wl,-u,hs_atomic_and8" "-Wl,-u,hs_atomic_and16"
1431− "-Wl,-u,hs_atomic_and32" "-Wl,-u,hs_atomic_and64"
1432− "-Wl,-u,hs_atomic_nand8" "-Wl,-u,hs_atomic_nand16"
1433− "-Wl,-u,hs_atomic_nand32" "-Wl,-u,hs_atomic_nand64"
1434− "-Wl,-u,hs_atomic_or8" "-Wl,-u,hs_atomic_or16"
1435− "-Wl,-u,hs_atomic_or32" "-Wl,-u,hs_atomic_or64"
1436− "-Wl,-u,hs_atomic_xor8" "-Wl,-u,hs_atomic_xor16"
1437− "-Wl,-u,hs_atomic_xor32" "-Wl,-u,hs_atomic_xor64"
1438− "-Wl,-u,hs_cmpxchg8" "-Wl,-u,hs_cmpxchg16" "-Wl,-u,hs_cmpxchg32"
1439− "-Wl,-u,hs_cmpxchg64" "-Wl,-u,hs_atomicread8"
1440− "-Wl,-u,hs_atomicread16" "-Wl,-u,hs_atomicread32"
1441− "-Wl,-u,hs_atomicread64" "-Wl,-u,hs_atomicwrite8"
1442− "-Wl,-u,hs_atomicwrite16" "-Wl,-u,hs_atomicwrite32"
1443− "-Wl,-u,hs_atomicwrite64"
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.10.4-x86_64-linux/ghc-pkg/versiondeleted−1
@@ -1 +0,0 @@
1−GHC package manager version 8.10.4
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.10.4-x86_64-linux/ghc/infodeleted−69
@@ -1,69 +0,0 @@
1− [("Project name","The Glorious Glasgow Haskell Compilation System")
2− ,("GCC extra via C opts","")
3− ,("C compiler flags","")
4− ,("C++ compiler flags","")
5− ,("C compiler link flags","-Wl,-z,noexecstack")
6− ,("C compiler supports -no-pie","YES")
7− ,("Haskell CPP flags","-E -undef -traditional")
8− ,("ld flags","-z noexecstack")
9− ,("ld supports compact unwind","YES")
10− ,("ld supports build-id","YES")
11− ,("ld supports filelist","NO")
12− ,("ld is GNU ld","YES")
13− ,("Merge objects flags","-r")
15− ,("ar supports at file","YES")
16− ,("otool command","otool")
17− ,("install_name_tool command","install_name_tool")
18− ,("touch command","touch")
19− ,("dllwrap command","/bin/false")
20− ,("windres command","/bin/false")
21− ,("libtool command","libtool")
22− ,("cross compiling","YES")
23− ,("target platform string","aarch64-unknown-linux")
24− ,("target os","OSLinux")
25− ,("target arch","ArchARM64")
26− ,("target word size","8")
27− ,("target has GNU nonexec stack","YES")
28− ,("target has .ident directive","YES")
29− ,("target has subsections via symbols","NO")
30− ,("target has RTS linker","YES")
31− ,("Unregisterised","NO")
32− ,("LLVM target","aarch64-unknown-linux")
33− ,("LLVM llc command","llc")
34− ,("LLVM opt command","opt")
35− ,("LLVM clang command","clang")
36− ,("integer library","integer-gmp")
37− ,("Use interpreter","YES")
38− ,("Use native code generator","NO")
39− ,("Support SMP","YES")
40− ,("RTS ways","l debug thr thr_debug thr_l thr_p thr_debug_p debug_p")
41− ,("Tables next to code","YES")
42− ,("Leading underscore","NO")
43− ,("Use LibFFI","YES")
44− ,("Use Threads","YES")
45− ,("Use Debugging","NO")
46− ,("RTS expects libdw","NO")
47− ,("Project version","8.10.4")
48− ,("Project Git commit id","6a01e28f4204ec17c587931311711fa76e0ea08d")
49− ,("Booter version","8.6.5")
51− ,("Build platform","x86_64-unknown-linux")
52− ,("Host platform","x86_64-unknown-linux")
53− ,("Target platform","aarch64-unknown-linux")
54− ,("Have interpreter","YES")
55− ,("Object splitting supported","NO")
56− ,("Have native code generator","NO")
57− ,("Support dynamic-too","YES")
58− ,("Support parallel --make","YES")
59− ,("Support reexported-modules","YES")
60− ,("Support thinning and renaming package flags","YES")
61− ,("Support Backpack","YES")
62− ,("Requires unified installed package IDs","YES")
63− ,("Uses package keys","YES")
64− ,("Uses unit IDs","YES")
65− ,("Dynamic by default","NO")
66− ,("GHC Dynamic","NO")
67− ,("GHC Profiled","NO")
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.10.4-x86_64-linux/ghc/numeric-versiondeleted−1
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.10.4-x86_64-linux/ghc/supported-languagesdeleted−255
@@ -1,255 +0,0 @@
9−NoAlternativeLayoutRule
10−AlternativeLayoutRuleTransitional
11−NoAlternativeLayoutRuleTransitional
26−ConstrainedClassMethods
27−NoConstrainedClassMethods
54−DisambiguateRecordFields
55−NoDisambiguateRecordFields
63−NoDuplicateRecordFields
70−ExistentialQuantification
71−NoExistentialQuantification
77−NoExtendedDefaultRules
82−ForeignFunctionInterface
83−NoForeignFunctionInterface
84−FunctionalDependencies
85−NoFunctionalDependencies
91−NoGHCForeignImportPrim
92−GeneralizedNewtypeDeriving
93−NoGeneralizedNewtypeDeriving
94−GeneralisedNewtypeDeriving
95−NoGeneralisedNewtypeDeriving
101−NoImportQualifiedPost
105−NoIncoherentInstances
106−TypeFamilyDependencies
107−NoTypeFamilyDependencies
121−NoLiberalTypeSynonyms
125−NoMonadComprehensions
127−NoMonadFailDesugaring
132−MonomorphismRestriction
133−NoMonomorphismRestriction
134−MultiParamTypeClasses
135−NoMultiParamTypeClasses
150−NondecreasingIndentation
151−NoNondecreasingIndentation
157−NoOverlappingInstances
170−PartialTypeSignatures
171−NoPartialTypeSignatures
180−PolymorphicComponents
181−NoPolymorphicComponents
182−QuantifiedConstraints
183−NoQuantifiedConstraints
207−NoScopedTypeVariables
220−TemplateHaskellQuotes
221−NoTemplateHaskellQuotes
222−StandaloneKindSignatures
223−NoStandaloneKindSignatures
224−TraditionalRecordSyntax
225−NoTraditionalRecordSyntax
239−NoTypeSynonymInstances
245−NoUndecidableInstances
246−UndecidableSuperClasses
247−NoUndecidableSuperClasses
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.10.4-x86_64-linux/ghc/versiondeleted−1
@@ -1 +0,0 @@
1−The Glorious Glasgow Haskell Compilation System, version 8.10.4
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.10.4.20210212-x86_64-linux/ghc-pkg/dump-globaldeleted−1446
This diff is too big to show here.
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.10.4.20210212-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.10.4.20210212-x86_64-linux/ghc/infodeleted−69
This diff is too big to show here.
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.10.4.20210212-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.10.4.20210212-x86_64-linux/ghc/supported-languagesdeleted−255
This diff is too big to show here.
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.10.4.20210212-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.10.5-x86_64-linux/ghc-pkg/dump-globaldeleted−1443
This diff is too big to show here.
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.10.5-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.10.5-x86_64-linux/ghc/infodeleted−69
This diff is too big to show here.
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.10.5-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.10.5-x86_64-linux/ghc/supported-languagesdeleted−255
This diff is too big to show here.
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.10.5-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.10.6-x86_64-linux/ghc-pkg/dump-globaldeleted−1443
This diff is too big to show here.
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.10.6-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.10.6-x86_64-linux/ghc/infodeleted−67
This diff is too big to show here.
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.10.6-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.10.6-x86_64-linux/ghc/supported-languagesdeleted−255
This diff is too big to show here.
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.10.6-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.10.7-x86_64-linux/ghc-pkg/dump-globaldeleted−1443
This diff is too big to show here.
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.10.7-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.10.7-x86_64-linux/ghc/infodeleted−67
This diff is too big to show here.
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.10.7-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.10.7-x86_64-linux/ghc/supported-languagesdeleted−255
This diff is too big to show here.
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.10.7-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.8.4-x86_64-linux/ghc-pkg/dump-globaldeleted−1404
This diff is too big to show here.
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.8.4-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.8.4-x86_64-linux/ghc/infodeleted−55
This diff is too big to show here.
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.8.4-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.8.4-x86_64-linux/ghc/supported-languagesdeleted−247
This diff is too big to show here.
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-8.8.4-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-9.0.1-x86_64-linux/ghc-pkg/dump-globaldeleted−1485
This diff is too big to show here.
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-9.0.1-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-9.0.1-x86_64-linux/ghc/infodeleted−70
This diff is too big to show here.
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-9.0.1-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-9.0.1-x86_64-linux/ghc/supported-languagesdeleted−261
This diff is too big to show here.
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-9.0.1-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-9.2.4-x86_64-linux/ghc-pkg/dump-globaldeleted−1512
This diff is too big to show here.
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-9.2.4-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-9.2.4-x86_64-linux/ghc/infodeleted−66
This diff is too big to show here.
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-9.2.4-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-9.2.4-x86_64-linux/ghc/supported-languagesdeleted−268
This diff is too big to show here.
materialized/dummy-ghc/aarch64-unknown-linux-gnu-aarch64-unknown-linux-gnu-ghc-9.2.4-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.1-x86_64-darwin/ghc/info+1−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.1-x86_64-linux/ghc/info+1−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.2-x86_64-darwin/ghc-pkg/dump-globaldeleted−1626
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.2-x86_64-darwin/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.2-x86_64-darwin/ghc/infodeleted−67
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.2-x86_64-darwin/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.2-x86_64-darwin/ghc/supported-languagesdeleted−255
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.2-x86_64-darwin/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.2-x86_64-linux/ghc-pkg/dump-globaldeleted−1627
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.2-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.2-x86_64-linux/ghc/infodeleted−73
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.2-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.2-x86_64-linux/ghc/supported-languagesdeleted−255
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.2-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.3-x86_64-darwin/ghc-pkg/dump-globaldeleted−1638
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.3-x86_64-darwin/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.3-x86_64-darwin/ghc/infodeleted−69
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.3-x86_64-darwin/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.3-x86_64-darwin/ghc/supported-languagesdeleted−255
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.3-x86_64-darwin/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.3-x86_64-linux/ghc-pkg/dump-globaldeleted−1639
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.3-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.3-x86_64-linux/ghc/infodeleted−75
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.3-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.3-x86_64-linux/ghc/supported-languagesdeleted−255
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.3-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.4-x86_64-darwin/ghc-pkg/dump-globaldeleted−1638
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.4-x86_64-darwin/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.4-x86_64-darwin/ghc/infodeleted−75
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.4-x86_64-darwin/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.4-x86_64-darwin/ghc/supported-languagesdeleted−255
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.4-x86_64-darwin/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.4-x86_64-linux/ghc-pkg/dump-globaldeleted−1639
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.4-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.4-x86_64-linux/ghc/infodeleted−75
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.4-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.4-x86_64-linux/ghc/supported-languagesdeleted−255
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.4-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.4.20210212-x86_64-darwin/ghc-pkg/dump-globaldeleted−1642
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.4.20210212-x86_64-darwin/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.4.20210212-x86_64-darwin/ghc/infodeleted−69
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.4.20210212-x86_64-darwin/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.4.20210212-x86_64-darwin/ghc/supported-languagesdeleted−255
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.4.20210212-x86_64-darwin/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.4.20210212-x86_64-linux/ghc-pkg/dump-globaldeleted−1643
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.4.20210212-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.4.20210212-x86_64-linux/ghc/infodeleted−75
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.4.20210212-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.4.20210212-x86_64-linux/ghc/supported-languagesdeleted−255
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.4.20210212-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.5-x86_64-darwin/ghc-pkg/dump-globaldeleted−1638
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.5-x86_64-darwin/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.5-x86_64-darwin/ghc/infodeleted−75
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.5-x86_64-darwin/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.5-x86_64-darwin/ghc/supported-languagesdeleted−255
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.5-x86_64-darwin/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.5-x86_64-linux/ghc-pkg/dump-globaldeleted−1639
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.5-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.5-x86_64-linux/ghc/infodeleted−75
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.5-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.5-x86_64-linux/ghc/supported-languagesdeleted−255
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.5-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.6-x86_64-darwin/ghc-pkg/dump-globaldeleted−1638
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.6-x86_64-darwin/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.6-x86_64-darwin/ghc/infodeleted−75
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.6-x86_64-darwin/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.6-x86_64-darwin/ghc/supported-languagesdeleted−255
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.6-x86_64-darwin/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.6-x86_64-linux/ghc-pkg/dump-globaldeleted−1639
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.6-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.6-x86_64-linux/ghc/infodeleted−75
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.6-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.6-x86_64-linux/ghc/supported-languagesdeleted−255
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.6-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.7-aarch64-darwin/ghc-pkg/dump-globaldeleted−1639
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.7-aarch64-darwin/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.7-aarch64-darwin/ghc/infodeleted−73
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.7-aarch64-darwin/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.7-aarch64-darwin/ghc/supported-languagesdeleted−255
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.7-aarch64-darwin/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.7-aarch64-linux/ghc-pkg/dump-globaldeleted−1638
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.7-aarch64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.7-aarch64-linux/ghc/infodeleted−73
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.7-aarch64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.7-aarch64-linux/ghc/supported-languagesdeleted−255
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.7-aarch64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.7-x86_64-darwin/ghc-pkg/dump-globaldeleted−1639
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.7-x86_64-darwin/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.7-x86_64-darwin/ghc/infodeleted−75
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.7-x86_64-darwin/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.7-x86_64-darwin/ghc/supported-languagesdeleted−255
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.7-x86_64-darwin/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.7-x86_64-linux/ghc-pkg/dump-globaldeleted−1638
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.7-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.7-x86_64-linux/ghc/infodeleted−75
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.7-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.7-x86_64-linux/ghc/supported-languagesdeleted−255
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.10.7-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.6.5-x86_64-darwin/ghc/info−5
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.6.5-x86_64-linux/ghc/info−5
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.8.2-x86_64-darwin/ghc-pkg/dump-global+3−6
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.8.2-x86_64-darwin/ghc/info+1−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.8.2-x86_64-linux/ghc-pkg/dump-global+2−4
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.8.3-aarch64-linux/ghc/info+3−5
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.8.3-aarch64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.8.3-x86_64-darwin/ghc/info−5
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.8.3-x86_64-linux/ghc/info−5
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.8.4-aarch64-linux/ghc-pkg/dump-globaldeleted−1592
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.8.4-aarch64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.8.4-aarch64-linux/ghc/infodeleted−60
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.8.4-aarch64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.8.4-aarch64-linux/ghc/supported-languagesdeleted−247
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.8.4-aarch64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.8.4-x86_64-darwin/ghc-pkg/dump-globaldeleted−1591
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.8.4-x86_64-darwin/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.8.4-x86_64-darwin/ghc/infodeleted−62
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.8.4-x86_64-darwin/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.8.4-x86_64-darwin/ghc/supported-languagesdeleted−247
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.8.4-x86_64-darwin/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.8.4-x86_64-linux/ghc-pkg/dump-globaldeleted−1592
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.8.4-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.8.4-x86_64-linux/ghc/infodeleted−62
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.8.4-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.8.4-x86_64-linux/ghc/supported-languagesdeleted−247
This diff is too big to show here.
materialized/dummy-ghc/ghc-8.8.4-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.1-aarch64-darwin/ghc-pkg/dump-globaldeleted−1759
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.1-aarch64-darwin/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.1-aarch64-darwin/ghc/infodeleted−74
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.1-aarch64-darwin/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.1-aarch64-darwin/ghc/supported-languagesdeleted−261
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.1-aarch64-darwin/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.1-aarch64-linux/ghc-pkg/dump-globaldeleted−1760
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.1-aarch64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.1-aarch64-linux/ghc/infodeleted−74
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.1-aarch64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.1-aarch64-linux/ghc/supported-languagesdeleted−261
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.1-aarch64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.1-x86_64-darwin/ghc-pkg/dump-globaldeleted−1759
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.1-x86_64-darwin/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.1-x86_64-darwin/ghc/infodeleted−76
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.1-x86_64-darwin/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.1-x86_64-darwin/ghc/supported-languagesdeleted−261
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.1-x86_64-darwin/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.1-x86_64-linux/ghc-pkg/dump-globaldeleted−1760
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.1-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.1-x86_64-linux/ghc/infodeleted−76
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.1-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.1-x86_64-linux/ghc/supported-languagesdeleted−261
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.1-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.2-aarch64-darwin/ghc-pkg/dump-globaldeleted−1766
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.2-aarch64-darwin/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.2-aarch64-darwin/ghc/infodeleted−74
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.2-aarch64-darwin/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.2-aarch64-darwin/ghc/supported-languagesdeleted−261
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.2-aarch64-darwin/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.2-aarch64-linux/ghc-pkg/dump-globaldeleted−1767
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.2-aarch64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.2-aarch64-linux/ghc/infodeleted−74
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.2-aarch64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.2-aarch64-linux/ghc/supported-languagesdeleted−261
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.2-aarch64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.2-x86_64-darwin/ghc-pkg/dump-globaldeleted−1766
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.2-x86_64-darwin/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.2-x86_64-darwin/ghc/infodeleted−76
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.2-x86_64-darwin/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.2-x86_64-darwin/ghc/supported-languagesdeleted−261
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.2-x86_64-darwin/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.2-x86_64-linux/ghc-pkg/dump-globaldeleted−1767
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.2-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.2-x86_64-linux/ghc/infodeleted−76
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.2-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.2-x86_64-linux/ghc/supported-languagesdeleted−261
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.0.2-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.1-aarch64-darwin/ghc-pkg/dump-globaldeleted−1826
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.1-aarch64-darwin/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.1-aarch64-darwin/ghc/infodeleted−73
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.1-aarch64-darwin/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.1-aarch64-darwin/ghc/supported-languagesdeleted−266
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.1-aarch64-darwin/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.1-aarch64-linux/ghc-pkg/dump-globaldeleted−1826
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.1-aarch64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.1-aarch64-linux/ghc/infodeleted−73
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.1-aarch64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.1-aarch64-linux/ghc/supported-languagesdeleted−266
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.1-aarch64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.1-x86_64-darwin/ghc-pkg/dump-globaldeleted−1826
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.1-x86_64-darwin/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.1-x86_64-darwin/ghc/infodeleted−73
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.1-x86_64-darwin/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.1-x86_64-darwin/ghc/supported-languagesdeleted−266
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.1-x86_64-darwin/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.1-x86_64-linux/ghc-pkg/dump-globaldeleted−1826
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.1-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.1-x86_64-linux/ghc/infodeleted−73
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.1-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.1-x86_64-linux/ghc/supported-languagesdeleted−266
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.1-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.2-aarch64-darwin/ghc-pkg/dump-globaldeleted−1834
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.2-aarch64-darwin/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.2-aarch64-darwin/ghc/infodeleted−72
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.2-aarch64-darwin/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.2-aarch64-darwin/ghc/supported-languagesdeleted−266
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.2-aarch64-darwin/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.2-aarch64-linux/ghc-pkg/dump-globaldeleted−1834
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.2-aarch64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.2-aarch64-linux/ghc/infodeleted−72
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.2-aarch64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.2-aarch64-linux/ghc/supported-languagesdeleted−266
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.2-aarch64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.2-x86_64-darwin/ghc-pkg/dump-globaldeleted−1834
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.2-x86_64-darwin/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.2-x86_64-darwin/ghc/infodeleted−72
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.2-x86_64-darwin/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.2-x86_64-darwin/ghc/supported-languagesdeleted−266
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.2-x86_64-darwin/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.2-x86_64-linux/ghc-pkg/dump-globaldeleted−1834
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.2-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.2-x86_64-linux/ghc/infodeleted−72
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.2-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.2-x86_64-linux/ghc/supported-languagesdeleted−266
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.2-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.3-aarch64-darwin/ghc-pkg/dump-globaldeleted−1834
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.3-aarch64-darwin/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.3-aarch64-darwin/ghc/infodeleted−72
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.3-aarch64-darwin/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.3-aarch64-darwin/ghc/supported-languagesdeleted−266
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.3-aarch64-darwin/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.3-aarch64-linux/ghc-pkg/dump-globaldeleted−1834
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.3-aarch64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.3-aarch64-linux/ghc/infodeleted−72
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.3-aarch64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.3-aarch64-linux/ghc/supported-languagesdeleted−266
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.3-aarch64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.3-x86_64-darwin/ghc-pkg/dump-globaldeleted−1834
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.3-x86_64-darwin/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.3-x86_64-darwin/ghc/infodeleted−72
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.3-x86_64-darwin/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.3-x86_64-darwin/ghc/supported-languagesdeleted−266
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.3-x86_64-darwin/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.3-x86_64-linux/ghc-pkg/dump-globaldeleted−1834
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.3-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.3-x86_64-linux/ghc/infodeleted−72
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.3-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.3-x86_64-linux/ghc/supported-languagesdeleted−266
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.3-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.4-aarch64-darwin/ghc-pkg/dump-globaldeleted−1834
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.4-aarch64-darwin/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.4-aarch64-darwin/ghc/infodeleted−72
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.4-aarch64-darwin/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.4-aarch64-darwin/ghc/supported-languagesdeleted−268
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.4-aarch64-darwin/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.4-aarch64-linux/ghc-pkg/dump-globaldeleted−1833
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.4-aarch64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.4-aarch64-linux/ghc/infodeleted−72
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.4-aarch64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.4-aarch64-linux/ghc/supported-languagesdeleted−268
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.4-aarch64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.4-x86_64-darwin/ghc-pkg/dump-globaldeleted−1834
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.4-x86_64-darwin/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.4-x86_64-darwin/ghc/infodeleted−72
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.4-x86_64-darwin/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.4-x86_64-darwin/ghc/supported-languagesdeleted−268
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.4-x86_64-darwin/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.4-x86_64-linux/ghc-pkg/dump-globaldeleted−1833
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.4-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.4-x86_64-linux/ghc/infodeleted−72
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.4-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.4-x86_64-linux/ghc/supported-languagesdeleted−268
This diff is too big to show here.
materialized/dummy-ghc/ghc-9.2.4-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.4-x86_64-darwin/ghc-pkg/dump-globaldeleted−1328
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.4-x86_64-darwin/ghc-pkg/numeric-ghcjs-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.4-x86_64-darwin/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.4-x86_64-darwin/ghc/infodeleted−71
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.4-x86_64-darwin/ghc/numeric-ghc-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.4-x86_64-darwin/ghc/numeric-ghcjs-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.4-x86_64-darwin/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.4-x86_64-darwin/ghc/supported-languagesdeleted−255
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.4-x86_64-darwin/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.4-x86_64-linux/ghc-pkg/dump-globaldeleted−1328
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.4-x86_64-linux/ghc-pkg/numeric-ghcjs-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.4-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.4-x86_64-linux/ghc/infodeleted−71
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.4-x86_64-linux/ghc/numeric-ghc-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.4-x86_64-linux/ghc/numeric-ghcjs-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.4-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.4-x86_64-linux/ghc/supported-languagesdeleted−255
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.4-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.5-x86_64-darwin/ghc-pkg/dump-globaldeleted−1330
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.5-x86_64-darwin/ghc-pkg/numeric-ghcjs-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.5-x86_64-darwin/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.5-x86_64-darwin/ghc/infodeleted−71
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.5-x86_64-darwin/ghc/numeric-ghc-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.5-x86_64-darwin/ghc/numeric-ghcjs-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.5-x86_64-darwin/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.5-x86_64-darwin/ghc/supported-languagesdeleted−255
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.5-x86_64-darwin/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.5-x86_64-linux/ghc-pkg/dump-globaldeleted−1330
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.5-x86_64-linux/ghc-pkg/numeric-ghcjs-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.5-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.5-x86_64-linux/ghc/infodeleted−71
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.5-x86_64-linux/ghc/numeric-ghc-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.5-x86_64-linux/ghc/numeric-ghcjs-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.5-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.5-x86_64-linux/ghc/supported-languagesdeleted−255
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.5-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.6-x86_64-darwin/ghc-pkg/dump-globaldeleted−1330
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.6-x86_64-darwin/ghc-pkg/numeric-ghcjs-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.6-x86_64-darwin/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.6-x86_64-darwin/ghc/infodeleted−71
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.6-x86_64-darwin/ghc/numeric-ghc-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.6-x86_64-darwin/ghc/numeric-ghcjs-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.6-x86_64-darwin/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.6-x86_64-darwin/ghc/supported-languagesdeleted−255
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.6-x86_64-darwin/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.6-x86_64-linux/ghc-pkg/dump-globaldeleted−1330
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.6-x86_64-linux/ghc-pkg/numeric-ghcjs-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.6-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.6-x86_64-linux/ghc/infodeleted−71
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.6-x86_64-linux/ghc/numeric-ghc-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.6-x86_64-linux/ghc/numeric-ghcjs-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.6-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.6-x86_64-linux/ghc/supported-languagesdeleted−255
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.6-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.7-x86_64-darwin/ghc-pkg/dump-globaldeleted−1330
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.7-x86_64-darwin/ghc-pkg/numeric-ghcjs-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.7-x86_64-darwin/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.7-x86_64-darwin/ghc/infodeleted−71
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.7-x86_64-darwin/ghc/numeric-ghc-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.7-x86_64-darwin/ghc/numeric-ghcjs-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.7-x86_64-darwin/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.7-x86_64-darwin/ghc/supported-languagesdeleted−255
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.7-x86_64-darwin/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.7-x86_64-linux/ghc-pkg/dump-globaldeleted−1330
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.7-x86_64-linux/ghc-pkg/numeric-ghcjs-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.7-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.7-x86_64-linux/ghc/infodeleted−71
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.7-x86_64-linux/ghc/numeric-ghc-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.7-x86_64-linux/ghc/numeric-ghcjs-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.7-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.7-x86_64-linux/ghc/supported-languagesdeleted−255
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.10.7-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.6.5-x86_64-darwin/ghc-pkg/dump-globaldeleted−1183
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.6.5-x86_64-darwin/ghc-pkg/numeric-ghcjs-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.6.5-x86_64-darwin/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.6.5-x86_64-darwin/ghc/infodeleted−58
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.6.5-x86_64-darwin/ghc/numeric-ghc-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.6.5-x86_64-darwin/ghc/numeric-ghcjs-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.6.5-x86_64-darwin/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.6.5-x86_64-darwin/ghc/supported-languagesdeleted−247
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.6.5-x86_64-linux/ghc-pkg/dump-globaldeleted−1122
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.6.5-x86_64-linux/ghc-pkg/numeric-ghcjs-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.6.5-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.6.5-x86_64-linux/ghc/infodeleted−59
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.6.5-x86_64-linux/ghc/numeric-ghc-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.6.5-x86_64-linux/ghc/numeric-ghcjs-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.6.5-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.6.5-x86_64-linux/ghc/supported-languagesdeleted−247
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.6.5-x86_64-linux/ghc/version+1−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.8.3-x86_64-darwin/ghc-pkg/dump-globaldeleted−1321
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.8.3-x86_64-darwin/ghc-pkg/numeric-ghcjs-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.8.3-x86_64-darwin/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.8.3-x86_64-darwin/ghc/infodeleted−59
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.8.3-x86_64-darwin/ghc/numeric-ghc-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.8.3-x86_64-darwin/ghc/numeric-ghcjs-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.8.3-x86_64-darwin/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.8.3-x86_64-darwin/ghc/supported-languagesdeleted−247
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.8.3-x86_64-linux/ghc-pkg/dump-globaldeleted−1321
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.8.3-x86_64-linux/ghc-pkg/numeric-ghcjs-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.8.3-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.8.3-x86_64-linux/ghc/infodeleted−59
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.8.3-x86_64-linux/ghc/numeric-ghc-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.8.3-x86_64-linux/ghc/numeric-ghcjs-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.8.3-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.8.3-x86_64-linux/ghc/supported-languagesdeleted−247
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.8.3-x86_64-linux/ghc/version+1−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.8.4-x86_64-linux/ghc-pkg/dump-globaldeleted−1321
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.8.4-x86_64-linux/ghc-pkg/numeric-ghcjs-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.8.4-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.8.4-x86_64-linux/ghc/infodeleted−59
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.8.4-x86_64-linux/ghc/numeric-ghc-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.8.4-x86_64-linux/ghc/numeric-ghcjs-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.8.4-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.8.4-x86_64-linux/ghc/supported-languagesdeleted−247
This diff is too big to show here.
materialized/dummy-ghc/js-unknown-ghcjs-js-unknown-ghcjs-ghc-8.8.4-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.10.1-x86_64-linux/ghc/info+1−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.10.2-x86_64-linux/ghc-pkg/dump-globaldeleted−1591
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.10.2-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.10.2-x86_64-linux/ghc/infodeleted−67
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.10.2-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.10.2-x86_64-linux/ghc/supported-languagesdeleted−255
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.10.2-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.10.3-x86_64-linux/ghc-pkg/dump-globaldeleted−1603
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.10.3-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.10.3-x86_64-linux/ghc/infodeleted−69
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.10.3-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.10.3-x86_64-linux/ghc/supported-languagesdeleted−255
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.10.3-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.10.4-x86_64-linux/ghc-pkg/dump-globaldeleted−1638
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.10.4-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.10.4-x86_64-linux/ghc/infodeleted−69
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.10.4-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.10.4-x86_64-linux/ghc/supported-languagesdeleted−255
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.10.4-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.10.4.20210212-x86_64-linux/ghc-pkg/dump-globaldeleted−1607
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.10.4.20210212-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.10.4.20210212-x86_64-linux/ghc/infodeleted−69
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.10.4.20210212-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.10.4.20210212-x86_64-linux/ghc/supported-languagesdeleted−255
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.10.4.20210212-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.10.5-x86_64-linux/ghc-pkg/dump-globaldeleted−1638
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.10.5-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.10.5-x86_64-linux/ghc/infodeleted−69
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.10.5-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.10.5-x86_64-linux/ghc/supported-languagesdeleted−255
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.10.5-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.10.6-x86_64-linux/ghc-pkg/dump-globaldeleted−1638
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.10.6-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.10.6-x86_64-linux/ghc/infodeleted−69
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.10.6-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.10.6-x86_64-linux/ghc/supported-languagesdeleted−255
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.10.6-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.10.7-x86_64-linux/ghc-pkg/dump-globaldeleted−1638
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.10.7-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.10.7-x86_64-linux/ghc/infodeleted−69
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.10.7-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.10.7-x86_64-linux/ghc/supported-languagesdeleted−255
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.10.7-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.6.5-x86_64-linux/ghc-pkg/dump-global+2−31
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.8.2-x86_64-linux/ghc-pkg/dump-globaldeleted−1590
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.8.2-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.8.2-x86_64-linux/ghc/infodeleted−57
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.8.2-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.8.2-x86_64-linux/ghc/supported-languagesdeleted−247
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.8.2-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.8.3-x86_64-linux/ghc-pkg/dump-global+3−37
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.8.4-x86_64-linux/ghc-pkg/dump-globaldeleted−1591
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.8.4-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.8.4-x86_64-linux/ghc/infodeleted−57
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.8.4-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.8.4-x86_64-linux/ghc/supported-languagesdeleted−247
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-8.8.4-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-9.0.1-x86_64-linux/ghc-pkg/dump-globaldeleted−1722
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-9.0.1-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-9.0.1-x86_64-linux/ghc/infodeleted−70
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-9.0.1-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-9.0.1-x86_64-linux/ghc/supported-languagesdeleted−261
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-9.0.1-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-9.0.2-x86_64-linux/ghc-pkg/dump-globaldeleted−1729
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-9.0.2-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-9.0.2-x86_64-linux/ghc/infodeleted−70
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-9.0.2-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-9.0.2-x86_64-linux/ghc/supported-languagesdeleted−261
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-9.0.2-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-9.2.1-x86_64-linux/ghc-pkg/dump-globaldeleted−1788
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-9.2.1-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-9.2.1-x86_64-linux/ghc/infodeleted−67
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-9.2.1-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-9.2.1-x86_64-linux/ghc/supported-languagesdeleted−266
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-9.2.1-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-9.2.2-x86_64-linux/ghc-pkg/dump-globaldeleted−1796
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-9.2.2-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-9.2.2-x86_64-linux/ghc/infodeleted−66
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-9.2.2-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-9.2.2-x86_64-linux/ghc/supported-languagesdeleted−266
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-9.2.2-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-9.2.3-x86_64-linux/ghc-pkg/dump-globaldeleted−1796
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-9.2.3-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-9.2.3-x86_64-linux/ghc/infodeleted−66
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-9.2.3-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-9.2.3-x86_64-linux/ghc/supported-languagesdeleted−266
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-9.2.3-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-9.2.4-x86_64-linux/ghc-pkg/dump-globaldeleted−1796
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-9.2.4-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-9.2.4-x86_64-linux/ghc/infodeleted−66
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-9.2.4-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-9.2.4-x86_64-linux/ghc/supported-languagesdeleted−268
This diff is too big to show here.
materialized/dummy-ghc/x86_64-unknown-linux-musl-x86_64-unknown-linux-musl-ghc-9.2.4-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.2-x86_64-linux/ghc-pkg/dump-globaldeleted−1437
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.2-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.2-x86_64-linux/ghc/infodeleted−67
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.2-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.2-x86_64-linux/ghc/supported-languagesdeleted−255
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.2-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.3-x86_64-linux/ghc-pkg/dump-globaldeleted−1449
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.3-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.3-x86_64-linux/ghc/infodeleted−69
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.3-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.3-x86_64-linux/ghc/supported-languagesdeleted−255
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.3-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.4-x86_64-darwin/ghc-pkg/dump-globaldeleted−1449
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.4-x86_64-darwin/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.4-x86_64-darwin/ghc/infodeleted−69
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.4-x86_64-darwin/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.4-x86_64-darwin/ghc/supported-languagesdeleted−255
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.4-x86_64-darwin/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.4-x86_64-linux/ghc-pkg/dump-globaldeleted−1449
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.4-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.4-x86_64-linux/ghc/infodeleted−69
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.4-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.4-x86_64-linux/ghc/supported-languagesdeleted−255
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.4-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.4.20210212-x86_64-linux/ghc-pkg/dump-globaldeleted−1451
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.4.20210212-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.4.20210212-x86_64-linux/ghc/infodeleted−69
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.4.20210212-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.4.20210212-x86_64-linux/ghc/supported-languagesdeleted−255
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.4.20210212-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.5-x86_64-darwin/ghc-pkg/dump-globaldeleted−1449
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.5-x86_64-darwin/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.5-x86_64-darwin/ghc/infodeleted−69
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.5-x86_64-darwin/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.5-x86_64-darwin/ghc/supported-languagesdeleted−255
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.5-x86_64-darwin/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.5-x86_64-linux/ghc-pkg/dump-globaldeleted−1449
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.5-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.5-x86_64-linux/ghc/infodeleted−69
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.5-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.5-x86_64-linux/ghc/supported-languagesdeleted−255
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.5-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.6-x86_64-darwin/ghc-pkg/dump-globaldeleted−1450
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.6-x86_64-darwin/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.6-x86_64-darwin/ghc/infodeleted−69
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.6-x86_64-darwin/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.6-x86_64-darwin/ghc/supported-languagesdeleted−255
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.6-x86_64-darwin/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.6-x86_64-linux/ghc-pkg/dump-globaldeleted−1450
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.6-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.6-x86_64-linux/ghc/infodeleted−69
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.6-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.6-x86_64-linux/ghc/supported-languagesdeleted−255
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.6-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.7-x86_64-darwin/ghc-pkg/dump-globaldeleted−1450
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.7-x86_64-darwin/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.7-x86_64-darwin/ghc/infodeleted−69
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.7-x86_64-darwin/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.7-x86_64-darwin/ghc/supported-languagesdeleted−255
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.7-x86_64-darwin/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.7-x86_64-linux/ghc-pkg/dump-globaldeleted−1450
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.7-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.7-x86_64-linux/ghc/infodeleted−69
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.7-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.7-x86_64-linux/ghc/supported-languagesdeleted−255
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.10.7-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.8.2-x86_64-darwin/ghc-pkg/dump-globaldeleted−1411
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.8.2-x86_64-darwin/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.8.2-x86_64-darwin/ghc/infodeleted−57
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.8.2-x86_64-darwin/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.8.2-x86_64-darwin/ghc/supported-languagesdeleted−247
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.8.2-x86_64-darwin/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.8.2-x86_64-linux/ghc-pkg/dump-globaldeleted−1411
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.8.2-x86_64-linux/ghc-pkg/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.8.2-x86_64-linux/ghc/infodeleted−57
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.8.2-x86_64-linux/ghc/numeric-versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.8.2-x86_64-linux/ghc/supported-languagesdeleted−247
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.8.2-x86_64-linux/ghc/versiondeleted−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.8.3-x86_64-darwin/ghc-pkg/dump-global−1411
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.8.3-x86_64-darwin/ghc-pkg/version−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.8.3-x86_64-darwin/ghc/info−57
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.8.3-x86_64-darwin/ghc/numeric-version−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.8.3-x86_64-darwin/ghc/supported-languages−247
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.8.3-x86_64-darwin/ghc/version−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.8.4-x86_64-darwin/ghc-pkg/dump-global−1411
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.8.4-x86_64-darwin/ghc-pkg/version−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.8.4-x86_64-darwin/ghc/info−57
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.8.4-x86_64-darwin/ghc/numeric-version−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.8.4-x86_64-darwin/ghc/supported-languages−247
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.8.4-x86_64-darwin/ghc/version−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.8.4-x86_64-linux/ghc-pkg/dump-global−1411
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.8.4-x86_64-linux/ghc-pkg/version−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.8.4-x86_64-linux/ghc/info−57
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.8.4-x86_64-linux/ghc/numeric-version−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.8.4-x86_64-linux/ghc/supported-languages−247
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-8.8.4-x86_64-linux/ghc/version−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.0.1-x86_64-darwin/ghc-pkg/dump-global−1504
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.0.1-x86_64-darwin/ghc-pkg/version−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.0.1-x86_64-darwin/ghc/info−70
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.0.1-x86_64-darwin/ghc/numeric-version−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.0.1-x86_64-darwin/ghc/supported-languages−261
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.0.1-x86_64-darwin/ghc/version−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.0.1-x86_64-linux/ghc-pkg/dump-global−1504
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.0.1-x86_64-linux/ghc-pkg/version−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.0.1-x86_64-linux/ghc/info−70
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.0.1-x86_64-linux/ghc/numeric-version−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.0.1-x86_64-linux/ghc/supported-languages−261
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.0.1-x86_64-linux/ghc/version−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.0.2-x86_64-darwin/ghc-pkg/dump-global−1512
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.0.2-x86_64-darwin/ghc-pkg/version−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.0.2-x86_64-darwin/ghc/info−70
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.0.2-x86_64-darwin/ghc/numeric-version−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.0.2-x86_64-darwin/ghc/supported-languages−261
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.0.2-x86_64-darwin/ghc/version−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.0.2-x86_64-linux/ghc-pkg/dump-global−1512
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.0.2-x86_64-linux/ghc-pkg/version−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.0.2-x86_64-linux/ghc/info−70
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.0.2-x86_64-linux/ghc/numeric-version−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.0.2-x86_64-linux/ghc/supported-languages−261
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.0.2-x86_64-linux/ghc/version−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.1-x86_64-darwin/ghc-pkg/dump-global−1522
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.1-x86_64-darwin/ghc-pkg/version−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.1-x86_64-darwin/ghc/info−67
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.1-x86_64-darwin/ghc/numeric-version−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.1-x86_64-darwin/ghc/supported-languages−266
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.1-x86_64-darwin/ghc/version−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.1-x86_64-linux/ghc-pkg/dump-global−1522
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.1-x86_64-linux/ghc-pkg/version−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.1-x86_64-linux/ghc/info−67
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.1-x86_64-linux/ghc/numeric-version−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.1-x86_64-linux/ghc/supported-languages−266
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.1-x86_64-linux/ghc/version−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.2-x86_64-darwin/ghc-pkg/dump-global−1533
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.2-x86_64-darwin/ghc-pkg/version−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.2-x86_64-darwin/ghc/info−66
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.2-x86_64-darwin/ghc/numeric-version−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.2-x86_64-darwin/ghc/supported-languages−266
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.2-x86_64-darwin/ghc/version−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.2-x86_64-linux/ghc-pkg/dump-global−1533
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.2-x86_64-linux/ghc-pkg/version−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.2-x86_64-linux/ghc/info−66
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.2-x86_64-linux/ghc/numeric-version−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.2-x86_64-linux/ghc/supported-languages−266
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.2-x86_64-linux/ghc/version−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.3-x86_64-darwin/ghc-pkg/dump-global−1533
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.3-x86_64-darwin/ghc-pkg/version−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.3-x86_64-darwin/ghc/info−66
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.3-x86_64-darwin/ghc/numeric-version−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.3-x86_64-darwin/ghc/supported-languages−266
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.3-x86_64-darwin/ghc/version−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.3-x86_64-linux/ghc-pkg/dump-global−1533
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.3-x86_64-linux/ghc-pkg/version−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.3-x86_64-linux/ghc/info−66
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.3-x86_64-linux/ghc/numeric-version−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.3-x86_64-linux/ghc/supported-languages−266
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.3-x86_64-linux/ghc/version−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.4-x86_64-darwin/ghc-pkg/dump-global−1533
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.4-x86_64-darwin/ghc-pkg/version−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.4-x86_64-darwin/ghc/info−66
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.4-x86_64-darwin/ghc/numeric-version−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.4-x86_64-darwin/ghc/supported-languages−268
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.4-x86_64-darwin/ghc/version−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.4-x86_64-linux/ghc-pkg/dump-global−1533
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.4-x86_64-linux/ghc-pkg/version−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.4-x86_64-linux/ghc/info−66
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.4-x86_64-linux/ghc/numeric-version−1
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.4-x86_64-linux/ghc/supported-languages−268
This diff is too big to show here.
materialized/dummy-ghc/x86_64-w64-mingw32-x86_64-w64-mingw32-ghc-9.2.4-x86_64-linux/ghc/version−1
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8101/Win32.nix−46
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8101/base.nix−43
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8101/ghc-heap.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8101/ghc-prim.nix−40
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8101/integer-gmp.nix−33
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8101/template-haskell.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8102/Win32.nix−46
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8102/base.nix−43
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8102/ghc-boot.nix−39
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8102/ghc-heap.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8102/ghc-prim.nix−43
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8102/ghc.nix−62
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8102/ghci.nix−44
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8102/hpc.nix−38
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8102/integer-gmp.nix−33
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8102/iserv-proxy.nix−45
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8102/iserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8102/libiserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8102/remote-iserv.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8102/template-haskell.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8103/Win32.nix−46
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8103/base.nix−43
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8103/bytestring.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8103/ghc-boot.nix−39
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8103/ghc-heap.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8103/ghc-prim.nix−43
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8103/ghc.nix−62
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8103/ghci.nix−44
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8103/hpc.nix−38
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8103/integer-gmp.nix−33
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8103/iserv-proxy.nix−45
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8103/iserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8103/libiserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8103/remote-iserv.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8103/template-haskell.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8104/Win32.nix−46
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8104/base.nix−43
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8104/bytestring.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8104/ghc-boot.nix−39
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8104/ghc-heap.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8104/ghc-prim.nix−43
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8104/ghc.nix−62
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8104/ghci.nix−44
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8104/hpc.nix−38
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8104/integer-gmp.nix−33
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8104/iserv-proxy.nix−45
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8104/iserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8104/libiserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8104/remote-iserv.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8104/template-haskell.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc810420210212/Win32.nix−46
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc810420210212/base.nix−43
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc810420210212/bytestring.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc810420210212/ghc-boot.nix−39
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc810420210212/ghc-heap.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc810420210212/ghc-prim.nix−43
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc810420210212/ghc.nix−62
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc810420210212/ghci.nix−44
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc810420210212/hpc.nix−38
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc810420210212/integer-gmp.nix−33
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc810420210212/iserv-proxy.nix−45
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc810420210212/iserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc810420210212/libiserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc810420210212/remote-iserv.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc810420210212/template-haskell.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8105-aarch64/Win32.nix−46
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8105-aarch64/base.nix−43
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8105-aarch64/bytestring.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8105-aarch64/ghc-boot.nix−39
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8105-aarch64/ghc-heap.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8105-aarch64/ghc-prim.nix−44
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8105-aarch64/ghc.nix−62
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8105-aarch64/ghci.nix−45
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8105-aarch64/hpc.nix−38
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8105-aarch64/integer-gmp.nix−33
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8105-aarch64/iserv-proxy.nix−45
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8105-aarch64/iserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8105-aarch64/libiserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8105-aarch64/remote-iserv.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8105-aarch64/template-haskell.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8105/Win32.nix−46
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8105/base.nix−43
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8105/bytestring.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8105/ghc-boot.nix−39
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8105/ghc-heap.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8105/ghc-prim.nix−43
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8105/ghc.nix−62
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8105/ghci.nix−45
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8105/hpc.nix−38
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8105/integer-gmp.nix−33
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8105/iserv-proxy.nix−45
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8105/iserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8105/libiserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8105/remote-iserv.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8105/template-haskell.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8106-aarch64/Win32.nix−46
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8106-aarch64/base.nix−43
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8106-aarch64/bytestring.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8106-aarch64/ghc-boot.nix−39
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8106-aarch64/ghc-heap.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8106-aarch64/ghc-prim.nix−44
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8106-aarch64/ghc.nix−62
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8106-aarch64/ghci.nix−45
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8106-aarch64/hpc.nix−38
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8106-aarch64/integer-gmp.nix−33
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8106-aarch64/iserv-proxy.nix−45
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8106-aarch64/iserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8106-aarch64/libiserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8106-aarch64/remote-iserv.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8106-aarch64/template-haskell.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8106/Win32.nix−46
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8106/base.nix−43
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8106/bytestring.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8106/ghc-boot.nix−39
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8106/ghc-heap.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8106/ghc-prim.nix−43
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8106/ghc.nix−62
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8106/ghci.nix−45
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8106/hpc.nix−38
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8106/integer-gmp.nix−33
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8106/iserv-proxy.nix−45
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8106/iserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8106/libiserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8106/remote-iserv.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8106/template-haskell.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8107-aarch64/Win32.nix−46
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8107-aarch64/base.nix−43
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8107-aarch64/bytestring.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8107-aarch64/ghc-boot.nix−39
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8107-aarch64/ghc-heap.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8107-aarch64/ghc-prim.nix−44
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8107-aarch64/ghc.nix−62
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8107-aarch64/ghci.nix−45
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8107-aarch64/hpc.nix−38
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8107-aarch64/integer-gmp.nix−33
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8107-aarch64/iserv-proxy.nix−45
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8107-aarch64/iserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8107-aarch64/libiserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8107-aarch64/remote-iserv.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8107-aarch64/template-haskell.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8107/Win32.nix−46
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8107/base.nix−43
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8107/bytestring.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8107/ghc-boot.nix−39
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8107/ghc-heap.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8107/ghc-prim.nix−43
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8107/ghc.nix−62
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8107/ghci.nix−45
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8107/hpc.nix−38
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8107/integer-gmp.nix−33
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8107/iserv-proxy.nix−45
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8107/iserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8107/libiserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8107/remote-iserv.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc8107/template-haskell.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc844/ghc-boot.nix−38
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc844/ghc.nix−58
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc844/ghci.nix−43
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc844/hpc.nix−37
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc844/iserv-proxy.nix−45
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc844/iserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc844/libiserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc844/remote-iserv.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc863/Win32.nix−46
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc863/base.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc863/ghc-boot.nix−38
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc863/ghc-heap.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc863/ghc-prim.nix−40
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc863/ghc.nix−59
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc863/ghci.nix−44
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc863/hpc.nix−37
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc863/integer-gmp.nix−33
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc863/iserv-proxy.nix−45
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc863/iserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc863/libiserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc863/remote-iserv.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc863/template-haskell.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc864/Win32.nix−46
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc864/base.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc864/ghc-boot.nix−38
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc864/ghc-heap.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc864/ghc-prim.nix−40
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc864/ghc.nix−60
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc864/ghci.nix−44
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc864/hpc.nix−37
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc864/integer-gmp.nix−33
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc864/iserv-proxy.nix−45
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc864/iserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc864/libiserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc864/remote-iserv.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc864/template-haskell.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc865/Win32.nix−46
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc865/base.nix+1−1
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc865/ghc-heap.nix+1−1
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc865/ghc-prim.nix−40
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc865/ghc.nix+4−1
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc865/integer-gmp.nix−33
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc865/iserv-proxy.nix+1−1
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc865/template-haskell.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc882/Win32.nix−46
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc882/base.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc882/ghc-boot.nix−38
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc882/ghc-heap.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc882/ghc-prim.nix−40
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc882/ghc.nix−61
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc882/ghci.nix−44
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc882/hpc.nix−37
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc882/integer-gmp.nix−33
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc882/iserv-proxy.nix−45
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc882/iserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc882/libiserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc882/remote-iserv.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc882/template-haskell.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc883-aarch64/Win32.nix−46
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc883-aarch64/base.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc883-aarch64/ghc-boot.nix−38
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc883-aarch64/ghc-heap.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc883-aarch64/ghc-prim.nix−40
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc883-aarch64/ghc.nix−61
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc883-aarch64/ghci.nix−44
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc883-aarch64/hpc.nix−37
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc883-aarch64/integer-gmp.nix−33
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc883-aarch64/iserv-proxy.nix−45
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc883-aarch64/iserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc883-aarch64/libiserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc883-aarch64/remote-iserv.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc883-aarch64/template-haskell.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc883/Win32.nix−46
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc883/base.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc883/ghc-heap.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc883/ghc-prim.nix−40
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc883/ghc.nix+4
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc883/integer-gmp.nix−33
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc883/iserv-proxy.nix+1−1
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc883/template-haskell.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc884-aarch64/Win32.nix−46
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc884-aarch64/base.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc884-aarch64/bytestring.nix−80
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc884-aarch64/ghc-boot.nix−38
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc884-aarch64/ghc-heap.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc884-aarch64/ghc-prim.nix−43
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc884-aarch64/ghc.nix−61
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc884-aarch64/ghci.nix−44
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc884-aarch64/hpc.nix−37
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc884-aarch64/integer-gmp.nix−33
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc884-aarch64/iserv-proxy.nix−45
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc884-aarch64/iserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc884-aarch64/libiserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc884-aarch64/remote-iserv.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc884-aarch64/template-haskell.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc884/Win32.nix−46
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc884/base.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc884/bytestring.nix−80
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc884/ghc-boot.nix−38
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc884/ghc-heap.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc884/ghc-prim.nix−43
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc884/ghc.nix−61
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc884/ghci.nix−44
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc884/hpc.nix−37
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc884/integer-gmp.nix−33
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc884/iserv-proxy.nix−45
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc884/iserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc884/libiserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc884/remote-iserv.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc884/template-haskell.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc901-aarch64/Win32.nix−49
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc901-aarch64/base.nix−48
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc901-aarch64/bytestring.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc901-aarch64/ghc-bignum.nix−37
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc901-aarch64/ghc-boot.nix−39
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc901-aarch64/ghc-heap.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc901-aarch64/ghc-prim.nix−44
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc901-aarch64/ghc.nix−61
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc901-aarch64/ghci.nix−44
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc901-aarch64/hpc.nix−38
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc901-aarch64/integer-gmp.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc901-aarch64/iserv-proxy.nix−45
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc901-aarch64/iserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc901-aarch64/libiserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc901-aarch64/remote-iserv.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc901-aarch64/template-haskell.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc901/Win32.nix−49
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc901/base.nix−48
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc901/bytestring.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc901/ghc-bignum.nix−37
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc901/ghc-boot.nix−39
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc901/ghc-heap.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc901/ghc-prim.nix−43
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc901/ghc.nix−61
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc901/ghci.nix−44
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc901/hpc.nix−38
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc901/integer-gmp.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc901/iserv-proxy.nix−45
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc901/iserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc901/libiserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc901/remote-iserv.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc901/template-haskell.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc902-aarch64/Win32.nix−48
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc902-aarch64/base.nix−48
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc902-aarch64/bytestring.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc902-aarch64/ghc-bignum.nix−37
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc902-aarch64/ghc-boot.nix−39
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc902-aarch64/ghc-heap.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc902-aarch64/ghc-prim.nix−44
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc902-aarch64/ghc.nix−61
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc902-aarch64/ghci.nix−45
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc902-aarch64/hpc.nix−38
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc902-aarch64/integer-gmp.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc902-aarch64/iserv-proxy.nix−45
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc902-aarch64/iserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc902-aarch64/libiserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc902-aarch64/remote-iserv.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc902-aarch64/template-haskell.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc902/Win32.nix−48
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc902/base.nix−48
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc902/bytestring.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc902/ghc-bignum.nix−37
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc902/ghc-boot.nix−39
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc902/ghc-heap.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc902/ghc-prim.nix−43
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc902/ghc.nix−61
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc902/ghci.nix−45
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc902/hpc.nix−38
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc902/integer-gmp.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc902/iserv-proxy.nix−45
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc902/iserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc902/libiserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc902/remote-iserv.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc902/template-haskell.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc921-aarch64/Win32.nix−48
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc921-aarch64/base.nix−48
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc921-aarch64/bytestring.nix−86
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc921-aarch64/deepseq.nix−47
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc921-aarch64/ghc-bignum.nix−37
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc921-aarch64/ghc-boot.nix−40
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc921-aarch64/ghc-heap.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc921-aarch64/ghc-prim.nix−44
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc921-aarch64/ghc.nix−61
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc921-aarch64/ghci.nix−45
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc921-aarch64/hpc.nix−38
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc921-aarch64/integer-gmp.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc921-aarch64/iserv-proxy.nix−45
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc921-aarch64/iserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc921-aarch64/libiserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc921-aarch64/pretty.nix−56
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc921-aarch64/remote-iserv.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc921-aarch64/template-haskell.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc921/Win32.nix−48
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc921/base.nix−48
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc921/bytestring.nix−86
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc921/deepseq.nix−47
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc921/ghc-bignum.nix−37
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc921/ghc-boot.nix−40
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc921/ghc-heap.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc921/ghc-prim.nix−43
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc921/ghc.nix−61
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc921/ghci.nix−45
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc921/hpc.nix−38
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc921/integer-gmp.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc921/iserv-proxy.nix−45
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc921/iserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc921/libiserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc921/pretty.nix−56
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc921/remote-iserv.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc921/template-haskell.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc922-aarch64/Win32.nix−48
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc922-aarch64/base.nix−48
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc922-aarch64/bytestring.nix−68
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc922-aarch64/deepseq.nix−47
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc922-aarch64/ghc-bignum.nix−37
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc922-aarch64/ghc-boot.nix−40
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc922-aarch64/ghc-heap.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc922-aarch64/ghc-prim.nix−44
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc922-aarch64/ghc.nix−60
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc922-aarch64/ghci.nix−45
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc922-aarch64/hpc.nix−38
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc922-aarch64/integer-gmp.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc922-aarch64/iserv-proxy.nix−45
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc922-aarch64/iserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc922-aarch64/libiserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc922-aarch64/pretty.nix−56
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc922-aarch64/remote-iserv.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc922-aarch64/template-haskell.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc922/Win32.nix−48
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc922/base.nix−48
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc922/bytestring.nix−68
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc922/deepseq.nix−47
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc922/ghc-bignum.nix−37
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc922/ghc-boot.nix−40
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc922/ghc-heap.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc922/ghc-prim.nix−43
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc922/ghc.nix−60
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc922/ghci.nix−45
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc922/hpc.nix−38
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc922/integer-gmp.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc922/iserv-proxy.nix−45
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc922/iserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc922/libiserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc922/pretty.nix−56
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc922/remote-iserv.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc922/template-haskell.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc923-aarch64/Win32.nix−48
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc923-aarch64/base.nix−48
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc923-aarch64/bytestring.nix−65
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc923-aarch64/deepseq.nix−47
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc923-aarch64/ghc-bignum.nix−37
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc923-aarch64/ghc-boot.nix−40
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc923-aarch64/ghc-heap.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc923-aarch64/ghc-prim.nix−44
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc923-aarch64/ghc.nix−60
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc923-aarch64/ghci.nix−45
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc923-aarch64/hpc.nix−38
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc923-aarch64/integer-gmp.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc923-aarch64/iserv-proxy.nix−45
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc923-aarch64/iserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc923-aarch64/libiserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc923-aarch64/pretty.nix−56
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc923-aarch64/remote-iserv.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc923-aarch64/template-haskell.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc923/Win32.nix−48
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc923/base.nix−48
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc923/bytestring.nix−65
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc923/deepseq.nix−47
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc923/ghc-bignum.nix−37
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc923/ghc-boot.nix−40
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc923/ghc-heap.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc923/ghc-prim.nix−43
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc923/ghc.nix−60
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc923/ghci.nix−45
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc923/hpc.nix−38
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc923/integer-gmp.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc923/iserv-proxy.nix−45
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc923/iserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc923/libiserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc923/pretty.nix−56
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc923/remote-iserv.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc923/template-haskell.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc924-aarch64/Win32.nix−48
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc924-aarch64/base.nix−48
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc924-aarch64/bytestring.nix−65
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc924-aarch64/deepseq.nix−47
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc924-aarch64/ghc-bignum.nix−37
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc924-aarch64/ghc-boot.nix−40
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc924-aarch64/ghc-heap.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc924-aarch64/ghc-prim.nix−44
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc924-aarch64/ghc.nix−60
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc924-aarch64/ghci.nix−45
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc924-aarch64/hpc.nix−38
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc924-aarch64/integer-gmp.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc924-aarch64/iserv-proxy.nix−45
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc924-aarch64/iserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc924-aarch64/libiserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc924-aarch64/pretty.nix−56
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc924-aarch64/remote-iserv.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc924-aarch64/template-haskell.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc924/Win32.nix−48
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc924/base.nix−48
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc924/bytestring.nix−65
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc924/deepseq.nix−47
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc924/ghc-bignum.nix−37
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc924/ghc-boot.nix−40
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc924/ghc-heap.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc924/ghc-prim.nix−43
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc924/ghc.nix−60
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc924/ghci.nix−45
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc924/hpc.nix−38
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc924/integer-gmp.nix−35
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc924/iserv-proxy.nix−45
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc924/iserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc924/libiserv.nix−42
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc924/pretty.nix−56
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc924/remote-iserv.nix−36
This diff is too big to show here.
materialized/ghc-boot-packages-nix/ghc924/template-haskell.nix−36
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8101/.plan.nix/Win32.nix−155
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8101/.plan.nix/ghc-boot.nix−60
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8101/.plan.nix/ghc.nix−585
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8101/.plan.nix/ghci.nix−70
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8101/.plan.nix/hpc.nix−52
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8101/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8101/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8101/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8101/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8101/default.nix−127
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8102/.plan.nix/Win32.nix−155
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8102/.plan.nix/ghc-boot.nix−60
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8102/.plan.nix/ghc.nix−586
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8102/.plan.nix/ghci.nix−70
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8102/.plan.nix/hpc.nix−52
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8102/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8102/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8102/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8102/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8102/default.nix−128
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8103/.plan.nix/Win32.nix−155
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8103/.plan.nix/ghc-boot.nix−60
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8103/.plan.nix/ghc.nix−586
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8103/.plan.nix/ghci.nix−70
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8103/.plan.nix/hpc.nix−52
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8103/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8103/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8103/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8103/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8103/default.nix−128
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8104/.plan.nix/Win32.nix−155
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8104/.plan.nix/ghc-boot.nix−60
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8104/.plan.nix/ghc.nix−586
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8104/.plan.nix/ghci.nix−70
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8104/.plan.nix/hpc.nix−52
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8104/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8104/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8104/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8104/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8104/default.nix−128
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc810420210212/.plan.nix/Win32.nix−155
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc810420210212/.plan.nix/ghc-boot.nix−60
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc810420210212/.plan.nix/ghc.nix−586
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc810420210212/.plan.nix/ghci.nix−70
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc810420210212/.plan.nix/hpc.nix−52
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc810420210212/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc810420210212/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc810420210212/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc810420210212/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc810420210212/default.nix−128
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8105/.plan.nix/Win32.nix−155
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8105/.plan.nix/ghc-boot.nix−60
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8105/.plan.nix/ghc.nix−586
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8105/.plan.nix/ghci.nix−71
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8105/.plan.nix/hpc.nix−52
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8105/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8105/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8105/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8105/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8105/default.nix−128
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8106/.plan.nix/Win32.nix−155
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8106/.plan.nix/ghc-boot.nix−60
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8106/.plan.nix/ghc.nix−586
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8106/.plan.nix/ghci.nix−71
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8106/.plan.nix/hpc.nix−52
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8106/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8106/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8106/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8106/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8106/default.nix−128
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8107/.plan.nix/Win32.nix−155
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8107/.plan.nix/ghc-boot.nix−60
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8107/.plan.nix/ghc.nix−586
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8107/.plan.nix/ghci.nix−71
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8107/.plan.nix/hpc.nix−52
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8107/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8107/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8107/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8107/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc8107/default.nix−128
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc865/.plan.nix/Win32.nix−155
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc865/.plan.nix/bytestring.nix
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc865/.plan.nix/ghc-boot.nix+1−1
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc865/.plan.nix/ghc.nix+5−2
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc865/.plan.nix/ghci.nix+1−1
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc865/.plan.nix/hpc.nix+1−1
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc865/.plan.nix/iserv-proxy.nix+2−2
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc865/.plan.nix/iserv.nix+1−1
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc865/.plan.nix/libiserv.nix+1−1
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc865/.plan.nix/remote-iserv.nix+1−1
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc865/default.nix+45−79
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc882/.plan.nix/Win32.nix−155
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc882/.plan.nix/ghc-boot.nix−53
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc882/.plan.nix/ghc.nix−573
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc882/.plan.nix/ghci.nix−70
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc882/.plan.nix/hpc.nix−51
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc882/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc882/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc882/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc882/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc882/default.nix−127
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc883/.plan.nix/Win32.nix−155
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc883/.plan.nix/bytestring.nix+57−1
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc883/.plan.nix/ghc-boot.nix+1−1
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc883/.plan.nix/ghc.nix+5−1
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc883/.plan.nix/ghci.nix+1−1
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc883/.plan.nix/hpc.nix+1−1
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc883/.plan.nix/iserv-proxy.nix+2−2
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc883/.plan.nix/iserv.nix+1−1
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc883/.plan.nix/libiserv.nix+1−1
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc883/.plan.nix/remote-iserv.nix+1−1
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc883/default.nix+46−78
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc884/.plan.nix/Win32.nix−155
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc884/.plan.nix/ghc-boot.nix−53
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc884/.plan.nix/ghc.nix−573
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc884/.plan.nix/ghci.nix−70
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc884/.plan.nix/hpc.nix−51
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc884/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc884/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc884/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc884/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc884/default.nix−127
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc901/.plan.nix/Win32.nix−158
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc901/.plan.nix/ghc-boot.nix−61
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc901/.plan.nix/ghc.nix−572
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc901/.plan.nix/ghci.nix−70
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc901/.plan.nix/hpc.nix−52
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc901/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc901/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc901/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc901/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc901/default.nix−135
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc902/.plan.nix/Win32.nix−158
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc902/.plan.nix/ghc-boot.nix−61
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc902/.plan.nix/ghc.nix−572
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc902/.plan.nix/ghci.nix−71
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc902/.plan.nix/hpc.nix−52
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc902/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc902/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc902/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc902/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc902/default.nix−136
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc921/.plan.nix/Win32.nix−158
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc921/.plan.nix/ghc-boot.nix−64
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc921/.plan.nix/ghc.nix−663
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc921/.plan.nix/ghci.nix−70
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc921/.plan.nix/hpc.nix−52
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc921/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc921/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc921/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc921/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc921/default.nix−143
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc922/.plan.nix/Win32.nix−158
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc922/.plan.nix/ghc-boot.nix−64
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc922/.plan.nix/ghc.nix−661
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc922/.plan.nix/ghci.nix−70
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc922/.plan.nix/hpc.nix−52
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc922/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc922/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc922/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc922/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc922/default.nix−138
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc923/.plan.nix/Win32.nix−158
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc923/.plan.nix/ghc-boot.nix−64
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc923/.plan.nix/ghc.nix−661
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc923/.plan.nix/ghci.nix−70
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc923/.plan.nix/hpc.nix−52
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc923/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc923/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc923/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc923/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc923/default.nix−138
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc924/.plan.nix/Win32.nix−158
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc924/.plan.nix/ghc-boot.nix−64
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc924/.plan.nix/ghc.nix−661
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc924/.plan.nix/ghci.nix−70
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc924/.plan.nix/hpc.nix−52
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc924/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc924/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc924/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc924/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/cross/ghc924/default.nix−137
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8101/.plan.nix/Win32.nix−155
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8101/.plan.nix/bytestring.nix+57−1
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8101/.plan.nix/ghc-boot.nix+1−1
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8101/.plan.nix/ghc.nix+1−1
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8101/.plan.nix/ghci.nix+1−1
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8101/.plan.nix/hpc.nix+1−1
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8101/.plan.nix/iserv-proxy.nix+1−1
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8101/.plan.nix/iserv.nix+1−1
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8101/.plan.nix/libiserv.nix+1−1
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8101/.plan.nix/remote-iserv.nix+1−1
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8101/default.nix+40−78
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8102/.plan.nix/Win32.nix−155
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8102/.plan.nix/ghc-boot.nix−60
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8102/.plan.nix/ghc.nix−586
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8102/.plan.nix/ghci.nix−70
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8102/.plan.nix/hpc.nix−52
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8102/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8102/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8102/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8102/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8102/default.nix−129
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8103/.plan.nix/Win32.nix−155
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8103/.plan.nix/ghc-boot.nix−60
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8103/.plan.nix/ghc.nix−586
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8103/.plan.nix/ghci.nix−70
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8103/.plan.nix/hpc.nix−52
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8103/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8103/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8103/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8103/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8103/default.nix−129
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8104/.plan.nix/Win32.nix−155
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8104/.plan.nix/ghc-boot.nix−60
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8104/.plan.nix/ghc.nix−586
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8104/.plan.nix/ghci.nix−70
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8104/.plan.nix/hpc.nix−52
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8104/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8104/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8104/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8104/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8104/default.nix−129
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc810420210212/.plan.nix/Win32.nix−155
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc810420210212/.plan.nix/ghc-boot.nix−60
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc810420210212/.plan.nix/ghc.nix−586
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc810420210212/.plan.nix/ghci.nix−70
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc810420210212/.plan.nix/hpc.nix−52
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc810420210212/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc810420210212/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc810420210212/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc810420210212/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc810420210212/default.nix−129
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8105/.plan.nix/Win32.nix−155
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8105/.plan.nix/ghc-boot.nix−60
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8105/.plan.nix/ghc.nix−586
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8105/.plan.nix/ghci.nix−71
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8105/.plan.nix/hpc.nix−52
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8105/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8105/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8105/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8105/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8105/default.nix−129
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8106/.plan.nix/Win32.nix−155
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8106/.plan.nix/ghc-boot.nix−60
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8106/.plan.nix/ghc.nix−586
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8106/.plan.nix/ghci.nix−71
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8106/.plan.nix/hpc.nix−52
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8106/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8106/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8106/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8106/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8106/default.nix−129
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8107/.plan.nix/Win32.nix−155
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8107/.plan.nix/ghc-boot.nix−60
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8107/.plan.nix/ghc.nix−586
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8107/.plan.nix/ghci.nix−71
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8107/.plan.nix/hpc.nix−52
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8107/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8107/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8107/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8107/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc8107/default.nix−129
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc844/.plan.nix/ghc-boot.nix−52
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc844/.plan.nix/ghc.nix−584
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc844/.plan.nix/ghci.nix−69
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc844/.plan.nix/hpc.nix−51
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc844/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc844/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc844/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc844/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc844/default.nix−92
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc863/.plan.nix/Win32.nix−155
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc863/.plan.nix/ghc-boot.nix−53
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc863/.plan.nix/ghc.nix−555
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc863/.plan.nix/ghci.nix−70
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc863/.plan.nix/hpc.nix−51
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc863/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc863/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc863/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc863/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc863/default.nix−126
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc864/.plan.nix/Win32.nix−155
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc864/.plan.nix/ghc-boot.nix−53
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc864/.plan.nix/ghc.nix−556
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc864/.plan.nix/ghci.nix−70
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc864/.plan.nix/hpc.nix−51
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc864/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc864/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc864/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc864/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc864/default.nix−127
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc865/.plan.nix/Win32.nix−155
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc865/.plan.nix/bytestring.nix+57−1
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc865/.plan.nix/ghc-boot.nix+1−1
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc865/.plan.nix/ghc.nix+5−2
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc865/.plan.nix/ghci.nix+1−1
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc865/.plan.nix/hpc.nix+1−1
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc865/.plan.nix/iserv-proxy.nix+2−2
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc865/.plan.nix/iserv.nix+1−1
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc865/.plan.nix/libiserv.nix+1−1
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc865/.plan.nix/remote-iserv.nix+1−1
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc865/default.nix+46−79
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc882/.plan.nix/Win32.nix−155
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc882/.plan.nix/ghc-boot.nix−53
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc882/.plan.nix/ghc.nix−573
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc882/.plan.nix/ghci.nix−70
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc882/.plan.nix/hpc.nix−51
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc882/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc882/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc882/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc882/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc882/default.nix−128
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc883/.plan.nix/Win32.nix−155
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc883/.plan.nix/bytestring.nix+57−1
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc883/.plan.nix/ghc-boot.nix+1−1
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc883/.plan.nix/ghc.nix+5−1
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc883/.plan.nix/ghci.nix+1−1
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc883/.plan.nix/hpc.nix+1−1
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc883/.plan.nix/iserv-proxy.nix+2−2
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc883/.plan.nix/iserv.nix+1−1
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc883/.plan.nix/libiserv.nix+1−1
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc883/.plan.nix/remote-iserv.nix+1−1
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc883/default.nix+47−79
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc884/.plan.nix/Win32.nix−155
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc884/.plan.nix/ghc-boot.nix−53
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc884/.plan.nix/ghc.nix−573
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc884/.plan.nix/ghci.nix−70
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc884/.plan.nix/hpc.nix−51
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc884/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc884/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc884/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc884/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc884/default.nix−128
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc901/.plan.nix/Win32.nix−158
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc901/.plan.nix/ghc-boot.nix−61
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc901/.plan.nix/ghc.nix−572
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc901/.plan.nix/ghci.nix−70
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc901/.plan.nix/hpc.nix−52
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc901/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc901/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc901/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc901/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc901/default.nix−136
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc902/.plan.nix/Win32.nix−158
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc902/.plan.nix/ghc-boot.nix−61
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc902/.plan.nix/ghc.nix−572
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc902/.plan.nix/ghci.nix−71
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc902/.plan.nix/hpc.nix−52
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc902/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc902/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc902/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc902/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc902/default.nix−136
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc921/.plan.nix/Win32.nix−158
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc921/.plan.nix/ghc-boot.nix−64
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc921/.plan.nix/ghc.nix−663
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc921/.plan.nix/ghci.nix−70
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc921/.plan.nix/hpc.nix−52
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc921/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc921/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc921/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc921/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc921/default.nix−144
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc922/.plan.nix/Win32.nix−158
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc922/.plan.nix/ghc-boot.nix−64
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc922/.plan.nix/ghc.nix−661
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc922/.plan.nix/ghci.nix−70
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc922/.plan.nix/hpc.nix−52
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc922/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc922/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc922/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc922/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc922/default.nix−138
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc923/.plan.nix/Win32.nix−158
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc923/.plan.nix/ghc-boot.nix−64
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc923/.plan.nix/ghc.nix−661
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc923/.plan.nix/ghci.nix−70
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc923/.plan.nix/hpc.nix−52
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc923/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc923/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc923/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc923/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc923/default.nix−138
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc924/.plan.nix/Win32.nix−158
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc924/.plan.nix/ghc-boot.nix−64
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc924/.plan.nix/ghc.nix−661
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc924/.plan.nix/ghci.nix−70
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc924/.plan.nix/hpc.nix−52
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc924/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc924/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc924/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc924/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/default/ghc924/default.nix−138
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc8105/.plan.nix/Win32.nix−155
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc8105/.plan.nix/ghc-boot.nix−60
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc8105/.plan.nix/ghc.nix−586
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc8105/.plan.nix/ghci.nix−71
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc8105/.plan.nix/hpc.nix−52
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc8105/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc8105/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc8105/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc8105/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc8105/default.nix−131
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc8106/.plan.nix/Win32.nix−155
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc8106/.plan.nix/ghc-boot.nix−60
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc8106/.plan.nix/ghc.nix−586
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc8106/.plan.nix/ghci.nix−71
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc8106/.plan.nix/hpc.nix−52
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc8106/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc8106/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc8106/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc8106/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc8106/default.nix−131
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc8107/.plan.nix/Win32.nix−155
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc8107/.plan.nix/ghc-boot.nix−60
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc8107/.plan.nix/ghc.nix−586
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc8107/.plan.nix/ghci.nix−71
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc8107/.plan.nix/hpc.nix−52
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc8107/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc8107/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc8107/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc8107/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc8107/default.nix−131
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc865/.plan.nix/Win32.nix−155
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc865/.plan.nix/ghc-boot.nix−53
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc865/.plan.nix/ghc.nix−554
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc865/.plan.nix/ghci.nix−70
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc865/.plan.nix/hpc.nix−51
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc865/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc865/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc865/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc865/default.nix−123
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc884/.plan.nix/Win32.nix−155
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc884/.plan.nix/ghc-boot.nix−53
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc884/.plan.nix/ghc.nix−572
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc884/.plan.nix/ghci.nix−70
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc884/.plan.nix/hpc.nix−51
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc884/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc884/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc884/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/ghcjs/ghc884/default.nix−125
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8101/.plan.nix/Win32.nix−155
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8101/.plan.nix/ghc-boot.nix−60
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8101/.plan.nix/ghc.nix−585
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8101/.plan.nix/ghci.nix−70
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8101/.plan.nix/hpc.nix−52
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8101/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8101/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8101/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8101/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8101/default.nix−120
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8102/.plan.nix/Win32.nix−155
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8102/.plan.nix/ghc-boot.nix−60
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8102/.plan.nix/ghc.nix−586
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8102/.plan.nix/ghci.nix−70
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8102/.plan.nix/hpc.nix−52
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8102/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8102/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8102/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8102/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8102/default.nix−121
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8103/.plan.nix/Win32.nix−155
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8103/.plan.nix/ghc-boot.nix−60
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8103/.plan.nix/ghc.nix−586
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8103/.plan.nix/ghci.nix−70
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8103/.plan.nix/hpc.nix−52
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8103/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8103/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8103/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8103/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8103/default.nix−121
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8104/.plan.nix/Win32.nix−155
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8104/.plan.nix/ghc-boot.nix−60
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8104/.plan.nix/ghc.nix−586
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8104/.plan.nix/ghci.nix−70
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8104/.plan.nix/hpc.nix−52
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8104/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8104/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8104/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8104/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8104/default.nix−121
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc810420210212/.plan.nix/Win32.nix−155
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc810420210212/.plan.nix/ghc-boot.nix−60
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc810420210212/.plan.nix/ghc.nix−586
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc810420210212/.plan.nix/ghci.nix−70
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc810420210212/.plan.nix/hpc.nix−52
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc810420210212/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc810420210212/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc810420210212/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc810420210212/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc810420210212/default.nix−121
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8105/.plan.nix/Win32.nix−155
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8105/.plan.nix/ghc-boot.nix−60
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8105/.plan.nix/ghc.nix−586
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8105/.plan.nix/ghci.nix−71
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8105/.plan.nix/hpc.nix−52
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8105/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8105/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8105/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8105/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8105/default.nix−121
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8106/.plan.nix/Win32.nix−155
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8106/.plan.nix/ghc-boot.nix−60
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8106/.plan.nix/ghc.nix−586
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8106/.plan.nix/ghci.nix−71
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8106/.plan.nix/hpc.nix−52
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8106/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8106/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8106/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8106/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8106/default.nix−121
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8107/.plan.nix/Win32.nix−155
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8107/.plan.nix/ghc-boot.nix−60
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8107/.plan.nix/ghc.nix−586
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8107/.plan.nix/ghci.nix−71
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8107/.plan.nix/hpc.nix−52
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8107/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8107/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8107/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8107/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc8107/default.nix−121
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc863/.plan.nix/Win32.nix−155
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc863/.plan.nix/ghc-boot.nix−53
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc863/.plan.nix/ghc.nix−555
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc863/.plan.nix/ghci.nix−70
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc863/.plan.nix/hpc.nix−51
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc863/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc863/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc863/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc863/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc863/default.nix−118
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc864/.plan.nix/Win32.nix−155
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc864/.plan.nix/ghc-boot.nix−53
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc864/.plan.nix/ghc.nix−556
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc864/.plan.nix/ghci.nix−70
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc864/.plan.nix/hpc.nix−51
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc864/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc864/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc864/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc864/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc864/default.nix−119
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc865/.plan.nix/Win32.nix−155
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc865/.plan.nix/bytestring.nix+57−1
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc865/.plan.nix/ghc-boot.nix+1−1
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc865/.plan.nix/ghc.nix+5−2
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc865/.plan.nix/ghci.nix+1−1
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc865/.plan.nix/hpc.nix+1−1
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc865/.plan.nix/iserv-proxy.nix+2−2
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc865/.plan.nix/iserv.nix+1−1
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc865/.plan.nix/libiserv.nix+1−1
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc865/.plan.nix/remote-iserv.nix+1−1
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc865/default.nix+44−72
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc882/.plan.nix/Win32.nix−155
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc882/.plan.nix/ghc-boot.nix−53
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc882/.plan.nix/ghc.nix−573
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc882/.plan.nix/ghci.nix−70
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc882/.plan.nix/hpc.nix−51
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc882/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc882/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc882/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc882/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc882/default.nix−120
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc883/.plan.nix/Win32.nix−155
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc883/.plan.nix/bytestring.nix+58−2
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc883/.plan.nix/ghc-boot.nix+1−1
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc883/.plan.nix/ghc.nix+5−1
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc883/.plan.nix/ghci.nix+1−1
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc883/.plan.nix/hpc.nix+1−1
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc883/.plan.nix/iserv-proxy.nix+2−2
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc883/.plan.nix/iserv.nix+1−1
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc883/.plan.nix/libiserv.nix+1−1
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc883/.plan.nix/remote-iserv.nix+1−1
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc883/default.nix+45−72
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc884/.plan.nix/Win32.nix−155
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc884/.plan.nix/ghc-boot.nix−53
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc884/.plan.nix/ghc.nix−573
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc884/.plan.nix/ghci.nix−70
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc884/.plan.nix/hpc.nix−51
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc884/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc884/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc884/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc884/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc884/default.nix−120
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc901/.plan.nix/Win32.nix−158
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc901/.plan.nix/ghc-boot.nix−61
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc901/.plan.nix/ghc.nix−572
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc901/.plan.nix/ghci.nix−70
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc901/.plan.nix/hpc.nix−52
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc901/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc901/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc901/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc901/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc901/default.nix−132
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc902/.plan.nix/Win32.nix−158
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc902/.plan.nix/ghc-boot.nix−61
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc902/.plan.nix/ghc.nix−572
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc902/.plan.nix/ghci.nix−71
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc902/.plan.nix/hpc.nix−52
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc902/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc902/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc902/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc902/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc902/default.nix−132
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc921/.plan.nix/Win32.nix−158
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc921/.plan.nix/ghc-boot.nix−64
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc921/.plan.nix/ghc.nix−663
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc921/.plan.nix/ghci.nix−70
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc921/.plan.nix/hpc.nix−52
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc921/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc921/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc921/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc921/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc921/default.nix−140
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc922/.plan.nix/Win32.nix−158
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc922/.plan.nix/ghc-boot.nix−64
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc922/.plan.nix/ghc.nix−661
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc922/.plan.nix/ghci.nix−70
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc922/.plan.nix/hpc.nix−52
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc922/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc922/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc922/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc922/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc922/default.nix−134
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc923/.plan.nix/Win32.nix−158
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc923/.plan.nix/ghc-boot.nix−64
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc923/.plan.nix/ghc.nix−661
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc923/.plan.nix/ghci.nix−70
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc923/.plan.nix/hpc.nix−52
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc923/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc923/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc923/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc923/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc923/default.nix−134
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc924/.plan.nix/Win32.nix−158
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc924/.plan.nix/ghc-boot.nix−64
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc924/.plan.nix/ghc.nix−661
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc924/.plan.nix/ghci.nix−70
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc924/.plan.nix/hpc.nix−52
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc924/.plan.nix/iserv-proxy.nix−55
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc924/.plan.nix/iserv.nix−54
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc924/.plan.nix/libiserv.nix−58
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc924/.plan.nix/remote-iserv.nix−46
This diff is too big to show here.
materialized/ghc-extra-projects/windows/ghc924/default.nix−134
This diff is too big to show here.
materialized/ghc8101/alex/.plan.nix/alex.nix+1−1
This diff is too big to show here.
materialized/ghc8101/alex/default.nix+8−6
This diff is too big to show here.
materialized/ghc8101/cabal-install/.plan.nix/cabal-install.nix+99−51
This diff is too big to show here.
materialized/ghc8101/cabal-install/default.nix+75−133
This diff is too big to show here.
materialized/ghc8101/happy/.plan.nix/happy.nix+1−1
This diff is too big to show here.
materialized/ghc8101/happy/default.nix+16−4
This diff is too big to show here.
materialized/ghc8101/nix-tools/.plan.nix/hackage-db.nix+3−13
This diff is too big to show here.
materialized/ghc8101/nix-tools/.plan.nix/nix-tools.nix+1−2
This diff is too big to show here.
materialized/ghc8101/nix-tools/default.nix+152−176
This diff is too big to show here.
materialized/ghc8102/cabal-install/.plan.nix/cabal-install.nix−292
This diff is too big to show here.
materialized/ghc8102/cabal-install/default.nix−180
This diff is too big to show here.
materialized/ghc8102/nix-tools/.plan.nix/nix-tools.nix−234
This diff is too big to show here.
materialized/ghc8102/nix-tools/default.nix−518
This diff is too big to show here.
materialized/ghc8103/cabal-install/.plan.nix/cabal-install.nix−292
This diff is too big to show here.
materialized/ghc8103/cabal-install/default.nix−180
This diff is too big to show here.
materialized/ghc8103/nix-tools/.plan.nix/hackage-db.nix−110
This diff is too big to show here.
materialized/ghc8103/nix-tools/default.nix−518
This diff is too big to show here.
materialized/ghc8104/cabal-install/.plan.nix/cabal-install.nix−292
This diff is too big to show here.
materialized/ghc8104/cabal-install/default.nix−180
This diff is too big to show here.
materialized/ghc8104/nix-tools/.plan.nix/hackage-db.nix−110
This diff is too big to show here.
materialized/ghc8104/nix-tools/.plan.nix/nix-tools.nix−234
This diff is too big to show here.
materialized/ghc8104/nix-tools/default.nix−518
This diff is too big to show here.
materialized/ghc810420210212/cabal-install/.plan.nix/cabal-install.nix−292
This diff is too big to show here.
materialized/ghc810420210212/cabal-install/default.nix−180
This diff is too big to show here.
materialized/ghc810420210212/nix-tools/.plan.nix/hackage-db.nix−110
This diff is too big to show here.
materialized/ghc810420210212/nix-tools/.plan.nix/nix-tools.nix−234
This diff is too big to show here.
materialized/ghc810420210212/nix-tools/default.nix−518
This diff is too big to show here.
materialized/ghc8105/cabal-install/.plan.nix/cabal-install.nix−292
This diff is too big to show here.
materialized/ghc8105/cabal-install/default.nix−180
This diff is too big to show here.
materialized/ghc8105/nix-tools/.plan.nix/hackage-db.nix−110
This diff is too big to show here.
materialized/ghc8105/nix-tools/.plan.nix/nix-tools.nix−234
This diff is too big to show here.
materialized/ghc8105/nix-tools/default.nix−518
This diff is too big to show here.
materialized/ghc8106/cabal-install/.plan.nix/cabal-install.nix−292
This diff is too big to show here.
materialized/ghc8106/cabal-install/default.nix−180
This diff is too big to show here.
materialized/ghc8106/nix-tools/.plan.nix/hackage-db.nix−110
This diff is too big to show here.
materialized/ghc8106/nix-tools/.plan.nix/nix-tools.nix−234
This diff is too big to show here.
materialized/ghc8106/nix-tools/default.nix−518
This diff is too big to show here.
materialized/ghc8107/cabal-install/.plan.nix/cabal-install.nix−292
This diff is too big to show here.
materialized/ghc8107/cabal-install/default.nix−180
This diff is too big to show here.
materialized/ghc8107/nix-tools/.plan.nix/hackage-db.nix−110
This diff is too big to show here.
materialized/ghc8107/nix-tools/.plan.nix/nix-tools.nix−234
This diff is too big to show here.
materialized/ghc8107/nix-tools/default.nix−518
This diff is too big to show here.
materialized/ghc863/cabal-install/.plan.nix/cabal-install.nix−292
This diff is too big to show here.
materialized/ghc863/cabal-install/default.nix−180
This diff is too big to show here.
materialized/ghc863/nix-tools/.plan.nix/hackage-db.nix−110
This diff is too big to show here.
materialized/ghc863/nix-tools/.plan.nix/nix-tools.nix−234
This diff is too big to show here.
materialized/ghc863/nix-tools/default.nix−509
This diff is too big to show here.
materialized/ghc864/cabal-install/.plan.nix/cabal-install.nix−292
This diff is too big to show here.
materialized/ghc864/cabal-install/default.nix−180
This diff is too big to show here.
materialized/ghc864/nix-tools/.plan.nix/hackage-db.nix−110
This diff is too big to show here.
materialized/ghc864/nix-tools/.plan.nix/nix-tools.nix−234
This diff is too big to show here.
materialized/ghc864/nix-tools/default.nix−509
This diff is too big to show here.
materialized/ghc865/alex/.plan.nix/alex.nix+1−1
This diff is too big to show here.
materialized/ghc865/alex/default.nix+18−34
This diff is too big to show here.
materialized/ghc865/cabal-install/.plan.nix/cabal-install.nix+99−51
This diff is too big to show here.
materialized/ghc865/cabal-install/default.nix+74−132
This diff is too big to show here.
materialized/ghc865/happy/.plan.nix/happy.nix+1−1
This diff is too big to show here.
materialized/ghc865/happy/default.nix+22−25
This diff is too big to show here.
materialized/ghc865/nix-tools/.plan.nix/hackage-db.nix+3−13
This diff is too big to show here.
materialized/ghc865/nix-tools/.plan.nix/nix-tools.nix+1−2
This diff is too big to show here.
materialized/ghc865/nix-tools/default.nix+294−448
This diff is too big to show here.
materialized/ghc882/cabal-install/.plan.nix/cabal-install.nix−292
This diff is too big to show here.
materialized/ghc882/cabal-install/default.nix−180
This diff is too big to show here.
materialized/ghc882/nix-tools/.plan.nix/hackage-db.nix−110
This diff is too big to show here.
materialized/ghc882/nix-tools/.plan.nix/nix-tools.nix−234
This diff is too big to show here.
materialized/ghc882/nix-tools/default.nix−509
This diff is too big to show here.
materialized/ghc883/alex/.plan.nix/alex.nix+1−1
This diff is too big to show here.
materialized/ghc883/alex/default.nix+18−34
This diff is too big to show here.
materialized/ghc883/cabal-install/.plan.nix/cabal-install.nix+99−51
This diff is too big to show here.
materialized/ghc883/cabal-install/default.nix+74−132
This diff is too big to show here.
materialized/ghc883/happy/.plan.nix/happy.nix+1−1
This diff is too big to show here.
materialized/ghc883/happy/default.nix+22−25
This diff is too big to show here.
materialized/ghc883/nix-tools/.plan.nix/hackage-db.nix+3−13
This diff is too big to show here.
materialized/ghc883/nix-tools/.plan.nix/nix-tools.nix+1−2
This diff is too big to show here.
materialized/ghc883/nix-tools/default.nix+294−448
This diff is too big to show here.
materialized/ghc884/cabal-install/.plan.nix/cabal-install.nix−292
This diff is too big to show here.
materialized/ghc884/cabal-install/default.nix−180
This diff is too big to show here.
materialized/ghc884/nix-tools/.plan.nix/hackage-db.nix−110
This diff is too big to show here.
materialized/ghc884/nix-tools/.plan.nix/nix-tools.nix−234
This diff is too big to show here.
materialized/ghc884/nix-tools/default.nix−509
This diff is too big to show here.
materialized/ghc901/cabal-install/.plan.nix/cabal-install.nix−292
This diff is too big to show here.
materialized/ghc901/cabal-install/default.nix−178
This diff is too big to show here.
materialized/ghc902/cabal-install/.plan.nix/cabal-install.nix−292
This diff is too big to show here.
materialized/ghc902/cabal-install/default.nix−183
This diff is too big to show here.
materialized/ghc921/cabal-install/.plan.nix/cabal-install.nix−292
This diff is too big to show here.
materialized/ghc921/cabal-install/default.nix−174
This diff is too big to show here.
materialized/ghc922/cabal-install/.plan.nix/cabal-install.nix−292
This diff is too big to show here.
materialized/ghc922/cabal-install/default.nix−174
This diff is too big to show here.
materialized/ghc923/cabal-install/.plan.nix/cabal-install.nix−292
This diff is too big to show here.
materialized/ghc923/cabal-install/default.nix−174
This diff is too big to show here.
materialized/ghc924/cabal-install/.plan.nix/cabal-install.nix−292
This diff is too big to show here.
materialized/ghc924/cabal-install/default.nix−174
This diff is too big to show here.
materialized/ghcjs/alex/ghc8104/.plan.nix/alex.nix−160
This diff is too big to show here.
materialized/ghcjs/alex/ghc8105/default.nix−65
This diff is too big to show here.
materialized/ghcjs/alex/ghc8106/default.nix−65
This diff is too big to show here.
materialized/ghcjs/alex/ghc8107/default.nix−65
This diff is too big to show here.
materialized/ghcjs/alex/ghc865/.plan.nix/alex.nix−160
This diff is too big to show here.
materialized/ghcjs/alex/ghc884/.plan.nix/alex.nix−160
This diff is too big to show here.
materialized/ghcjs/alex/ghc884/default.nix−65
This diff is too big to show here.
materialized/ghcjs/cabal/ghc8104/.plan.nix/cabal-install.nix−361
This diff is too big to show here.
materialized/ghcjs/cabal/ghc8104/default.nix−128
This diff is too big to show here.
materialized/ghcjs/cabal/ghc8105/.plan.nix/cabal-install.nix−292
This diff is too big to show here.
materialized/ghcjs/cabal/ghc8105/default.nix−180
This diff is too big to show here.
materialized/ghcjs/cabal/ghc8106/.plan.nix/cabal-install.nix−292
This diff is too big to show here.
materialized/ghcjs/cabal/ghc8106/default.nix−180
This diff is too big to show here.
materialized/ghcjs/cabal/ghc8107/.plan.nix/cabal-install.nix−292
This diff is too big to show here.
materialized/ghcjs/cabal/ghc8107/default.nix−180
This diff is too big to show here.
materialized/ghcjs/cabal/ghc865/.plan.nix/cabal-install.nix−340
This diff is too big to show here.
materialized/ghcjs/cabal/ghc865/default.nix−173
This diff is too big to show here.
materialized/ghcjs/cabal/ghc884/.plan.nix/cabal-install.nix−340
This diff is too big to show here.
materialized/ghcjs/cabal/ghc884/default.nix−173
This diff is too big to show here.
materialized/ghcjs/ghc8104/.plan.nix/ghcjs-th.nix−48
This diff is too big to show here.
materialized/ghcjs/ghc8104/.plan.nix/ghcjs.nix−985
This diff is too big to show here.
materialized/ghcjs/ghc8105/.plan.nix/ghcjs-th.nix−48
This diff is too big to show here.
materialized/ghcjs/ghc8105/.plan.nix/ghcjs.nix−985
This diff is too big to show here.
materialized/ghcjs/ghc8105/default.nix−576
This diff is too big to show here.
materialized/ghcjs/ghc8106/.plan.nix/ghcjs-th.nix−48
This diff is too big to show here.
materialized/ghcjs/ghc8106/.plan.nix/ghcjs.nix−985
This diff is too big to show here.
materialized/ghcjs/ghc8106/default.nix−576
This diff is too big to show here.
materialized/ghcjs/ghc8107/.plan.nix/ghcjs-th.nix−48
This diff is too big to show here.
materialized/ghcjs/ghc8107/.plan.nix/ghcjs.nix−985
This diff is too big to show here.
materialized/ghcjs/ghc8107/default.nix−576
This diff is too big to show here.
materialized/ghcjs/ghc865/.plan.nix/ghci-ghcjs.nix−70
This diff is too big to show here.
materialized/ghcjs/ghc865/.plan.nix/ghcjs-th.nix−58
This diff is too big to show here.
materialized/ghcjs/ghc865/.plan.nix/ghcjs.nix−987
This diff is too big to show here.
materialized/ghcjs/ghc865/.plan.nix/haddock-library-ghcjs.nix−103
This diff is too big to show here.
materialized/ghcjs/ghc865/.plan.nix/template-haskell-ghcjs.nix−54
This diff is too big to show here.
materialized/ghcjs/ghc865/default.nix−636
This diff is too big to show here.
materialized/ghcjs/ghc884/.plan.nix/ghcjs-th.nix−52
This diff is too big to show here.
materialized/ghcjs/ghc884/.plan.nix/ghcjs.nix−981
This diff is too big to show here.
materialized/ghcjs/ghc884/default.nix−581
This diff is too big to show here.
materialized/ghcjs/happy/ghc8104/.plan.nix/happy.nix−200
This diff is too big to show here.
materialized/ghcjs/happy/ghc8105/.plan.nix/happy.nix−200
This diff is too big to show here.
materialized/ghcjs/happy/ghc8105/default.nix−56
This diff is too big to show here.
materialized/ghcjs/happy/ghc8106/.plan.nix/happy.nix−200
This diff is too big to show here.
materialized/ghcjs/happy/ghc8106/default.nix−56
This diff is too big to show here.
materialized/ghcjs/happy/ghc8107/.plan.nix/happy.nix−200
This diff is too big to show here.
materialized/ghcjs/happy/ghc8107/default.nix−56
This diff is too big to show here.
materialized/ghcjs/happy/ghc865/.plan.nix/happy.nix−200
This diff is too big to show here.
materialized/ghcjs/happy/ghc884/.plan.nix/happy.nix−200
This diff is too big to show here.
materialized/ghcjs/happy/ghc884/default.nix−56
This diff is too big to show here.
materialized/spdx-3.12/licenses.json−5622
This diff is too big to show here.
materialized/spdx-3.14/licenses.json−5937
This diff is too big to show here.
materialized/spdx-3.16/licenses.json−6090
This diff is too big to show here.
materialized/spdx-3.17/licenses.json−6155
This diff is too big to show here.
mk-local-hackage-repo/default.nix+11−21
This diff is too big to show here.
This diff is too big to show here.
modules/cabal-project.nix−134
This diff is too big to show here.
This diff is too big to show here.
modules/component-driver.nix+8−19
This diff is too big to show here.
modules/configuration-nix.nix+3−115
This diff is too big to show here.
modules/error-handler.nix+2−10
This diff is too big to show here.
modules/hackage-project.nix−60
This diff is too big to show here.
modules/hackage-quirks.nix−88
This diff is too big to show here.
This diff is too big to show here.
modules/hix-project.nix−47
This diff is too big to show here.
modules/package.nix+95−122
This diff is too big to show here.
This diff is too big to show here.
modules/project-common.nix−65
This diff is too big to show here.
This diff is too big to show here.
modules/stack-project.nix−94
This diff is too big to show here.
This diff is too big to show here.
nix-tools/nix-tools-src.json+9
This diff is too big to show here.
nix-tools/regenerate.nix+99
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
overlays/armv6l-linux.nix+12−13
This diff is too big to show here.
overlays/bootstrap.nix+173−783
This diff is too big to show here.
This diff is too big to show here.
overlays/default.nix+10−15
This diff is too big to show here.
overlays/emscripten.nix+19−6
This diff is too big to show here.
overlays/emscripten/binaryen.nix+46
This diff is too big to show here.
overlays/emscripten/default.nix+71
This diff is too big to show here.
overlays/emscripten/fastcomp/default.nix+2−2
This diff is too big to show here.
overlays/emscripten/fastcomp/emscripten-fastcomp.nix+55
This diff is too big to show here.
overlays/emscripten/upstream/default.nix+2−2
This diff is too big to show here.
overlays/emscripten/upstream/emscripten-upstream.nix+60
This diff is too big to show here.
overlays/eval-on-build.nix+6
This diff is too big to show here.
overlays/eval-on-current.nix+8
This diff is too big to show here.
overlays/ghc-packages.nix+58−122
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
overlays/gobject-introspection.nix−9
This diff is too big to show here.
overlays/hackage-quirks.nix+58
This diff is too big to show here.
overlays/haskell.nix+167−506
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
overlays/linux-cross.nix+2−2
This diff is too big to show here.
overlays/mingw_w64.nix+22−22
This diff is too big to show here.
This diff is too big to show here.
overlays/nix-prefetch-git-minimal.nix−29
This diff is too big to show here.
overlays/patches/Cabal/Cabal-3.0.0.0-drop-pkg-db-check.diff−20
This diff is too big to show here.
overlays/patches/Cabal/Cabal-3.0.0.0-no-final-checks.diff−24
This diff is too big to show here.
overlays/patches/Cabal/Cabal-3.4-defer-build-tool-depends-7532.patch−63
This diff is too big to show here.
overlays/patches/Cabal/Cabal-3.4-speedup-solver-when-tests-enabled-7490.patch−147
This diff is too big to show here.
overlays/patches/Cabal/Cabal-3.6.0.0-drop-pkg-db-check.diff−20
This diff is too big to show here.
overlays/patches/Cabal/Cabal-3.6.0.0-no-final-checks.diff−24
This diff is too big to show here.
overlays/patches/config.guess−1702
This diff is too big to show here.
overlays/patches/config.sub−1865
This diff is too big to show here.
overlays/patches/file-embed-lzma-0.patch+44
This diff is too big to show here.
overlays/patches/ghc-lib-parser-8.10-global-unique-counters-in-rts.patch−20
This diff is too big to show here.
overlays/patches/ghc-lib-parser-9.2-global-unique-counters-in-rts.patch−20
This diff is too big to show here.
overlays/patches/ghc/67738db10010fd28a8e997b5c8f83ea591b88a0e.patch−107
This diff is too big to show here.
overlays/patches/ghc/AC_PROG_CC_99.patch−13
This diff is too big to show here.
overlays/patches/ghc/Cabal-3886.patch−170
This diff is too big to show here.
overlays/patches/ghc/Cabal-unbreak-GHCJS.patch−20
This diff is too big to show here.
overlays/patches/ghc/MR3714-backported-to-8.10.2.patch−283
This diff is too big to show here.
overlays/patches/ghc/MR6595-nonmoving-mutvar.patch−521
This diff is too big to show here.
overlays/patches/ghc/MR6617-nonmoving-mvar.patch−174
This diff is too big to show here.
overlays/patches/ghc/MR6654-nonmoving-maxmem.patch−31
This diff is too big to show here.
overlays/patches/ghc/Sphinx_Unicode_Error.patch−20
This diff is too big to show here.
overlays/patches/ghc/android-base-needs-iconv.patch−14
This diff is too big to show here.
overlays/patches/ghc/bec76733b818b0489ffea0834ab6b1560207577c.patch−43
This diff is too big to show here.
overlays/patches/ghc/core-field.patch−958
This diff is too big to show here.
overlays/patches/ghc/external-static-8.10.4.patch−219
This diff is too big to show here.
overlays/patches/ghc/ghc-8.10-3434.patch−68
This diff is too big to show here.
overlays/patches/ghc/ghc-8.10-global-unique-counters-in-rts.patch−55
This diff is too big to show here.
overlays/patches/ghc/ghc-8.10-ubxt.patch−1539
This diff is too big to show here.
overlays/patches/ghc/ghc-8.10-windows-add-dependent-file.patch−22
This diff is too big to show here.
overlays/patches/ghc/ghc-8.10-z-drive-fix.patch−14
This diff is too big to show here.
overlays/patches/ghc/ghc-8.10.3-rts-make-markLiveObject-thread-safe.patch−63
This diff is too big to show here.
overlays/patches/ghc/ghc-8.10.3-ubxt.patch−7884
This diff is too big to show here.
overlays/patches/ghc/ghc-8.10.5-add-rts-exports.patch−26
This diff is too big to show here.
overlays/patches/ghc/ghc-8.10.5-darwin-allocateExec.patch−13
This diff is too big to show here.
overlays/patches/ghc/ghc-8.10.5-ubxt.patch−7884
This diff is too big to show here.
overlays/patches/ghc/ghc-8.10.7-linker-weak-and-common.patch−189
This diff is too big to show here.
overlays/patches/ghc/ghc-8.4.4-reinstallable-lib-ghc.patch+10
This diff is too big to show here.
overlays/patches/ghc/ghc-8.6.3-reinstallable-lib-ghc.patch+10
This diff is too big to show here.
overlays/patches/ghc/ghc-8.6.4-reinstallable-lib-ghc.patch+10
This diff is too big to show here.
overlays/patches/ghc/ghc-8.6.5-reinstallable-lib-ghc.patch+10
This diff is too big to show here.
overlays/patches/ghc/ghc-8.8-ubxt.patch−1127
This diff is too big to show here.
overlays/patches/ghc/ghc-8.8.1-reinstallable-lib-ghc.patch+10
This diff is too big to show here.
overlays/patches/ghc/ghc-8.8.2-reinstallable-lib-ghc.patch+10
This diff is too big to show here.
overlays/patches/ghc/ghc-9.0-macOS-loadArchive-fix.patch−9
This diff is too big to show here.
overlays/patches/ghc/ghc-9.2-3434.patch−68
This diff is too big to show here.
overlays/patches/ghc/ghc-9.2-Cabal-3886.patch−170
This diff is too big to show here.
overlays/patches/ghc/ghc-9.2-cabal-host.patch−13
This diff is too big to show here.
overlays/patches/ghc/ghc-9.2-global-unique-counters-in-rts.patch−83
This diff is too big to show here.
overlays/patches/ghc/ghc-9.2-macOS-loadArchive-fix.patch−9
This diff is too big to show here.
overlays/patches/ghc/ghc-9.2.1-xattr-fix.patch−30
This diff is too big to show here.
overlays/patches/ghc/ghc-acrt-iob-func.patch−12
This diff is too big to show here.
overlays/patches/ghc/ghc-mprotect-nonzero-len.patch−14
This diff is too big to show here.
overlays/patches/ghc/ghc-no-system-linker.patch−78
This diff is too big to show here.
overlays/patches/ghc/ghc-rts-linker-condbr.patch−73
This diff is too big to show here.
overlays/patches/ghc/issue-18708.patch−39
This diff is too big to show here.
overlays/patches/ghc/libc-memory-symbols.patch−43
This diff is too big to show here.
overlays/patches/ghc/libraries-prim-os-android.patch−13
This diff is too big to show here.
overlays/patches/ghc/mmap-next.patch−70
This diff is too big to show here.
overlays/patches/ghc/noinline-set-bit-if.patch−12
This diff is too big to show here.
overlays/patches/ghc/rts-android-jemalloc-qemu.patch−48
This diff is too big to show here.
overlays/patches/ghc/stack-protector-symbols.patch−67
This diff is too big to show here.
This diff is too big to show here.
overlays/windows.nix+36−28
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
patches/ghc862/default.nix+1−1
This diff is too big to show here.
patches/ghc863/default.nix+1−1
This diff is too big to show here.
patches/ghc864/default.nix+1−1
This diff is too big to show here.
patches/ghc865/default.nix+1−1
This diff is too big to show here.
patches/ghcide-1.7-plutus-ghc.patch−13
This diff is too big to show here.
patches/ghcide-1.7-unboxed-tuple-fix-issue-1455.patch−76
This diff is too big to show here.
This diff is too big to show here.
patches/js-ghc8107/buffer-builder.patch−79
This diff is too big to show here.
patches/js-ghc8107/conduit-extra.patch−48
This diff is too big to show here.
patches/js-ghc8107/default.nix−7
This diff is too big to show here.
patches/js-ghc8107/double-conversion.patch−64
This diff is too big to show here.
patches/js-ghc8107/network.patch−16
This diff is too big to show here.
patches/js-ghc8107/say.patch−22
This diff is too big to show here.
patches/languge-c-int128.patch−146
This diff is too big to show here.
patches/update-patches.sh+2−6
This diff is too big to show here.
pkgs/rocksdb-prebuilt.nix+30
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
scripts/check-closure-size.nix+3−3
This diff is too big to show here.
scripts/check-compiler-materialization/default.nix−48
This diff is too big to show here.
scripts/check-hydra.nix+4−5
This diff is too big to show here.
scripts/check-materialization-concurrency/check.nix−23
This diff is too big to show here.
scripts/check-materialization-concurrency/default.nix−28
This diff is too big to show here.
scripts/check-path-support.nix−13
This diff is too big to show here.
scripts/options-doc.nix+12−44
This diff is too big to show here.
scripts/update-docs.nix+8−5
This diff is too big to show here.
scripts/update-external.nix+5−5
This diff is too big to show here.
scripts/update-hackage.nix+2−2
This diff is too big to show here.
scripts/update-index-state-hashes.nix+8−8
This diff is too big to show here.
scripts/update-pins.nix+3−3
This diff is too big to show here.
scripts/update-stackage.nix+2−2
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
test/buildable/default.nix+5−5
This diff is too big to show here.
test/builder-haddock/.plan.nix/test-haddock.nix+42−11
This diff is too big to show here.
test/builder-haddock/default.nix+10−9
This diff is too big to show here.
test/builder-haddock/pkgs.nix+6−18
This diff is too big to show here.
test/builder-haddock/test-haddock.nix+6−6
This diff is too big to show here.
test/c-ffi/c-ffi.cabal−24
This diff is too big to show here.
test/c-ffi/cbits/test.c−7
This diff is too big to show here.
test/c-ffi/default.nix−65
This diff is too big to show here.
test/c-ffi/exe/Main.hs−15
This diff is too big to show here.
test/c-ffi/jsbits/bindings.js−6
This diff is too big to show here.
This diff is too big to show here.
test/ca-derivations-include/default.nix−57
This diff is too big to show here.
test/ca-derivations/default.nix−59
This diff is too big to show here.
test/cabal-22/default.nix+7−13
This diff is too big to show here.
test/cabal-doctests/Setup.hs−6
This diff is too big to show here.
test/cabal-doctests/cabal-doctests-test.cabal−31
This diff is too big to show here.
test/cabal-doctests/default.nix−48
This diff is too big to show here.
test/cabal-doctests/doctests/Doctests.hs−16
This diff is too big to show here.
test/cabal-doctests/src/Lib.hs−18
This diff is too big to show here.
test/cabal-hpack/Setup.hs−2
This diff is too big to show here.
test/cabal-hpack/app/Main.hs−4
This diff is too big to show here.
test/cabal-hpack/default.nix−65
This diff is too big to show here.
test/cabal-hpack/package.yaml−34
This diff is too big to show here.
test/cabal-simple-debug/Main.hs−4
This diff is too big to show here.
test/cabal-simple-debug/Setup.hs−2
This diff is too big to show here.
test/cabal-simple-debug/cabal-simple.cabal−37
This diff is too big to show here.
test/cabal-simple-debug/default.nix−52
This diff is too big to show here.
test/cabal-simple-prof/default.nix+13−16
This diff is too big to show here.
test/cabal-simple/default.nix+13−12
This diff is too big to show here.
test/cabal-source-repo-comments/Main.hs−4
This diff is too big to show here.
test/cabal-source-repo-comments/cabal.project−15
This diff is too big to show here.
test/cabal-source-repo-comments/default.nix−34
This diff is too big to show here.
test/cabal-source-repo-comments/use-cabal-simple.cabal−26
This diff is too big to show here.
test/cabal-source-repo/cabal.project+1−3
This diff is too big to show here.
test/cabal-source-repo/default.nix+6−6
This diff is too big to show here.
test/cabal-sublib/cabal-sublib.cabal+1−2
This diff is too big to show here.
test/cabal-sublib/default.nix+14−10
This diff is too big to show here.
test/call-cabal-project-to-nix/default.nix+9−16
This diff is too big to show here.
test/call-stack-to-nix/default.nix+9−11
This diff is too big to show here.
test/call-stack-to-nix/stack.yaml+1−1
This diff is too big to show here.
test/compiler-nix-name/Main.hs+5
This diff is too big to show here.
test/compiler-nix-name/compiler-nix-name.cabal+11
This diff is too big to show here.
test/compiler-nix-name/default.nix+40
This diff is too big to show here.
test/coverage-golden/default.nix−53
This diff is too big to show here.
test/coverage-golden/golden.json−2069
This diff is too big to show here.
test/coverage-no-libs/cabal.project−1
This diff is too big to show here.
test/coverage-no-libs/default.nix−104
This diff is too big to show here.
test/coverage-no-libs/pkga/MainA.hs−4
This diff is too big to show here.
test/coverage-no-libs/pkga/Setup.hs−2
This diff is too big to show here.
test/coverage-no-libs/pkga/pkga.cabal−19
This diff is too big to show here.
test/coverage-no-libs/stack.yaml−4
This diff is too big to show here.
test/coverage/cabal.project−2
This diff is too big to show here.
test/coverage/conduit.hs−19
This diff is too big to show here.
test/coverage/default.nix−133
This diff is too big to show here.
test/coverage/pkga/MainA.hs−4
This diff is too big to show here.
test/coverage/pkga/PkgA.hs−16
This diff is too big to show here.
test/coverage/pkga/Setup.hs−2
This diff is too big to show here.
test/coverage/pkga/pkga.cabal−26
This diff is too big to show here.
test/coverage/pkgb/Setup.hs−2
This diff is too big to show here.
test/coverage/pkgb/app/Main.hs−10
This diff is too big to show here.
test/coverage/pkgb/app/tests.hs−7
This diff is too big to show here.
test/coverage/pkgb/pkgb.cabal−43
This diff is too big to show here.
test/coverage/pkgb/src/ConduitExample.hs−21
This diff is too big to show here.
test/coverage/pkgb/src/PkgB.hs−7
This diff is too big to show here.
test/coverage/pkgb/src/conduit-test.hs−5
This diff is too big to show here.
test/coverage/stack.yaml−5
This diff is too big to show here.
This diff is too big to show here.
test/exe-dlls/default.nix−25
This diff is too big to show here.
test/exe-dlls/exe-dlls.cabal−18
This diff is too big to show here.
test/exe-dlls/src/Main.hs−14
This diff is too big to show here.
test/exe-lib-dlls/default.nix−25
This diff is too big to show here.
test/exe-lib-dlls/exe-lib-dlls.cabal−24
This diff is too big to show here.
test/exe-lib-dlls/exes/Main.hs−6
This diff is too big to show here.
test/exe-lib-dlls/src/Lib.hs−14
This diff is too big to show here.
test/exe-only/default.nix+14−6
This diff is too big to show here.
test/external-static-plugin/cabal.project−1
This diff is too big to show here.
test/external-static-plugin/default.nix−27
This diff is too big to show here.
test/external-static-plugin/plugin/CHANGELOG.md−5
This diff is too big to show here.
test/external-static-plugin/plugin/plugin.cabal−12
This diff is too big to show here.
test/external-static-plugin/plugin/src/Plugin.hs−16
This diff is too big to show here.
test/external-static-plugin/prog/CHANGELOG.md−5
This diff is too big to show here.
test/external-static-plugin/prog/app/Main.hs−4
This diff is too big to show here.
test/external-static-plugin/prog/prog.cabal−12
This diff is too big to show here.
test/extra-hackage/default.nix+19−15
This diff is too big to show here.
test/extra-hackage/external-package-user/cabal.project+2−6
This diff is too big to show here.
test/extra-hackage/hackage/hackage/external-package-demo-0.1.0.0-r0-3230db0813f2b468afb3ff7d8bbfcf570019a7faa4a0f59b2ea96743932105e7.nix+7−7
This diff is too big to show here.
test/fully-static/cross.nix+1−1
This diff is too big to show here.
test/fully-static/default.nix+27−14
This diff is too big to show here.
test/ghc-options/cabal.nix+6−14
This diff is too big to show here.
test/ghc-options/stack.nix+4−12
This diff is too big to show here.
test/ghcjs-overlay/CHANGELOG.md−5
This diff is too big to show here.
test/ghcjs-overlay/Main.hs−8
This diff is too big to show here.
test/ghcjs-overlay/MyLib.hs−4
This diff is too big to show here.
test/ghcjs-overlay/Setup.hs−2
This diff is too big to show here.
test/ghcjs-overlay/cabal.project−2
This diff is too big to show here.
test/ghcjs-overlay/default.nix−60
This diff is too big to show here.
test/ghcjs-overlay/ghcjs-overlay-test.cabal−21
This diff is too big to show here.
test/githash/default.nix−71
This diff is too big to show here.
test/githash/githash-test.cabal−16
This diff is too big to show here.
test/githash/src/Main.hs−15
This diff is too big to show here.
test/haskell-language-server/cabal.nix−12
This diff is too big to show here.
test/haskell-language-server/stack.nix−26
This diff is too big to show here.
test/index-state/default.nix−50
This diff is too big to show here.
test/lookup-sha256/default.nix+12
This diff is too big to show here.
test/project-flags/cabal.nix+6−6
This diff is too big to show here.
test/project-flags/stack.nix+4−6
This diff is too big to show here.
This diff is too big to show here.
test/setup-deps/cabal.project+2
This diff is too big to show here.
test/setup-deps/default.nix+23−18
This diff is too big to show here.
test/setup-deps/pkg/Setup.hs−5
This diff is too big to show here.
test/setup-deps/pkg/pkg.cabal−1
This diff is too big to show here.
test/sha256map/default.nix−21
This diff is too big to show here.
test/shell-for-setup-deps/cabal.project+2
This diff is too big to show here.
test/shell-for-setup-deps/default.nix+22−17
This diff is too big to show here.
test/shell-for-setup-deps/pkg/pkg.cabal−1
This diff is too big to show here.
test/shell-for/.plan.nix/pkga.nix+44−13
This diff is too big to show here.
test/shell-for/.plan.nix/pkgb.nix+54−23
This diff is too big to show here.
test/shell-for/default.nix+21−21
This diff is too big to show here.
test/shell-for/pkgb/pkgb.cabal+1−1
This diff is too big to show here.
test/shell-for/pkgs.nix+164−250
This diff is too big to show here.
test/snapshots/default.nix+21−8
This diff is too big to show here.
test/stack-local-resolver-subdir/.gitignore−2
This diff is too big to show here.
test/stack-local-resolver-subdir/default.nix−16
This diff is too big to show here.
test/stack-local-resolver-subdir/package.yaml−7
This diff is too big to show here.
test/stack-local-resolver-subdir/snapshot/snapshot.yaml−4
This diff is too big to show here.
test/stack-local-resolver-subdir/src/Lib.hs−6
This diff is too big to show here.
test/stack-local-resolver-subdir/stack.yaml−4
This diff is too big to show here.
test/stack-local-resolver/default.nix+2−4
This diff is too big to show here.
test/stack-remote-resolver/.gitignore−2
This diff is too big to show here.
test/stack-remote-resolver/default.nix−17
This diff is too big to show here.
test/stack-remote-resolver/package.yaml−7
This diff is too big to show here.
test/stack-remote-resolver/src/Lib.hs−6
This diff is too big to show here.
test/stack-remote-resolver/stack.yaml−4
This diff is too big to show here.
test/stack-simple/default.nix+3−5
This diff is too big to show here.
test/stack-simple/pkgs.nix+1−7
This diff is too big to show here.
test/stack-simple/stack-simple.nix+46−15
This diff is too big to show here.
test/stack-source-repo/default.nix+1−3
This diff is too big to show here.
test/sublib-docs/Setup.hs−2
This diff is too big to show here.
test/sublib-docs/default.nix−61
This diff is too big to show here.
test/sublib-docs/lib/Lib.hs−6
This diff is too big to show here.
test/sublib-docs/slib/Slib.hs−6
This diff is too big to show here.
test/sublib-docs/src/Main.hs−4
This diff is too big to show here.
test/sublib-docs/sublib-docs.cabal−47
This diff is too big to show here.
This diff is too big to show here.
test/th-dlls/apps/Main.hs−9
This diff is too big to show here.
test/th-dlls/default.nix−24
This diff is too big to show here.
test/th-dlls/src/Lib.hs−14
This diff is too big to show here.
test/th-dlls/th-dlls.cabal−24
This diff is too big to show here.
This diff is too big to show here.
test/with-packages/.plan.nix/test-with-packages.nix+42−11
This diff is too big to show here.
test/with-packages/default.nix+35−50
This diff is too big to show here.
test/with-packages/pkgs.nix+118−161
This diff is too big to show here.