Switch to new seaaye setup

devtest
Lennart Spitzner 2020-09-28 10:49:24 +02:00
parent afb2a42e96
commit 6eb306cfd0
14 changed files with 225 additions and 367 deletions

4
.gitignore vendored
View File

@ -15,3 +15,7 @@ cabal.sandbox.config
\#*.gui\#
cabal.project.local
.ghc.environment.*
/result*
/nix/seaaye-cache
/nix/gcroots
/nix/ci-out

3
nix/.gitignore vendored
View File

@ -1,3 +0,0 @@
nixpkgs.nix
local-extra-deps.nix
gcroots

View File

@ -1,32 +0,0 @@
This nix setup expects the iohk haskell-nix overlay to be available/included
when importing `<nixpkgs>`. Also, you might need a specific commit if you
want to test against all supported ghcs (8.4 - 8.10, currently).
# Useful commands:
~~~~.sh
# enter a shell for a specific build-plan
# (cabal-solved with ghc-8.4 in this case)
nix-shell nix/all.nix -A '"hackage-8.4".shell'
# run tests against ghcs 8.4 through 8.10, both against hackage and stackage package sets
nix/ci.sh
~~~~
# Files in this directory:
all.nix - main entrypoint into this package's nix world
via-hackage.nix - how to build this via cabal-solved package-set
via-stackage.nix - how to build via stackage-based package set
nixpkgs.nix - optional - if you want to use a custom nixpkgs channel
(the replacement needs to have haskell-nix overlay _and_
the cabal-check feature enabled though!)
local-extra-deps.nix - optional - for defining local addition deps for
dev testing
(plus some currently unused:)
materialized - materializations of cabal-solved build-plans
plan.nix - manual materialization of unsolved build-plan (used with
stackage snapshot to build package set)

View File

@ -1,103 +0,0 @@
let
importOrElse = maybePath: otherwise:
if builtins.pathExists maybePath then import maybePath else otherwise;
pkgs = importOrElse ./nixpkgs.nix
( let
haskellNix = import (
builtins.fetchTarball
https://github.com/lspitzner/haskell.nix/archive/1873ab6de8f5a072d5405c8803f55b2fb386988f.tar.gz
) { version = 2; };
nixpkgsSrc = haskellNix.sources.nixpkgs-2003;
in
import nixpkgsSrc haskellNix.nixpkgsArgs
);
gitignoreSrc = pkgs.fetchFromGitHub {
owner = "hercules-ci";
repo = "gitignore.nix";
rev = "c4662e662462e7bf3c2a968483478a665d00e717";
sha256 = "sha256:1npnx0h6bd0d7ql93ka7azhj40zgjp815fw2r6smg8ch9p7mzdlx";
};
inherit (import gitignoreSrc { inherit (pkgs) lib; }) gitignoreSource gitignoreFilter;
cleanedSource = pkgs.lib.cleanSourceWith {
name = "butcher";
src = ./..;
filter = p: t:
let baseName = baseNameOf (toString p);
in gitignoreFilter ./.. p t
&& baseName != ".gitignore"
&& baseName != "nix"
&& baseName != "shell.nix"
&& baseName != "default.nix";
};
localExtraDeps = importOrElse ./local-extra-deps.nix (_: []) {inherit pkgs;};
args = {
inherit pkgs;
inherit cleanedSource;
pkg-def-extras = localExtraDeps;
};
inherit (builtins) hasAttr;
in
assert pkgs.lib.assertMsg (hasAttr "haskell-nix" pkgs) "need iohk haskell-nix overlay!";
let
versions = {
# "stack-8.0" = import ./via-stack.nix (args // { resolver = "lts-9.21"; });
# "stack-8.2" = import ./via-stack.nix (args // { resolver = "lts-11.22"; });
"stackage-8.4" = import ./via-stackage.nix (args // {
# resolver = "lts-12.26";
stackFile = "stack-8.4.yaml";
ghc-ver = "ghc844";
});
"stackage-8.6" = import ./via-stackage.nix (args // {
# resolver = "lts-14.27";
stackFile = "stack-8.6.yaml";
ghc-ver = "ghc865";
});
"stackage-8.8" = import ./via-stackage.nix (args // {
# resolver = "lts-15.12";
stackFile = "stack-8.8.yaml";
ghc-ver = "ghc883";
});
"hackage-8.4" = import ./via-hackage.nix (args // {
ghc-ver = "ghc844";
index-state = "2020-05-01T00:00:00Z";
# plan-sha256 = "0s6rfanb6zxhr5zbinp7h25ahwasciwj3ambsr6zdxm1l782b3ap";
# materialized = ./materialized/hackage-8.4;
configureArgs = "--allow-newer='multistate:*'";
});
"hackage-8.6" = import ./via-hackage.nix (args // {
ghc-ver = "ghc865";
index-state = "2020-05-01T00:00:00Z";
# plan-sha256 = "01m95xirrh00dvdxrpsx8flhcwlwcvgr3diwlnkw7lj5f3i7rfrl";
# materialized = ./materialized/hackage-8.6;
configureArgs = "--allow-newer='multistate:*'";
});
"hackage-8.8" = import ./via-hackage.nix (args // {
ghc-ver = "ghc883";
index-state = "2020-05-01T00:00:00Z";
# plan-sha256 = "14qs7ynlf7p2qvdk8sf498y87ss5vab3ylnbpc8sacqbpv2hv4pf";
# materialized = ./materialized/hackage-8.8;
configureArgs = "--allow-newer='multistate:*'";
});
} // (if hasAttr "ghc8101" pkgs.haskell-nix.compiler
then {
"hackage-8.10" = import ./via-hackage.nix (args // {
ghc-ver = "ghc8101";
index-state = "2020-06-06T00:00:00Z";
# index-sha256 = "1h1x65840jl6w2qvyq9csc7b3ivadr933glarnmydk2b23vw2i77";
# plan-sha256 = "1s8a6cb5qgf4ky5s750rzx6aa52slp1skazh8kbx0dbfjd6df7yw";
# materialized = ./materialized/hackage-8.10;
configureArgs = "--allow-newer='multistate:*' --constraint 'splitmix<0.1'";
});
} else builtins.trace "warn: ghc 8.10 is not avaiable, will not be tested!" {}
);
in
versions // {
inherit cleanedSource;
default = versions."stackage-8.8";
roots = pkgs.linkFarm "haskell-nix-roots"
[ { name = "haskell-nix-roots-ghc844" ; path = pkgs.haskell-nix.roots "ghc844"; }
{ name = "haskell-nix-roots-ghc865" ; path = pkgs.haskell-nix.roots "ghc865"; }
{ name = "haskell-nix-roots-ghc883" ; path = pkgs.haskell-nix.roots "ghc883"; }
{ name = "haskell-nix-roots-ghc8101"; path = pkgs.haskell-nix.roots "ghc8101"; }
];
}

View File

@ -1,50 +0,0 @@
OUTDIR="ci-out"
SUMMARY="$OUTDIR/0-summary"
CABAL_CHECK_ATTRPATH="hackage-8.10"
set -x
mkdir -p "$OUTDIR"
echo "# test summary" > "$SUMMARY"
function build-one {
local ATTRPATH=$1
# nix-build --no-out-link nix/all.nix -A "\"$ATTRPATH\".butcher.components.library"\
# 2> >(tee "$OUTDIR/$ATTRPATH-1-build-lib.txt" >&2)
# (($? == 0)) || { echo "$ATTRPATH: build src failed" >> "$SUMMARY"; return 1; }
# nix-build --no-out-link nix/all.nix -A "\"$ATTRPATH\".butcher.components.tests"\
# 2> >(tee "$OUTDIR/$ATTRPATH-2-build-test.txt" >&2)
# (($? == 0)) || { echo "$ATTRPATH: build test failed" >> "$SUMMARY"; return 1; }
OUT=$(nix-build -o "$OUTDIR/$ATTRPATH-test-result.txt" nix/all.nix -A "\"$ATTRPATH\".butcher.checks.tests"\
2> >(tee "$OUTDIR/$ATTRPATH-build.txt" >&2))
(($? == 0)) || { echo "$ATTRPATH: run test failed" >> "$SUMMARY"; return 1; }
echo "$ATTRPATH: $(grep examples "$OUTDIR/$ATTRPATH-test-result.txt")" >> "$SUMMARY"
}
function cabal-check {
nix-build --no-out-link nix/all.nix -A "\"$CABAL_CHECK_ATTRPATH\".checks.cabal-check"\
2> >(tee "$OUTDIR/cabal-check.txt" >&2)
(($? == 0)) || { echo "cabal-check: failed" >> "$SUMMARY"; return 1; }
echo "cabal-check: success" >> "$SUMMARY"
}
find "$OUTDIR" -name "stackage*" -delete
find "$OUTDIR" -name "hackage*" -delete
rm "$OUTDIR/cabal-check.txt"
CLEANEDSOURCE=$(nix-instantiate --eval --read-write-mode nix/all.nix -A "cleanedSource.outPath")
(($? == 0)) || exit 1
( eval "cd $CLEANEDSOURCE; find" ) > "$OUTDIR/1-cleanedSource.txt"
build-one "stackage-8.4"
build-one "stackage-8.6"
build-one "stackage-8.8"
build-one "hackage-8.4"
build-one "hackage-8.6"
build-one "hackage-8.8"
build-one "hackage-8.10"
cabal-check
cat "$SUMMARY"

View File

@ -1,25 +0,0 @@
set -ex
ROOTSDIR="nix/gcroots"
function create-root {
local ATTRPATH=$1
nix-build -o "${ROOTSDIR}/${ATTRPATH}-shell" nix/all.nix -A "\"$ATTRPATH\".shell"
nix-build -o "${ROOTSDIR}/${ATTRPATH}-test" nix/all.nix -A "\"$ATTRPATH\".butcher.components.tests.tests"
nix-build -o "${ROOTSDIR}/${ATTRPATH}-plan" nix/all.nix -A "\"$ATTRPATH\".butcher-plan"
nix-build -o "${ROOTSDIR}/${ATTRPATH}-nix" nix/all.nix -A "\"$ATTRPATH\".butcher-nix" || true
}
mkdir -p "$ROOTSDIR"
nix-build -o "${ROOTSDIR}/haskell-nix-roots" nix/all.nix -A "roots"
create-root "stackage-8.4"
create-root "stackage-8.6"
create-root "stackage-8.8"
create-root "hackage-8.4"
create-root "hackage-8.6"
create-root "hackage-8.8"
create-root "hackage-8.10"

View File

@ -1,61 +0,0 @@
{ pkgs
, cleanedSource
, pkg-def-extras ? []
, ghc-ver
, index-state
, index-sha256 ? null
, plan-sha256 ? null
, materialized ? null
, configureArgs ? ""
}:
let
butcher-nix = pkgs.haskell-nix.callCabalProjectToNix {
src = cleanedSource;
inherit index-state index-sha256 plan-sha256 materialized configureArgs;
# ghc = pkgs.haskell-nix.compiler.${ghc-ver};
compiler-nix-name = ghc-ver;
};
butcher-plan = pkgs.haskell-nix.importAndFilterProject { inherit (butcher-nix) projectNix sourceRepos src; };
in rec {
inherit butcher-nix butcher-plan pkgs;
hsPkgs =
let
in let pkg-set = pkgs.haskell-nix.mkCabalProjectPkgSet
{ plan-pkgs = butcher-plan;
pkg-def-extras = pkg-def-extras;
modules = [
{ ghc.package = pkgs.haskell-nix.compiler.${ghc-ver}; }
];
};
in pkg-set.config.hsPkgs;
inherit (hsPkgs) butcher;
inherit (hsPkgs.butcher) checks;
shell = hsPkgs.shellFor {
# Include only the *local* packages of your project.
packages = ps: with ps; [
butcher
];
# Builds a Hoogle documentation index of all dependencies,
# and provides a "hoogle" command to search the index.
withHoogle = false;
# You might want some extra tools in the shell (optional).
# Some common tools can be added with the `tools` argument
# tools = { cabal = "3.2.0.0"; };
# See overlays/tools.nix for more details
tools = { ghcid = "0.8.7"; cabal = "3.2.0.0"; };
# Some you may need to get some other way.
buildInputs = with pkgs.haskellPackages;
[ bash pkgs.nix ];
# Prevents cabal from choosing alternate plans, so that
# *all* dependencies are provided by Nix.
exactDeps = true;
};
}

View File

@ -1,92 +0,0 @@
{ pkgs
, ghc-ver
, cleanedSource
, stackFile
, pkg-def-extras ? []
}:
let
# package-desc = import ./plan.nix;
# butcher-plan = {
# inherit resolver;
# extras = hackage:
# { butcher = args: package-desc args // {
# src = pkgs.haskell-nix.cleanSourceHaskell {
# src = pkgs.haskell-nix.haskellLib.cleanGit { src = ./..; name = "butcher"; };
# name = "butcher";
# };
# };
# };
# };
# this does not work at all, does not use local package (!)
# butcher-plan = (pkgs.haskell-nix.importAndFilterProject (
# (pkgs.haskell-nix.callStackToNix {
# name = "butcher-plan";
# src = ./..;
# stackYamlFile = builtins.toFile "stack.yaml" ''
# resolver: ${resolver}
# packages:
# - '.'
# extra-deps: []
# extra-package-dbs: []
# '';
# ignorePackageYaml = true;
# })
# ));
cleanedSource = pkgs.haskell-nix.cleanSourceHaskell { name = "butcher-"+stackFile; src = ./..; };
butcher-nix = pkgs.haskell-nix.callStackToNix {
name = "butcher";
src = cleanedSource;
stackYaml = stackFile;
};
butcher-plan = pkgs.haskell-nix.importAndFilterProject butcher-nix;
# butcher-pkgs = {
# inherit (butcher-plan.pkgs) modules resolver;
# extras = butcher-plan.pkgs.extras ps;
# };
generatedCache = pkgs.haskell-nix.genStackCache {
src = cleanedSource;
stackYaml = stackFile;
};
hsPkgs = (pkgs.haskell-nix.mkStackPkgSet {
stack-pkgs = butcher-plan;
pkg-def-extras = pkg-def-extras;
modules = pkgs.lib.singleton (pkgs.haskell-nix.mkCacheModule generatedCache);
}).config.hsPkgs;
in {
inherit butcher-nix butcher-plan hsPkgs pkgs;
inherit (hsPkgs) butcher;
inherit (hsPkgs.butcher) checks;
shell = hsPkgs.shellFor {
# Include only the *local* packages of your project.
packages = ps: with ps; [
butcher
];
# Builds a Hoogle documentation index of all dependencies,
# and provides a "hoogle" command to search the index.
withHoogle = false;
# You might want some extra tools in the shell (optional).
# Some common tools can be added with the `tools` argument
# tools = { cabal = "3.2.0.0"; };
# See overlays/tools.nix for more details
tools = { ghcid = "0.8.7"; cabal = "3.2.0.0"; };
# Some you may need to get some other way.
buildInputs = with pkgs.haskellPackages;
[ bash pkgs.nix ];
# Prevents cabal from choosing alternate plans, so that
# *all* dependencies are provided by Nix.
exactDeps = true;
};
}
# pkgs.haskell-nix.stackProject {
# src = pkgs.haskell-nix.haskellLib.cleanGit { src = ./.; name = "butcher"; };
# pkg-def-extras = pkg-def-extras;
# modules = [
# { doHaddock = false; }
# ];
# }

54
seaaye.nix Normal file
View File

@ -0,0 +1,54 @@
{ seaaye-spec = 1;
haskell-nix-url = https://github.com/input-output-hk/haskell.nix/archive/506208fc9226e207a7beb1b4a26bbd9504a0f680.tar.gz;
haskell-nix-nixpkgs = "nixpkgs-2205";
package-name = "butcher";
targets =
{
hackage-8-06 = {
resolver = "hackage";
index-state = "2022-07-01T00:00:00Z";
ghc-ver = "ghc865";
};
hackage-8-08 = {
resolver = "hackage";
index-state = "2022-07-01T00:00:00Z";
ghc-ver = "ghc884";
};
hackage-8-10 = {
resolver = "hackage";
index-state = "2022-07-01T00:00:00Z";
ghc-ver = "ghc8107";
};
stackage-8-06 = {
resolver = "stackage";
stackFile = "stack-8-6.yaml";
ghc-ver = "ghc865";
};
stackage-8-08 = {
resolver = "stackage";
stackFile = "stack-8-8.yaml";
ghc-ver = "ghc884";
};
stackage-8-10 = {
resolver = "stackage";
stackFile = "stack-8-10.yaml";
ghc-ver = "ghc8107";
};
};
module-flags = [
# N.B.: There are haskell-nix module options. See the haskell-nix docs
# for details. Also, be careful about typos: In many cases you
# will not get errors but the typo'd flag will just not have any
# effect!
# { packages.my-package.flags.my-package-examples-examples = true; }
{ packages.butcher.flags.butcher-examples = true; }
];
default-target = "hackage-8-06";
do-check-hackage = "hackage.haskell.org";
do-check-changelog = "changelog.md";
cabal-project-local = ''
package butcher
flags: +butcher-examples
'';
# local-config-path = ./seaaye-local.nix;
}

View File

@ -11,7 +11,7 @@
#
# resolver: ./custom-snapshot.yaml
# resolver: https://example.com/snapshots/2018-01-01.yaml
resolver: lts-15.12
resolver: lts-18.13
# User packages to be built.
# Various formats can be used as shown in the example below.

66
stack-8-8.yaml Normal file
View File

@ -0,0 +1,66 @@
# Resolver to choose a 'specific' stackage snapshot or a compiler version.
# A snapshot resolver dictates the compiler version and the set of packages
# to be used for project dependencies. For example:
#
# resolver: lts-3.5
# resolver: nightly-2015-09-21
# resolver: ghc-7.10.2
#
# The location of a snapshot can be provided as a file or url. Stack assumes
# a snapshot provided as a file might change, whereas a url resource does not.
#
# resolver: ./custom-snapshot.yaml
# resolver: https://example.com/snapshots/2018-01-01.yaml
resolver: lts-16.31
# User packages to be built.
# Various formats can be used as shown in the example below.
#
# packages:
# - some-directory
# - https://example.com/foo/bar/baz-0.0.2.tar.gz
# subdirs:
# - auto-update
# - wai
packages:
- .
# The following packages have been ignored due to incompatibility with the
# resolver compiler, dependency conflicts with other packages
# or unsatisfied dependencies.
#- .
# Dependency packages to be pulled from upstream that are not in the resolver.
# These entries can reference officially published versions as well as
# forks / in-progress versions pinned to a git hash. For example:
#
# extra-deps:
# - acme-missiles-0.3
# - git: https://github.com/commercialhaskell/stack.git
# commit: e7b331f14bcffb8367cd58fbfc8b40ec7642100a
#
extra-deps:
- barbies-2.0.2.0
# Override default flag values for local packages and extra-deps
# flags: {}
# Extra package databases containing global packages
# extra-package-dbs: []
# Control whether we use the GHC we find on the path
# system-ghc: true
#
# Require a specific version of stack, using version ranges
# require-stack-version: -any # Default
# require-stack-version: ">=2.1"
#
# Override the architecture used by stack, especially useful on Windows
# arch: i386
# arch: x86_64
#
# Extra directories used by stack for building
# extra-include-dirs: [/path/to/dir]
# extra-lib-dirs: [/path/to/dir]
#
# Allow a newer minor version of GHC than the snapshot specifies
# compiler-check: newer-minor

100
stack-8-8_.yaml Normal file
View File

@ -0,0 +1,100 @@
# This file was automatically generated by 'stack init'
#
# Some commonly used options have been documented as comments in this file.
# For advanced use and comprehensive documentation of the format, please see:
# https://docs.haskellstack.org/en/stable/yaml_configuration/
# Resolver to choose a 'specific' stackage snapshot or a compiler version.
# A snapshot resolver dictates the compiler version and the set of packages
# to be used for project dependencies. For example:
#
# resolver: lts-3.5
# resolver: nightly-2015-09-21
# resolver: ghc-7.10.2
#
# The location of a snapshot can be provided as a file or url. Stack assumes
# a snapshot provided as a file might change, whereas a url resource does not.
#
# resolver: ./custom-snapshot.yaml
# resolver: https://example.com/snapshots/2018-01-01.yaml
resolver:
compiler: ghc-8.8.1
# User packages to be built.
# Various formats can be used as shown in the example below.
#
# packages:
# - some-directory
# - https://example.com/foo/bar/baz-0.0.2.tar.gz
# subdirs:
# - auto-update
# - wai
packages:
# The following packages have been ignored due to incompatibility with the
# resolver compiler, dependency conflicts with other packages
# or unsatisfied dependencies.
- .
# Dependency packages to be pulled from upstream that are not in the resolver.
# These entries can reference officially published versions as well as
# forks / in-progress versions pinned to a git hash. For example:
#
# extra-deps:
# - acme-missiles-0.3
# - git: https://github.com/commercialhaskell/stack.git
# commit: e7b331f14bcffb8367cd58fbfc8b40ec7642100a
#
extra-deps:
- bifunctors-5.5.5@sha256:e89def05aa5a9c729435592c11a35b54747558b1ec15c7283c7d61df03873ab6,3300
- deque-0.4.2.3@sha256:7cc8ddfc77df351ff9c16e838ccdb4a89f055c80a3111e27eba8d90e8edde7d0,1853
- extra-1.6.18@sha256:5f1fff126f0ae47b701fff5aa8462dc63cb44465d5a724b0afd20a3d731903af,2705
- free-5.1.2@sha256:cd57d8cbaf8ef37620219095694b83e3b3baf3b06e1c59f422a4954d3a5f4c42,4116
- microlens-0.4.11.2@sha256:765ec5cdd12a459e65161f0e3cdbce84652bf634d62af3911ba24e4bf8d4d944,4455
- microlens-th-0.4.3.2@sha256:dd09aa02b7dc235a91b1e9ea6cd4be2f24c74ef067bc4e5fa2a5453c8b999d2c,2199
- multistate-0.8.0.2@sha256:fbb0d8ade9ef73c8ed92488f5804d0ebe75d3a9c24bf53452bc3a4f32b34cb2e,3713
- unsafe-0.0@sha256:93e58ac9aa1f4f9c50e12662a211f6c0b6f28b65c570ff17359851451c9bcb3a,1851
- void-0.7.3@sha256:13d30f62fcdf065e595d679d4ac8b4b0c1bb1a1b73db7b5b5a8f857cb5c8a546,1857
- base-orphans-0.8.1@sha256:defd0057b5db93257528d89b5b01a0fee9738e878c121c686948ac4aa5dded63,2927
- clock-0.8@sha256:b4ae207e2d3761450060a0d0feb873269233898039c76fceef9cc1a544067767,4113
- comonad-5.0.5@sha256:b33bc635615647916e374a27e96c3de4df390684001eab6291283471cd3a9b62,3345
- distributive-0.6@sha256:26507cf231eb10db1eb54bc358477418ce87d5077ff76c66743925fb49494b54,3018
- exceptions-0.10.3@sha256:6e8e66f3acf2ea59f9e100c55a885591c1981789ac2222022ff523c30990efb8,2251
- monad-control-1.0.2.3@sha256:a3ae888d2fed2e2a0ca33ae11e2480219e07312bccf1a02ffe2ba2e3ec5913ee,2255
- profunctors-5.4@sha256:545fdbc05131fa29e6612e915ec5d4dadfbcf3a6def86c8b95ca26593b21b259,2073
- semigroupoids-5.3.3@sha256:260b62cb8539bb988e7f551f10a45ef1c81421c0d79010e9bde9321bad4982a7,7363
- semigroups-0.19.1@sha256:ecae129621e0d2f77bef2f01e4458c2e0567ab6e1f39579c61d7cec8058ebb0e,6262
- strict-list-0.1.4@sha256:0fa869e2c21b710b7133e8628169f120fe6299342628edd3d5087ded299bc941,1631
- tagged-0.8.6@sha256:7093ee39c9779beeacffa4b0035a0e8a25da16afcd1c1a876930207fb8e31d1c,2606
- th-abstraction-0.3.1.0@sha256:96042f6658f2dccfac03b33f0fd59f62b1f65b9b0a765d8a2ea6026f4081ee4a,1838
- transformers-base-0.4.5.2@sha256:e4d8155470905ba2942033a1537fc4cf91927d1c9b34693fd57ddf3bc02334af,1550
- cabal-doctest-1.0.7@sha256:2a9d524b9593fc5054c0bcfda9aeaffd4203f3663b77fab57db35ddd48ce6ad3,1573
- contravariant-1.5.2@sha256:853259271870000c007a281f0bf0bf6e1aaa97c5fd5cd5734d7b0d79b9de2af5,2761
- hashable-1.3.0.0@sha256:7ad8edaa681e81162ddddb4d703a9cffe6a0c9ddcfede31cf6569507ed3f1ddb,5179
- transformers-compat-0.6.5@sha256:50b00c57bf3fc379ec2477bfc261a2aebc983084488478adb29854f193af4696,5490
- unordered-containers-0.2.10.0@sha256:5e9b095a9283d9e2f064fec73a81a6b6ea0b7fda3f219a8175785d2d2a3de204,5199
- StateVar-1.2@sha256:9ab3e4a0e252d28bc2f799c83e0725c3e23e8d3b722cff0fdb9822e64b6c16ac,1413
allow-newer: True
# Override default flag values for local packages and extra-deps
# flags: {}
# Extra package databases containing global packages
# extra-package-dbs: []
# Control whether we use the GHC we find on the path
# system-ghc: true
#
# Require a specific version of stack, using version ranges
# require-stack-version: -any # Default
# require-stack-version: ">=2.1"
#
# Override the architecture used by stack, especially useful on Windows
# arch: i386
# arch: x86_64
#
# Extra directories used by stack for building
# extra-include-dirs: [/path/to/dir]
# extra-lib-dirs: [/path/to/dir]
#
# Allow a newer minor version of GHC than the snapshot specifies
# compiler-check: newer-minor