...
 
Commits (9)
......@@ -23,19 +23,13 @@ jobs:
name: Bootstrap on Linux
runs-on: ubuntu-18.04
steps:
- name: Set PATH
run: |
echo "::add-path::/opt/ghc/8.6.5/bin"
- uses: actions/checkout@v2
- name: bootstrap.sh
env:
EXTRA_CONFIGURE_OPTS: ""
- name: bootstrap.py
run: |
cd cabal-install
sh ./bootstrap.sh --no-doc
python3 bootstrap/bootstrap.py -w /opt/ghc/8.6.5/bin/ghc -d bootstrap/linux-8.6.5.json
- name: Smoke test
run: |
$HOME/.cabal/bin/cabal --version
packages/tmp/bin/cabal --version
boostrap-macos:
name: Bootstrap on macOS
......@@ -49,17 +43,13 @@ jobs:
cd ghc-*
./configure --prefix=/opt/ghc/8.6.5
sudo make install
- name: Set PATH
run: |
echo "::add-path::/opt/ghc/8.6.5/bin"
echo "::add-path::$HOME/.cabal/bin"
- uses: actions/checkout@v2
- name: bootstrap.sh
env:
EXTRA_CONFIGURE_OPTS: ""
# We use linux dependencies
- name: bootstrap.py
run: |
cd cabal-install
sh ./bootstrap.sh --no-doc
python3 bootstrap/bootstrap.py -w /opt/ghc/8.6.5/bin/ghc -d bootstrap/linux-8.6.5.json
- name: Smoke test
run: |
$HOME/.cabal/bin/cabal --version
packages/tmp/bin/cabal --version
......@@ -226,3 +226,23 @@ weeder :
.PHONY : tags
tags :
hasktags -b Cabal/Distribution Cabal/Cabal-described/src Cabal/Language cabal-install/Distribution cabal-testsuite/src
hasktags -b Cabal/src Cabal/Cabal-described/src cabal-install/src cabal-testsuite/src
# boostrapping
##############################################################################
bootstrap-plans-linux: phony
@if [ $$(uname) != "Linux" ]; then echo "Not Linux"; false; fi
cabal v2-build --project=cabal.project.release --with-compiler ghc-8.6.5 --dry-run cabal-install:exe:cabal
cp dist-newstyle/cache/plan.json bootstrap/linux-8.6.5.plan.json
cabal v2-build --project=cabal.project.release --with-compiler ghc-8.8.3 --dry-run cabal-install:exe:cabal
cp dist-newstyle/cache/plan.json bootstrap/linux-8.8.3.plan.json
cabal v2-build --project=cabal.project.release --with-compiler ghc-8.10.1 --dry-run cabal-install:exe:cabal
cp dist-newstyle/cache/plan.json bootstrap/linux-8.10.1.plan.json
bootstrap-jsons-linux: phony
@if [ $$(uname) != "Linux" ]; then echo "Not Linux"; false; fi
cabal v2-build --builddir=dist-newstyle-bootstrap --project=cabal.project.bootstrap cabal-bootstrap-gen
cabal v2-run -vnormal+stderr --builddir=dist-newstyle-bootstrap --project=cabal.project.bootstrap cabal-bootstrap-gen -- bootstrap/linux-8.6.5.plan.json | python -m json.tool | tee bootstrap/linux-8.6.5.json
cabal v2-run -vnormal+stderr --builddir=dist-newstyle-bootstrap --project=cabal.project.bootstrap cabal-bootstrap-gen -- bootstrap/linux-8.8.3.plan.json | python -m json.tool | tee bootstrap/linux-8.8.3.json
cabal v2-run -vnormal+stderr --builddir=dist-newstyle-bootstrap --project=cabal.project.bootstrap cabal-bootstrap-gen -- bootstrap/linux-8.10.1.plan.json | python -m json.tool | tee bootstrap/linux-8.10.1.json
......@@ -23,19 +23,13 @@ jobs:
name: Bootstrap on Linux
runs-on: ubuntu-18.04
steps:
- name: Set PATH
run: |
echo "::add-path::/opt/ghc/8.6.5/bin"
- uses: actions/checkout@v2
- name: bootstrap.sh
env:
EXTRA_CONFIGURE_OPTS: ""
- name: bootstrap.py
run: |
cd cabal-install
sh ./bootstrap.sh --no-doc
python3 bootstrap/bootstrap.py -w /opt/ghc/8.6.5/bin/ghc -d bootstrap/linux-8.6.5.json
- name: Smoke test
run: |
$HOME/.cabal/bin/cabal --version
packages/tmp/bin/cabal --version
boostrap-macos:
name: Bootstrap on macOS
......@@ -49,17 +43,13 @@ jobs:
cd ghc-*
./configure --prefix=/opt/ghc/8.6.5
sudo make install
- name: Set PATH
run: |
echo "::add-path::/opt/ghc/8.6.5/bin"
echo "::add-path::$HOME/.cabal/bin"
- uses: actions/checkout@v2
- name: bootstrap.sh
env:
EXTRA_CONFIGURE_OPTS: ""
# We use linux dependencies
- name: bootstrap.py
run: |
cd cabal-install
sh ./bootstrap.sh --no-doc
python3 bootstrap/bootstrap.py -w /opt/ghc/8.6.5/bin/ghc -d bootstrap/linux-8.6.5.json
- name: Smoke test
run: |
$HOME/.cabal/bin/cabal --version
packages/tmp/bin/cabal --version
# Bootstrapping cabal-install
This utility is only intended for use in building cabal-install
on a new platform. If you already have a functional (if dated) cabal-install
please rather run `cabal v2-install`.
The typical usage is porting to a new linux architecture,
then the `linux-ghcvec.json` file is available in `bootstrap/` folder:
On a (linux) system you are boostrapping, run
bootstrap.py -d linux-ghcver.json -w /path/to-ghc
To generate the `platform-ghcver` files for other platforms, do:
1. On a system with functional cabal-install, install the same GHC version
as you will use to bootstrap on the host system.
2. Build a dependency description file (`platform-ghcver.json`, e.g. `linux-8.8.3.json`) by running:
```sh
cabal v2-build --with-compiler=/path/to/ghc --dry-run cabal-install:exe:cabal
cp dist-newstyle/cache/plan.json bootstrap/platform-ghcver.plan.json
cabal v2-build --builddir=dist-newstyle-bootstrap --project=cabal.project.bootstrap cabal-bootstrap-gen
cabal v2-run -vnormal+stderr --builddir=dist-newstyle-bootstrap --project=cabal.project.bootstrap cabal-bootstrap-gen -- bootstrap/platform-ghcver.plan.json | tee bootstrap/platform-ghcver.json
```
3. You may need to tweak `bootstrap/platform-ghcver.json` file manually,
for example toggle flags.
There are rules in top-level `Makefile` for generation of these files.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
bootstrap.py - bootstrapping utility for cabal-install.
See bootstrap/README.md for usage instructions.
"""
USAGE = """
This utility is only intended for use in building cabal-install
on a new platform. If you already have a functional (if dated) cabal-install
please rather run `cabal v2-install .`.
"""
from enum import Enum
import hashlib
import logging
import json
from pathlib import Path
import shutil
import subprocess
from textwrap import dedent
from typing import Set, Optional, Dict, List, Tuple, \
NewType, BinaryIO, NamedTuple, TypeVar
#logging.basicConfig(level=logging.INFO)
PACKAGES = Path('packages')
PKG_DB = PACKAGES / 'packages.conf'
PackageName = NewType('PackageName', str)
Version = NewType('Version', str)
SHA256Hash = NewType('SHA256Hash', str)
class PackageSource(Enum):
HACKAGE = 'hackage'
LOCAL = 'local'
BuiltinDep = NamedTuple('BuiltinDep', [
('package', PackageName),
('version', Version),
])
BootstrapDep = NamedTuple('BootstrapDep', [
('package', PackageName),
('version', Version),
('source', PackageSource),
# source tarball SHA256
('src_sha256', Optional[SHA256Hash]),
# `revision` is only valid when source == HACKAGE.
('revision', Optional[int]),
('cabal_sha256', Optional[SHA256Hash]),
('flags', List[str]),
])
BootstrapInfo = NamedTuple('BootstrapInfo', [
('builtin', List[BuiltinDep]),
('dependencies', List[BootstrapDep]),
])
class Compiler:
def __init__(self, ghc_path: Path):
if not ghc_path.is_file():
raise TypeError(f'GHC {ghc_path} is not a file')
self.ghc_path = ghc_path.resolve()
info = self._get_ghc_info()
self.version = info['Project version']
#self.lib_dir = Path(info['LibDir'])
#self.ghc_pkg_path = (self.lib_dir / 'bin' / 'ghc-pkg').resolve()
self.ghc_pkg_path = (self.ghc_path.parent / 'ghc-pkg').resolve()
if not self.ghc_pkg_path.is_file():
raise TypeError(f'ghc-pkg {self.ghc_pkg_path} is not a file')
self.hsc2hs_path = (self.ghc_path.parent / 'hsc2hs').resolve()
if not self.hsc2hs_path.is_file():
raise TypeError(f'hsc2hs {self.hsc2hs_path} is not a file')
def _get_ghc_info(self) -> Dict[str,str]:
from ast import literal_eval
p = subprocess_run([self.ghc_path, '--info'], stdout=subprocess.PIPE, check=True, encoding='UTF-8')
out = p.stdout.replace('\n', '').strip()
return dict(literal_eval(out))
PackageSpec = Tuple[PackageName, Version]
class BadTarball(Exception):
def __init__(self, path: Path, expected_sha256: SHA256Hash, found_sha256: SHA256Hash):
self.path = path
self.expected_sha256 = expected_sha256
self.found_sha256 = found_sha256
def __str__(self):
return '\n'.join([
f'Bad tarball hash: {str(self.path)}',
f' expected: {self.expected_sha256}',
f' found: {self.found_sha256}',
])
def package_url(package: PackageName, version: Version) -> str:
return f'https://hackage.haskell.org/package/{package}-{version}/{package}-{version}.tar.gz'
def package_cabal_url(package: PackageName, version: Version, revision: int) -> str:
return f'https://hackage.haskell.org/package/{package}-{version}/revision/{revision}.cabal'
def verify_sha256(expected_hash: SHA256Hash, f: Path):
h = hash_file(hashlib.sha256(), f.open('rb'))
if h != expected_hash:
raise BadTarball(f, expected_hash, h)
def fetch_package(package: PackageName,
version: Version,
src_sha256: SHA256Hash,
revision: Optional[int],
cabal_sha256: Optional[SHA256Hash],
) -> Path:
import urllib.request
# Download source distribution
out = PACKAGES / (f'{package}-{version}.tar.gz')
if not out.exists():
print(f'Fetching {package}-{version}...')
out.parent.mkdir(parents=True, exist_ok=True)
url = package_url(package, version)
with urllib.request.urlopen(url) as resp:
shutil.copyfileobj(resp, out.open('wb'))
# Download revised cabal file
cabal_file = PACKAGES / f'{package}.cabal'
if revision is not None and not cabal_file.exists():
assert cabal_sha256 is not None
url = package_cabal_url(package, version, revision)
with urllib.request.urlopen(url) as resp:
shutil.copyfileobj(resp, cabal_file.open('wb'))
verify_sha256(cabal_sha256, cabal_file)
verify_sha256(src_sha256, out)
return out
def read_bootstrap_info(path: Path) -> BootstrapInfo:
obj = json.load(path.open())
def bi_from_json(o: dict) -> BuiltinDep:
return BuiltinDep(**o)
def dep_from_json(o: dict) -> BootstrapDep:
o['source'] = PackageSource(o['source'])
return BootstrapDep(**o)
builtin = [bi_from_json(dep) for dep in obj['builtin'] ]
deps = [dep_from_json(dep) for dep in obj['dependencies'] ]
return BootstrapInfo(dependencies=deps, builtin=builtin)
def check_builtin(dep: BuiltinDep, ghc: Compiler) -> None:
subprocess_run([str(ghc.ghc_pkg_path), 'describe', f'{dep.package}-{dep.version}'],
check=True, stdout=subprocess.DEVNULL)
print(f'Using {dep.package}-{dep.version} from GHC...')
return
def install_dep(dep: BootstrapDep, ghc: Compiler) -> None:
if dep.source == PackageSource.HACKAGE:
assert dep.src_sha256 is not None
tarball = fetch_package(dep.package, dep.version, dep.src_sha256,
dep.revision, dep.cabal_sha256)
subprocess_run(['tar', 'zxf', tarball.resolve()],
cwd=PACKAGES, check=True)
sdist_dir = PACKAGES / f'{dep.package}-{dep.version}'
# Update cabal file with revision
if dep.revision is not None:
shutil.copyfile(PACKAGES / f'{dep.package}.cabal',
sdist_dir / f'{dep.package}.cabal')
elif dep.source == PackageSource.LOCAL:
if dep.package == 'Cabal':
sdist_dir = Path('Cabal').resolve()
elif dep.package == 'cabal-install':
sdist_dir = Path('cabal-install').resolve()
else:
raise ValueError(f'Unknown local package {dep.package}')
install_sdist(sdist_dir, ghc, dep.flags)
def install_sdist(sdist_dir: Path, ghc: Compiler, flags: List[str]):
prefix = (PACKAGES / 'tmp').resolve()
flags_option = ' '.join(flags)
configure_args = [
f'--package-db={PKG_DB.resolve()}',
f'--prefix={prefix}',
f'--with-compiler={ghc.ghc_path}',
f'--with-hc-pkg={ghc.ghc_pkg_path}',
f'--with-hsc2hs={ghc.hsc2hs_path}',
f'--flags={flags_option}'
]
def check_call(args: List[str]) -> None:
subprocess_run(args, cwd=sdist_dir, check=True)
check_call([str(ghc.ghc_path), '--make', '-package-env', '-', 'Setup'])
check_call(['./Setup', 'configure'] + configure_args)
check_call(['./Setup', 'build'])
check_call(['./Setup', 'install'])
def hash_file(h, f: BinaryIO) -> SHA256Hash:
while True:
d = f.read(1024)
if len(d) == 0:
return SHA256Hash(h.hexdigest())
h.update(d)
# Cabal plan.json representation
UnitId = NewType('UnitId', str)
PlanUnit = NewType('PlanUnit', dict)
def read_plan(project_dir: Path) -> Dict[UnitId, PlanUnit]:
path = project_dir / 'dist-newstyle' / 'cache' / 'plan.json'
plan = json.load(path.open('rb'))
return {
UnitId(c['id']): PlanUnit(c)
for c in plan['install-plan']
}
def bootstrap(info: BootstrapInfo, ghc: Compiler) -> None:
if not PKG_DB.exists():
print(f'Creating package database {PKG_DB}')
PKG_DB.parent.mkdir(parents=True, exist_ok=True)
subprocess_run([ghc.ghc_pkg_path, 'init', PKG_DB])
for dep in info.builtin:
check_builtin(dep, ghc)
for dep in info.dependencies:
install_dep(dep, ghc)
def main() -> None:
import argparse
parser = argparse.ArgumentParser(
description="bootstrapping utility for cabal-install.",
epilog = USAGE,
formatter_class = argparse.RawDescriptionHelpFormatter)
parser.add_argument('-d', '--deps', type=Path, default='bootstrap-deps.json',
help='bootstrap dependency file')
parser.add_argument('-w', '--with-compiler', type=Path,
help='path to GHC')
args = parser.parse_args()
# Find compiler
if args.with_compiler is None:
path = shutil.which('ghc')
if path is None:
raise ValueError("Couldn't find ghc in PATH")
ghc = Compiler(Path(path))
else:
ghc = Compiler(args.with_compiler)
print(f'Bootstrapping cabal-install with GHC {ghc.version} at {ghc.ghc_path}...')
print(dedent("""
DO NOT use this script if you have another recent cabal-install available.
This script is intended only for bootstrapping cabal-install on new
architectures.
"""))
info = read_bootstrap_info(args.deps)
bootstrap(info, ghc)
cabal_path = (PACKAGES / 'tmp' / 'bin' / 'cabal').resolve()
print(dedent(f'''
Bootstrapping finished!
The resulting cabal-install executable can be found at
{cabal_path}
You now should use this to build a full cabal-install distribution
using v2-build.
'''))
def subprocess_run(args, **kwargs):
"Like subprocess.run, but also print what we run"
args_str = ' '.join(map(str, args))
extras = ''
if 'cwd' in kwargs:
extras += f' cwd={kwargs["cwd"]}'
print(f'bootstrap: running{extras} {args_str}')
return subprocess.run(args, **kwargs)
if __name__ == '__main__':
main()
cabal-version: 2.2
name: cabal-bootstrap-gen
version: 0
executable cabal-bootstrap-gen
default-language: Haskell2010
hs-source-dirs: src
ghc-options: -Wall
main-is: Main.hs
build-depends:
, aeson ^>=1.5.2.0
, base ^>=4.12.0.0 || ^>=4.13.0.0 || ^>=4.14.0.0
, bytestring ^>=0.10.8.2
, Cabal ^>=3.2.0.0
, cabal-install-parsers ^>=0.3.0.1
, cabal-plan ^>=0.7.0.0
, containers ^>=0.6.0.1
, text ^>=1.2.3.0
, topograph ^>=1.0.0.1
, transformers ^>=0.5.6.2
{
"builtin": [
{
"package": "rts",
"version": "1.0"
},
{
"package": "ghc-prim",
"version": "0.6.1"
},
{
"package": "integer-gmp",
"version": "1.0.3.0"
},
{
"package": "base",
"version": "4.14.0.0"
},
{
"package": "array",
"version": "0.5.4.0"
},
{
"package": "deepseq",
"version": "1.4.4.0"
},
{
"package": "bytestring",
"version": "0.10.10.0"
},
{
"package": "containers",
"version": "0.6.2.1"
},
{
"package": "binary",
"version": "0.8.8.0"
},
{
"package": "filepath",
"version": "1.4.2.1"
},
{
"package": "time",
"version": "1.9.3"
},
{
"package": "unix",
"version": "2.7.2.2"
},
{
"package": "directory",
"version": "1.3.6.0"
},
{
"package": "transformers",
"version": "0.5.6.2"
},
{
"package": "mtl",
"version": "2.2.2"
},
{
"package": "text",
"version": "1.2.3.2"
},
{
"package": "parsec",
"version": "3.1.14.0"
},
{
"package": "pretty",
"version": "1.1.3.6"
},
{
"package": "process",
"version": "1.6.8.2"
},
{
"package": "ghc-boot-th",
"version": "8.10.1"
},
{
"package": "template-haskell",
"version": "2.16.0.0"
},
{
"package": "stm",
"version": "2.5.0.0"
}
],
"dependencies": [
{
"cabal_sha256": null,
"flags": [
"-bundled-binary-generic"
],
"package": "Cabal",
"revision": null,
"source": "local",
"src_sha256": null,
"version": "3.4.0.0"
},
{
"cabal_sha256": "b704cb6676c03e98267190df797497587576a2e96094550ea143415239bbe66e",
"flags": [],
"package": "network",
"revision": 0,
"source": "hackage",
"src_sha256": "d7ef590173fff2ab522fbc167f3fafb867e4ecfca279eb3ef0d137b51f142c9a",
"version": "3.1.1.1"
},
{
"cabal_sha256": "d2d9ff3a80d9b2d1ff317a354bc0c56cc109c69a4c2449e5fc712d3ddce83ede",
"flags": [],
"package": "network-uri",
"revision": 0,
"source": "hackage",
"src_sha256": "a01c1389f15d2cc2e847914737f706133bb11f0c5f8ee89711a36a25b7afa723",
"version": "2.6.3.0"
},
{
"cabal_sha256": "3c19975fdfd8d057eae58847bda6a79514ad882fd6f8ead72ac0247af34bdfc6",
"flags": [
"-conduit10",
"-mtl1",
"+network-uri",
"-warn-as-error",
"-warp-tests"
],
"package": "HTTP",
"revision": 1,
"source": "hackage",
"src_sha256": "a602d7f30e917164c6a634f8cb1f5df4849048858db01380a0875e16e5aa687b",
"version": "4000.3.14"
},
{
"cabal_sha256": "4c70f1407881059e93550d3742191254296b2737b793a742bd901348fb3e1fb1",
"flags": [
"-examples",
"+integer-gmp",
"+sse2",
"-sse41"
],
"package": "hashable",
"revision": 1,
"source": "hackage",
"src_sha256": "822e5413fbccca6ae884d3aba4066422c8b5d58d23d18b9ecb5c03273bb19ab4",
"version": "1.3.0.0"
},
{
"cabal_sha256": "a178c166856da7ff22fe4500337b54812e94fd2059409452187d72e057ede9cd",
"flags": [
"-bench"
],
"package": "async",
"revision": 1,
"source": "hackage",
"src_sha256": "4b4ab1ac82c45144d82c6daf6cb6ba45eab9957dad44787fa5e869e23d73bbff",
"version": "2.2.2"
},
{
"cabal_sha256": "8cbba2505d4da4f6cfc90cd36c8e8ad0c09c056538481ea00e8b10b78f70cb10",
"flags": [],
"package": "base16-bytestring",
"revision": 0,
"source": "hackage",
"src_sha256": "525689679d5cc80fa532c1d5cfeace0f62bbb54134fad514f1ba00d0e7fe69ba",
"version": "0.1.1.7"
},
{
"cabal_sha256": "190264fef9e65d9085f00ccda419137096d1dc94777c58272bc96821dc7f37c3",
"flags": [],
"package": "base64-bytestring",
"revision": 0,
"source": "hackage",
"src_sha256": "210d6c9042241ca52ee5d89cf221dbeb4d0e64b37391345369035ad2d9b4aca9",
"version": "1.1.0.0"
},
{
"cabal_sha256": "b963d6308db096362d73d9c603b331cf188aa69310195f479dfedf6045d7e602",
"flags": [
"-exe"
],
"package": "cryptohash-sha256",
"revision": 4,
"source": "hackage",
"src_sha256": "52756435dbea248e344fbcbcc5df5307f60dfacf337dfd11ae30f1c7a4da05dd",
"version": "0.11.101.0"
},
{
"cabal_sha256": "5490be9cfbea95e14a7a68b7d055ae8d295822e0b146d2ac8285b3e5a3e3282f",
"flags": [
"-example"
],
"package": "echo",
"revision": 1,
"source": "hackage",
"src_sha256": "704f07310f8272d170f8ab7fb2a2c13f15d8501ef8310801e36964c8eff485ef",
"version": "0.1.3"
},
{
"cabal_sha256": "d50c4d0801a35be7875a040470c09863342514930c82a7d25780a6c2efc4fda9",
"flags": [
"-optimised-mixer"
],
"package": "splitmix",
"revision": 0,
"source": "hackage",
"src_sha256": "1c11c87352ddbb13365380fe163f99bb8f8845ebc96ca1d572e5d3a9bf810bfa",
"version": "0.1"
},
{
"cabal_sha256": "5ca8674e95c46c7eb90f520c26aea22d403625c97697275434afba66ebd32b05",
"flags": [],
"package": "random",
"revision": 0,
"source": "hackage",
"src_sha256": "e4519cf7c058bfd5bdbe4acc782284acc9e25e74487208619ca83cbcd63fb9de",
"version": "1.2.0"
},
{
"cabal_sha256": "4d33a49cd383d50af090f1b888642d10116e43809f9da6023d9fc6f67d2656ee",
"flags": [],
"package": "edit-distance",
"revision": 1,
"source": "hackage",
"src_sha256": "3e8885ee2f56ad4da940f043ae8f981ee2fe336b5e8e4ba3f7436cff4f526c4a",
"version": "0.2.2.1"
},
{
"cabal_sha256": "fb98b08de467d51f788f8bd9391f0e9ab9bd4d8dfc264296b895ffea0d822dfa",
"flags": [
"+no-donna",
"+test-doctests",
"+test-hlint",
"+test-properties"
],
"package": "ed25519",
"revision": 3,
"source": "hackage",
"src_sha256": "d8a5958ebfa9309790efade64275dc5c441b568645c45ceed1b0c6ff36d6156d",
"version": "0.0.5.0"
},
{
"cabal_sha256": "c9d3fa30fb6ab2ba16e037586ca79be6e57ec5f00381b6ee5f293400dbdf5515",
"flags": [
"+ofd-locking"
],
"package": "lukko",
"revision": 0,
"source": "hackage",
"src_sha256": "8a79d113dc0ccef16c24d83379cc457485943027e777529c46362fecc06607d2",
"version": "0.1.1.2"
},
{
"cabal_sha256": "7a715414c4d494c9048cfb6d7634e07e7732ca154cb8938dc85f6ea192192e8c",
"flags": [
"-old-bytestring",
"-old-time"
],
"package": "tar",
"revision": 2,
"source": "hackage",
"src_sha256": "b384449f62b2b0aa3e6d2cb1004b8060b01f21ec93e7b63e7af6d8fad8a9f1de",
"version": "0.5.1.1"
},
{
"cabal_sha256": "d34ddf5fece4d1e9d471b5298f36335bb3cfe12cb5a1b8525c42f0b665382f45",
"flags": [
"-non-blocking-ffi",
"-pkg-config"
],
"package": "zlib",
"revision": 1,
"source": "hackage",
"src_sha256": "f0f810ff173560b60392db448455c0513b3239f48e43cb494b3733aa559621d0",
"version": "0.6.2.1"
},
{
"cabal_sha256": "692c385c085baa2813046ae58e31df21c250346b81c882431b5ffef76451a18a",
"flags": [
"+base48",
"+lukko",
"-mtl21",
"-old-directory",
"+use-network-uri"
],
"package": "hackage-security",
"revision": 2,
"source": "hackage",
"src_sha256": "9162b473af5a21c1ff32a50b972b9acf51f4c901604a22cf08a2dccac2f82f17",
"version": "0.6.0.1"
},
{
"cabal_sha256": "44aa95ca762294ffbb28cf0af9c567d93b5d2c56e4f38ce5385a257d899f968e",
"flags": [],
"package": "regex-base",
"revision": 1,
"source": "hackage",
"src_sha256": "c41f82f5fc1157c961a4cbdc0cd5561e5aa44f339ce6e706d978d97e0ca6b914",
"version": "0.94.0.0"
},
{
"cabal_sha256": "690d1366e9ea6df71ded3daf49ca3d53c63eda3f95937962299b2391824dc3b3",
"flags": [
"-_regex-posix-clib"
],
"package": "regex-posix",
"revision": 1,
"source": "hackage",
"src_sha256": "251300f1a6bb2e91abb8bf513a21981f8fab79c98a65acea2bb6d6a524414521",
"version": "0.96.0.0"
},
{
"cabal_sha256": "0a9a6dd29706258ae60a5c22aecc140a40743b8f08fc324fd9984e7dfbf3a80d",
"flags": [],
"package": "resolv",
"revision": 0,
"source": "hackage",
"src_sha256": "81a2bafad484db123cf8d17a02d98bb388a127fd0f822fa022589468a0e64671",
"version": "0.1.2.0"
},
{
"cabal_sha256": null,
"flags": [
"-debug-conflict-sets",
"-debug-expensive-assertions",
"-debug-tracetree",
"+lukko",
"+native-dns"
],
"package": "cabal-install",
"revision": null,
"source": "local",
"src_sha256": null,
"version": "3.4.0.0"
}
]
}
{"cabal-version":"3.4.0.0","cabal-lib-version":"3.4.0.0","compiler-id":"ghc-8.10.1","os":"linux","arch":"x86_64","install-plan":[{"type":"configured","id":"Cabal-3.4.0.0-inplace","pkg-name":"Cabal","pkg-version":"3.4.0.0","flags":{"bundled-binary-generic":false},"style":"local","pkg-src":{"type":"local","path":"/code/shared-haskell/cabal/Cabal"},"dist-dir":"/code/shared-haskell/cabal/dist-newstyle/build/x86_64-linux/ghc-8.10.1/Cabal-3.4.0.0","depends":["array-0.5.4.0","base-4.14.0.0","binary-0.8.8.0","bytestring-0.10.10.0","containers-0.6.2.1","deepseq-1.4.4.0","directory-1.3.6.0","filepath-1.4.2.1","mtl-2.2.2","parsec-3.1.14.0","pretty-1.1.3.6","process-1.6.8.2","text-1.2.3.2","time-1.9.3","transformers-0.5.6.2","unix-2.7.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"HTTP-4000.3.14-62fbf88bbfbc7cc9314709de72638706f246f307e01c99e24a31e837876c89d4","pkg-name":"HTTP","pkg-version":"4000.3.14","flags":{"conduit10":false,"mtl1":false,"network-uri":true,"warn-as-error":false,"warp-tests":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3c19975fdfd8d057eae58847bda6a79514ad882fd6f8ead72ac0247af34bdfc6","pkg-src-sha256":"a602d7f30e917164c6a634f8cb1f5df4849048858db01380a0875e16e5aa687b","depends":["array-0.5.4.0","base-4.14.0.0","bytestring-0.10.10.0","mtl-2.2.2","network-3.1.1.1-687472ff05020491920b181bb5aaf65b2a8c0e63c6aca4886c27983fddd81f23","network-uri-2.6.3.0-eb186d87f8a507c0cb1a53e79cf1ba20e1d0bdb44a448a0c491809447a2b5367","parsec-3.1.14.0","time-1.9.3"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"array-0.5.4.0","pkg-name":"array","pkg-version":"0.5.4.0","depends":["base-4.14.0.0"]},{"type":"configured","id":"async-2.2.2-039e9b1c5c2ed7ba7afc18d3bfeb9daa9474183c00749140a4b3bfceca11ada6","pkg-name":"async","pkg-version":"2.2.2","flags":{"bench":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"a178c166856da7ff22fe4500337b54812e94fd2059409452187d72e057ede9cd","pkg-src-sha256":"4b4ab1ac82c45144d82c6daf6cb6ba45eab9957dad44787fa5e869e23d73bbff","depends":["base-4.14.0.0","hashable-1.3.0.0-23eb1730651b09d8636b64cb5af16315693f5bde48cc5de1e9f2cfbd9a2210e2","stm-2.5.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"base-4.14.0.0","pkg-name":"base","pkg-version":"4.14.0.0","depends":["ghc-prim-0.6.1","integer-gmp-1.0.3.0","rts"]},{"type":"configured","id":"base16-bytestring-0.1.1.7-45aecb012963614f5b4123864c17d592472c3d66692a31efb222213d2d7b718e","pkg-name":"base16-bytestring","pkg-version":"0.1.1.7","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"8cbba2505d4da4f6cfc90cd36c8e8ad0c09c056538481ea00e8b10b78f70cb10","pkg-src-sha256":"525689679d5cc80fa532c1d5cfeace0f62bbb54134fad514f1ba00d0e7fe69ba","depends":["base-4.14.0.0","bytestring-0.10.10.0","ghc-prim-0.6.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"base64-bytestring-1.1.0.0-0f7ca8b9a9759304f992cbcb18c26649e0231f6e98ea78a3d1d47c923342536d","pkg-name":"base64-bytestring","pkg-version":"1.1.0.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"190264fef9e65d9085f00ccda419137096d1dc94777c58272bc96821dc7f37c3","pkg-src-sha256":"210d6c9042241ca52ee5d89cf221dbeb4d0e64b37391345369035ad2d9b4aca9","depends":["base-4.14.0.0","bytestring-0.10.10.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"binary-0.8.8.0","pkg-name":"binary","pkg-version":"0.8.8.0","depends":["array-0.5.4.0","base-4.14.0.0","bytestring-0.10.10.0","containers-0.6.2.1"]},{"type":"pre-existing","id":"bytestring-0.10.10.0","pkg-name":"bytestring","pkg-version":"0.10.10.0","depends":["base-4.14.0.0","deepseq-1.4.4.0","ghc-prim-0.6.1","integer-gmp-1.0.3.0"]},{"type":"configured","id":"cabal-install-3.4.0.0-inplace-cabal","pkg-name":"cabal-install","pkg-version":"3.4.0.0","flags":{"debug-conflict-sets":false,"debug-expensive-assertions":false,"debug-tracetree":false,"lukko":true,"native-dns":true},"style":"local","pkg-src":{"type":"local","path":"/code/shared-haskell/cabal/cabal-install"},"dist-dir":"/code/shared-haskell/cabal/dist-newstyle/build/x86_64-linux/ghc-8.10.1/cabal-install-3.4.0.0/x/cabal","depends":["Cabal-3.4.0.0-inplace","HTTP-4000.3.14-62fbf88bbfbc7cc9314709de72638706f246f307e01c99e24a31e837876c89d4","array-0.5.4.0","async-2.2.2-039e9b1c5c2ed7ba7afc18d3bfeb9daa9474183c00749140a4b3bfceca11ada6","base-4.14.0.0","base16-bytestring-0.1.1.7-45aecb012963614f5b4123864c17d592472c3d66692a31efb222213d2d7b718e","binary-0.8.8.0","bytestring-0.10.10.0","containers-0.6.2.1","cryptohash-sha256-0.11.101.0-6336682cdf1c37560251d08e58928da9a94ca2fc442f86267c89390ca1572220","deepseq-1.4.4.0","directory-1.3.6.0","echo-0.1.3-c1463d86a95302d766f059ac133288807d5638c3adbd29bcc1897b1381b69416","edit-distance-0.2.2.1-1bd75fb8588511009a33d2f0819cab437790892d0050436aa03049500f17f3c5","filepath-1.4.2.1","hackage-security-0.6.0.1-inplace","hashable-1.3.0.0-23eb1730651b09d8636b64cb5af16315693f5bde48cc5de1e9f2cfbd9a2210e2","lukko-0.1.1.2-dc6bc37f00c449a518a0676776d4efb1f77a1f02a4fc4a3c4bf8397a7285d1ba","mtl-2.2.2","network-uri-2.6.3.0-eb186d87f8a507c0cb1a53e79cf1ba20e1d0bdb44a448a0c491809447a2b5367","parsec-3.1.14.0","pretty-1.1.3.6","process-1.6.8.2","random-1.2.0-0111e8a509486ebbe72c2f95230153887a3bfa08f18e4bab3ec2296d269d2f5a","regex-base-0.94.0.0-880b261b95caae4d6aed489fde000d18fd31c819210c38754b42b95be05afc63","regex-posix-0.96.0.0-090f3f1d8576ce217dae470b4d309b29a426886c9621cf0edf618990ee0eb3c0","resolv-0.1.2.0-f978f8cf449b020a148b5e9fa445ee284b7981aa2e729c41d1b826700c382f3b","stm-2.5.0.0","tar-0.5.1.1-798366f125bc82c314283cecdf4d8eb8575f55bc23f9aecba1ac2408dd0b473c","text-1.2.3.2","time-1.9.3","transformers-0.5.6.2","unix-2.7.2.2","zlib-0.6.2.1-1576f6a1be8e968423e3a1c071eb9df3d2389dc99d7e996f541db68da28743a7"],"exe-depends":[],"component-name":"exe:cabal","bin-file":"/code/shared-haskell/cabal/dist-newstyle/build/x86_64-linux/ghc-8.10.1/cabal-install-3.4.0.0/x/cabal/build/cabal/cabal"},{"type":"pre-existing","id":"containers-0.6.2.1","pkg-name":"containers","pkg-version":"0.6.2.1","depends":["array-0.5.4.0","base-4.14.0.0","deepseq-1.4.4.0"]},{"type":"configured","id":"cryptohash-sha256-0.11.101.0-6336682cdf1c37560251d08e58928da9a94ca2fc442f86267c89390ca1572220","pkg-name":"cryptohash-sha256","pkg-version":"0.11.101.0","flags":{"exe":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"b963d6308db096362d73d9c603b331cf188aa69310195f479dfedf6045d7e602","pkg-src-sha256":"52756435dbea248e344fbcbcc5df5307f60dfacf337dfd11ae30f1c7a4da05dd","depends":["base-4.14.0.0","bytestring-0.10.10.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"deepseq-1.4.4.0","pkg-name":"deepseq","pkg-version":"1.4.4.0","depends":["array-0.5.4.0","base-4.14.0.0"]},{"type":"pre-existing","id":"directory-1.3.6.0","pkg-name":"directory","pkg-version":"1.3.6.0","depends":["base-4.14.0.0","filepath-1.4.2.1","time-1.9.3","unix-2.7.2.2"]},{"type":"configured","id":"echo-0.1.3-c1463d86a95302d766f059ac133288807d5638c3adbd29bcc1897b1381b69416","pkg-name":"echo","pkg-version":"0.1.3","flags":{"example":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"5490be9cfbea95e14a7a68b7d055ae8d295822e0b146d2ac8285b3e5a3e3282f","pkg-src-sha256":"704f07310f8272d170f8ab7fb2a2c13f15d8501ef8310801e36964c8eff485ef","depends":["base-4.14.0.0","process-1.6.8.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"ed25519-0.0.5.0-6f0ad0c09aacc30000c49b60c301213bd4c98a176abf44fd5a6f1b0a55598bc1","pkg-name":"ed25519","pkg-version":"0.0.5.0","flags":{"no-donna":true,"test-doctests":true,"test-hlint":true,"test-properties":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"fb98b08de467d51f788f8bd9391f0e9ab9bd4d8dfc264296b895ffea0d822dfa","pkg-src-sha256":"d8a5958ebfa9309790efade64275dc5c441b568645c45ceed1b0c6ff36d6156d","depends":["base-4.14.0.0","bytestring-0.10.10.0","ghc-prim-0.6.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"edit-distance-0.2.2.1-1bd75fb8588511009a33d2f0819cab437790892d0050436aa03049500f17f3c5","pkg-name":"edit-distance","pkg-version":"0.2.2.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4d33a49cd383d50af090f1b888642d10116e43809f9da6023d9fc6f67d2656ee","pkg-src-sha256":"3e8885ee2f56ad4da940f043ae8f981ee2fe336b5e8e4ba3f7436cff4f526c4a","depends":["array-0.5.4.0","base-4.14.0.0","containers-0.6.2.1","random-1.2.0-0111e8a509486ebbe72c2f95230153887a3bfa08f18e4bab3ec2296d269d2f5a"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"filepath-1.4.2.1","pkg-name":"filepath","pkg-version":"1.4.2.1","depends":["base-4.14.0.0"]},{"type":"pre-existing","id":"ghc-boot-th-8.10.1","pkg-name":"ghc-boot-th","pkg-version":"8.10.1","depends":["base-4.14.0.0"]},{"type":"pre-existing","id":"ghc-prim-0.6.1","pkg-name":"ghc-prim","pkg-version":"0.6.1","depends":["rts"]},{"type":"configured","id":"hackage-security-0.6.0.1-inplace","pkg-name":"hackage-security","pkg-version":"0.6.0.1","flags":{"base48":true,"lukko":true,"mtl21":false,"old-directory":false,"use-network-uri":true},"style":"inplace","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"692c385c085baa2813046ae58e31df21c250346b81c882431b5ffef76451a18a","pkg-src-sha256":"9162b473af5a21c1ff32a50b972b9acf51f4c901604a22cf08a2dccac2f82f17","dist-dir":"/code/shared-haskell/cabal/dist-newstyle/build/x86_64-linux/ghc-8.10.1/hackage-security-0.6.0.1","depends":["Cabal-3.4.0.0-inplace","base-4.14.0.0","base16-bytestring-0.1.1.7-45aecb012963614f5b4123864c17d592472c3d66692a31efb222213d2d7b718e","base64-bytestring-1.1.0.0-0f7ca8b9a9759304f992cbcb18c26649e0231f6e98ea78a3d1d47c923342536d","bytestring-0.10.10.0","containers-0.6.2.1","cryptohash-sha256-0.11.101.0-6336682cdf1c37560251d08e58928da9a94ca2fc442f86267c89390ca1572220","directory-1.3.6.0","ed25519-0.0.5.0-6f0ad0c09aacc30000c49b60c301213bd4c98a176abf44fd5a6f1b0a55598bc1","filepath-1.4.2.1","ghc-prim-0.6.1","lukko-0.1.1.2-dc6bc37f00c449a518a0676776d4efb1f77a1f02a4fc4a3c4bf8397a7285d1ba","mtl-2.2.2","network-3.1.1.1-687472ff05020491920b181bb5aaf65b2a8c0e63c6aca4886c27983fddd81f23","network-uri-2.6.3.0-eb186d87f8a507c0cb1a53e79cf1ba20e1d0bdb44a448a0c491809447a2b5367","parsec-3.1.14.0","pretty-1.1.3.6","tar-0.5.1.1-798366f125bc82c314283cecdf4d8eb8575f55bc23f9aecba1ac2408dd0b473c","template-haskell-2.16.0.0","time-1.9.3","transformers-0.5.6.2","zlib-0.6.2.1-1576f6a1be8e968423e3a1c071eb9df3d2389dc99d7e996f541db68da28743a7"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"hashable-1.3.0.0-23eb1730651b09d8636b64cb5af16315693f5bde48cc5de1e9f2cfbd9a2210e2","pkg-name":"hashable","pkg-version":"1.3.0.0","flags":{"examples":false,"integer-gmp":true,"sse2":true,"sse41":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4c70f1407881059e93550d3742191254296b2737b793a742bd901348fb3e1fb1","pkg-src-sha256":"822e5413fbccca6ae884d3aba4066422c8b5d58d23d18b9ecb5c03273bb19ab4","depends":["base-4.14.0.0","bytestring-0.10.10.0","deepseq-1.4.4.0","ghc-prim-0.6.1","integer-gmp-1.0.3.0","text-1.2.3.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"hsc2hs-0.68.7-e-hsc2hs-4ca5cdaea5a2df0c68f0eaf145a148350c9225dd25449894dbaadf06848c090f","pkg-name":"hsc2hs","pkg-version":"0.68.7","flags":{"in-ghc-tree":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"6a9419c04ca31a5931c77bd129789d4ceafcd8c9275551da237df341b8944540","pkg-src-sha256":"fd7915e41e3ed3bc7750fee0e8add2b4f32dcac8b7c544cfdf5542293223894a","depends":["base-4.14.0.0","containers-0.6.2.1","directory-1.3.6.0","filepath-1.4.2.1","process-1.6.8.2"],"exe-depends":[],"component-name":"exe:hsc2hs","bin-file":"/cabal/store/ghc-8.10.1/hsc2hs-0.68.7-e-hsc2hs-4ca5cdaea5a2df0c68f0eaf145a148350c9225dd25449894dbaadf06848c090f/bin/hsc2hs"},{"type":"pre-existing","id":"integer-gmp-1.0.3.0","pkg-name":"integer-gmp","pkg-version":"1.0.3.0","depends":["ghc-prim-0.6.1"]},{"type":"configured","id":"lukko-0.1.1.2-dc6bc37f00c449a518a0676776d4efb1f77a1f02a4fc4a3c4bf8397a7285d1ba","pkg-name":"lukko","pkg-version":"0.1.1.2","flags":{"ofd-locking":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"c9d3fa30fb6ab2ba16e037586ca79be6e57ec5f00381b6ee5f293400dbdf5515","pkg-src-sha256":"8a79d113dc0ccef16c24d83379cc457485943027e777529c46362fecc06607d2","depends":["base-4.14.0.0"],"exe-depends":["hsc2hs-0.68.7-e-hsc2hs-4ca5cdaea5a2df0c68f0eaf145a148350c9225dd25449894dbaadf06848c090f"],"component-name":"lib"},{"type":"pre-existing","id":"mtl-2.2.2","pkg-name":"mtl","pkg-version":"2.2.2","depends":["base-4.14.0.0","transformers-0.5.6.2"]},{"type":"configured","id":"network-3.1.1.1-687472ff05020491920b181bb5aaf65b2a8c0e63c6aca4886c27983fddd81f23","pkg-name":"network","pkg-version":"3.1.1.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"b704cb6676c03e98267190df797497587576a2e96094550ea143415239bbe66e","pkg-src-sha256":"d7ef590173fff2ab522fbc167f3fafb867e4ecfca279eb3ef0d137b51f142c9a","components":{"lib":{"depends":["base-4.14.0.0","bytestring-0.10.10.0","deepseq-1.4.4.0"],"exe-depends":["hsc2hs-0.68.7-e-hsc2hs-4ca5cdaea5a2df0c68f0eaf145a148350c9225dd25449894dbaadf06848c090f"]}}},{"type":"configured","id":"network-uri-2.6.3.0-eb186d87f8a507c0cb1a53e79cf1ba20e1d0bdb44a448a0c491809447a2b5367","pkg-name":"network-uri","pkg-version":"2.6.3.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"d2d9ff3a80d9b2d1ff317a354bc0c56cc109c69a4c2449e5fc712d3ddce83ede","pkg-src-sha256":"a01c1389f15d2cc2e847914737f706133bb11f0c5f8ee89711a36a25b7afa723","depends":["base-4.14.0.0","deepseq-1.4.4.0","parsec-3.1.14.0","template-haskell-2.16.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"parsec-3.1.14.0","pkg-name":"parsec","pkg-version":"3.1.14.0","depends":["base-4.14.0.0","bytestring-0.10.10.0","mtl-2.2.2","text-1.2.3.2"]},{"type":"pre-existing","id":"pretty-1.1.3.6","pkg-name":"pretty","pkg-version":"1.1.3.6","depends":["base-4.14.0.0","deepseq-1.4.4.0","ghc-prim-0.6.1"]},{"type":"pre-existing","id":"process-1.6.8.2","pkg-name":"process","pkg-version":"1.6.8.2","depends":["base-4.14.0.0","deepseq-1.4.4.0","directory-1.3.6.0","filepath-1.4.2.1","unix-2.7.2.2"]},{"type":"configured","id":"random-1.2.0-0111e8a509486ebbe72c2f95230153887a3bfa08f18e4bab3ec2296d269d2f5a","pkg-name":"random","pkg-version":"1.2.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"5ca8674e95c46c7eb90f520c26aea22d403625c97697275434afba66ebd32b05","pkg-src-sha256":"e4519cf7c058bfd5bdbe4acc782284acc9e25e74487208619ca83cbcd63fb9de","depends":["base-4.14.0.0","bytestring-0.10.10.0","deepseq-1.4.4.0","mtl-2.2.2","splitmix-0.1-ac05718de636727c6d4d2df61378ab1816909d005c9f089bbc07492e8f65669b"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"regex-base-0.94.0.0-880b261b95caae4d6aed489fde000d18fd31c819210c38754b42b95be05afc63","pkg-name":"regex-base","pkg-version":"0.94.0.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"44aa95ca762294ffbb28cf0af9c567d93b5d2c56e4f38ce5385a257d899f968e","pkg-src-sha256":"c41f82f5fc1157c961a4cbdc0cd5561e5aa44f339ce6e706d978d97e0ca6b914","depends":["array-0.5.4.0","base-4.14.0.0","bytestring-0.10.10.0","containers-0.6.2.1","mtl-2.2.2","text-1.2.3.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"regex-posix-0.96.0.0-090f3f1d8576ce217dae470b4d309b29a426886c9621cf0edf618990ee0eb3c0","pkg-name":"regex-posix","pkg-version":"0.96.0.0","flags":{"_regex-posix-clib":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"690d1366e9ea6df71ded3daf49ca3d53c63eda3f95937962299b2391824dc3b3","pkg-src-sha256":"251300f1a6bb2e91abb8bf513a21981f8fab79c98a65acea2bb6d6a524414521","depends":["array-0.5.4.0","base-4.14.0.0","bytestring-0.10.10.0","containers-0.6.2.1","regex-base-0.94.0.0-880b261b95caae4d6aed489fde000d18fd31c819210c38754b42b95be05afc63"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"resolv-0.1.2.0-f978f8cf449b020a148b5e9fa445ee284b7981aa2e729c41d1b826700c382f3b","pkg-name":"resolv","pkg-version":"0.1.2.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"0a9a6dd29706258ae60a5c22aecc140a40743b8f08fc324fd9984e7dfbf3a80d","pkg-src-sha256":"81a2bafad484db123cf8d17a02d98bb388a127fd0f822fa022589468a0e64671","components":{"lib":{"depends":["base-4.14.0.0","base16-bytestring-0.1.1.7-45aecb012963614f5b4123864c17d592472c3d66692a31efb222213d2d7b718e","binary-0.8.8.0","bytestring-0.10.10.0","containers-0.6.2.1"],"exe-depends":[]}}},{"type":"pre-existing","id":"rts","pkg-name":"rts","pkg-version":"1.0","depends":[]},{"type":"configured","id":"splitmix-0.1-ac05718de636727c6d4d2df61378ab1816909d005c9f089bbc07492e8f65669b","pkg-name":"splitmix","pkg-version":"0.1","flags":{"optimised-mixer":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"d50c4d0801a35be7875a040470c09863342514930c82a7d25780a6c2efc4fda9","pkg-src-sha256":"1c11c87352ddbb13365380fe163f99bb8f8845ebc96ca1d572e5d3a9bf810bfa","depends":["base-4.14.0.0","deepseq-1.4.4.0","time-1.9.3"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"stm-2.5.0.0","pkg-name":"stm","pkg-version":"2.5.0.0","depends":["array-0.5.4.0","base-4.14.0.0"]},{"type":"configured","id":"tar-0.5.1.1-798366f125bc82c314283cecdf4d8eb8575f55bc23f9aecba1ac2408dd0b473c","pkg-name":"tar","pkg-version":"0.5.1.1","flags":{"old-bytestring":false,"old-time":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"7a715414c4d494c9048cfb6d7634e07e7732ca154cb8938dc85f6ea192192e8c","pkg-src-sha256":"b384449f62b2b0aa3e6d2cb1004b8060b01f21ec93e7b63e7af6d8fad8a9f1de","depends":["array-0.5.4.0","base-4.14.0.0","bytestring-0.10.10.0","containers-0.6.2.1","deepseq-1.4.4.0","directory-1.3.6.0","filepath-1.4.2.1","time-1.9.3"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"template-haskell-2.16.0.0","pkg-name":"template-haskell","pkg-version":"2.16.0.0","depends":["base-4.14.0.0","ghc-boot-th-8.10.1","ghc-prim-0.6.1","pretty-1.1.3.6"]},{"type":"pre-existing","id":"text-1.2.3.2","pkg-name":"text","pkg-version":"1.2.3.2","depends":["array-0.5.4.0","base-4.14.0.0","binary-0.8.8.0","bytestring-0.10.10.0","deepseq-1.4.4.0","ghc-prim-0.6.1","integer-gmp-1.0.3.0"]},{"type":"pre-existing","id":"time-1.9.3","pkg-name":"time","pkg-version":"1.9.3","depends":["base-4.14.0.0","deepseq-1.4.4.0"]},{"type":"pre-existing","id":"transformers-0.5.6.2","pkg-name":"transformers","pkg-version":"0.5.6.2","depends":["base-4.14.0.0"]},{"type":"pre-existing","id":"unix-2.7.2.2","pkg-name":"unix","pkg-version":"2.7.2.2","depends":["base-4.14.0.0","bytestring-0.10.10.0","time-1.9.3"]},{"type":"configured","id":"zlib-0.6.2.1-1576f6a1be8e968423e3a1c071eb9df3d2389dc99d7e996f541db68da28743a7","pkg-name":"zlib","pkg-version":"0.6.2.1","flags":{"non-blocking-ffi":false,"pkg-config":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"d34ddf5fece4d1e9d471b5298f36335bb3cfe12cb5a1b8525c42f0b665382f45","pkg-src-sha256":"f0f810ff173560b60392db448455c0513b3239f48e43cb494b3733aa559621d0","depends":["base-4.14.0.0","bytestring-0.10.10.0"],"exe-depends":[],"component-name":"lib"}]}
\ No newline at end of file
{
"builtin": [
{
"package": "rts",
"version": "1.0"
},
{
"package": "ghc-prim",
"version": "0.5.3"
},
{
"package": "integer-gmp",
"version": "1.0.2.0"
},
{
"package": "base",
"version": "4.12.0.0"
},
{
"package": "array",
"version": "0.5.3.0"
},
{
"package": "deepseq",
"version": "1.4.4.0"
},
{
"package": "bytestring",
"version": "0.10.8.2"
},
{
"package": "containers",
"version": "0.6.0.1"
},
{
"package": "binary",
"version": "0.8.6.0"
},
{
"package": "filepath",
"version": "1.4.2.1"
},
{
"package": "time",
"version": "1.8.0.2"
},
{
"package": "unix",
"version": "2.7.2.2"
},
{
"package": "directory",
"version": "1.3.3.0"
},
{
"package": "transformers",
"version": "0.5.6.2"
},
{
"package": "mtl",
"version": "2.2.2"
},
{
"package": "text",
"version": "1.2.3.1"
},
{
"package": "parsec",
"version": "3.1.13.0"
},
{
"package": "pretty",
"version": "1.1.3.6"
},
{
"package": "process",
"version": "1.6.5.0"
},
{
"package": "ghc-boot-th",
"version": "8.6.5"
},
{
"package": "template-haskell",
"version": "2.14.0.0"
},
{
"package": "stm",
"version": "2.5.0.0"
}
],
"dependencies": [
{
"cabal_sha256": null,
"flags": [
"-bundled-binary-generic"
],
"package": "Cabal",
"revision": null,
"source": "local",
"src_sha256": null,
"version": "3.4.0.0"
},
{
"cabal_sha256": "b704cb6676c03e98267190df797497587576a2e96094550ea143415239bbe66e",
"flags": [],
"package": "network",
"revision": 0,
"source": "hackage",
"src_sha256": "d7ef590173fff2ab522fbc167f3fafb867e4ecfca279eb3ef0d137b51f142c9a",
"version": "3.1.1.1"
},
{
"cabal_sha256": "d2d9ff3a80d9b2d1ff317a354bc0c56cc109c69a4c2449e5fc712d3ddce83ede",
"flags": [],
"package": "network-uri",
"revision": 0,
"source": "hackage",
"src_sha256": "a01c1389f15d2cc2e847914737f706133bb11f0c5f8ee89711a36a25b7afa723",
"version": "2.6.3.0"
},
{
"cabal_sha256": "3c19975fdfd8d057eae58847bda6a79514ad882fd6f8ead72ac0247af34bdfc6",
"flags": [
"-conduit10",
"-mtl1",
"+network-uri",
"-warn-as-error",
"-warp-tests"
],
"package": "HTTP",
"revision": 1,
"source": "hackage",
"src_sha256": "a602d7f30e917164c6a634f8cb1f5df4849048858db01380a0875e16e5aa687b",
"version": "4000.3.14"
},
{
"cabal_sha256": "4c70f1407881059e93550d3742191254296b2737b793a742bd901348fb3e1fb1",
"flags": [
"-examples",
"+integer-gmp",
"+sse2",
"-sse41"
],
"package": "hashable",
"revision": 1,
"source": "hackage",
"src_sha256": "822e5413fbccca6ae884d3aba4066422c8b5d58d23d18b9ecb5c03273bb19ab4",
"version": "1.3.0.0"
},
{
"cabal_sha256": "a178c166856da7ff22fe4500337b54812e94fd2059409452187d72e057ede9cd",
"flags": [
"-bench"
],
"package": "async",
"revision": 1,
"source": "hackage",
"src_sha256": "4b4ab1ac82c45144d82c6daf6cb6ba45eab9957dad44787fa5e869e23d73bbff",
"version": "2.2.2"
},
{
"cabal_sha256": "8cbba2505d4da4f6cfc90cd36c8e8ad0c09c056538481ea00e8b10b78f70cb10",
"flags": [],
"package": "base16-bytestring",
"revision": 0,
"source": "hackage",
"src_sha256": "525689679d5cc80fa532c1d5cfeace0f62bbb54134fad514f1ba00d0e7fe69ba",
"version": "0.1.1.7"
},
{
"cabal_sha256": "190264fef9e65d9085f00ccda419137096d1dc94777c58272bc96821dc7f37c3",
"flags": [],
"package": "base64-bytestring",
"revision": 0,
"source": "hackage",
"src_sha256": "210d6c9042241ca52ee5d89cf221dbeb4d0e64b37391345369035ad2d9b4aca9",
"version": "1.1.0.0"
},
{
"cabal_sha256": "b963d6308db096362d73d9c603b331cf188aa69310195f479dfedf6045d7e602",
"flags": [
"-exe"
],
"package": "cryptohash-sha256",
"revision": 4,
"source": "hackage",
"src_sha256": "52756435dbea248e344fbcbcc5df5307f60dfacf337dfd11ae30f1c7a4da05dd",
"version": "0.11.101.0"
},
{
"cabal_sha256": "5490be9cfbea95e14a7a68b7d055ae8d295822e0b146d2ac8285b3e5a3e3282f",
"flags": [
"-example"
],
"package": "echo",
"revision": 1,
"source": "hackage",
"src_sha256": "704f07310f8272d170f8ab7fb2a2c13f15d8501ef8310801e36964c8eff485ef",
"version": "0.1.3"
},
{
"cabal_sha256": "d50c4d0801a35be7875a040470c09863342514930c82a7d25780a6c2efc4fda9",
"flags": [
"-optimised-mixer"
],
"package": "splitmix",
"revision": 0,
"source": "hackage",
"src_sha256": "1c11c87352ddbb13365380fe163f99bb8f8845ebc96ca1d572e5d3a9bf810bfa",
"version": "0.1"
},
{
"cabal_sha256": "5ca8674e95c46c7eb90f520c26aea22d403625c97697275434afba66ebd32b05",
"flags": [],
"package": "random",
"revision": 0,
"source": "hackage",
"src_sha256": "e4519cf7c058bfd5bdbe4acc782284acc9e25e74487208619ca83cbcd63fb9de",
"version": "1.2.0"
},
{
"cabal_sha256": "4d33a49cd383d50af090f1b888642d10116e43809f9da6023d9fc6f67d2656ee",
"flags": [],
"package": "edit-distance",
"revision": 1,
"source": "hackage",
"src_sha256": "3e8885ee2f56ad4da940f043ae8f981ee2fe336b5e8e4ba3f7436cff4f526c4a",
"version": "0.2.2.1"
},
{
"cabal_sha256": "fb98b08de467d51f788f8bd9391f0e9ab9bd4d8dfc264296b895ffea0d822dfa",
"flags": [
"+no-donna",
"+test-doctests",
"+test-hlint",
"+test-properties"
],
"package": "ed25519",
"revision": 3,
"source": "hackage",
"src_sha256": "d8a5958ebfa9309790efade64275dc5c441b568645c45ceed1b0c6ff36d6156d",
"version": "0.0.5.0"
},
{
"cabal_sha256": "c9d3fa30fb6ab2ba16e037586ca79be6e57ec5f00381b6ee5f293400dbdf5515",
"flags": [
"+ofd-locking"
],
"package": "lukko",
"revision": 0,
"source": "hackage",
"src_sha256": "8a79d113dc0ccef16c24d83379cc457485943027e777529c46362fecc06607d2",
"version": "0.1.1.2"
},
{
"cabal_sha256": "7a715414c4d494c9048cfb6d7634e07e7732ca154cb8938dc85f6ea192192e8c",
"flags": [
"-old-bytestring",
"-old-time"
],
"package": "tar",
"revision": 2,
"source": "hackage",
"src_sha256": "b384449f62b2b0aa3e6d2cb1004b8060b01f21ec93e7b63e7af6d8fad8a9f1de",
"version": "0.5.1.1"
},
{
"cabal_sha256": "d34ddf5fece4d1e9d471b5298f36335bb3cfe12cb5a1b8525c42f0b665382f45",
"flags": [
"-non-blocking-ffi",
"-pkg-config"
],
"package": "zlib",
"revision": 1,
"source": "hackage",
"src_sha256": "f0f810ff173560b60392db448455c0513b3239f48e43cb494b3733aa559621d0",
"version": "0.6.2.1"
},
{
"cabal_sha256": "692c385c085baa2813046ae58e31df21c250346b81c882431b5ffef76451a18a",
"flags": [
"+base48",
"+lukko",
"-mtl21",
"-old-directory",
"+use-network-uri"
],
"package": "hackage-security",
"revision": 2,
"source": "hackage",
"src_sha256": "9162b473af5a21c1ff32a50b972b9acf51f4c901604a22cf08a2dccac2f82f17",
"version": "0.6.0.1"
},
{
"cabal_sha256": "44aa95ca762294ffbb28cf0af9c567d93b5d2c56e4f38ce5385a257d899f968e",
"flags": [],
"package": "regex-base",
"revision": 1,
"source": "hackage",
"src_sha256": "c41f82f5fc1157c961a4cbdc0cd5561e5aa44f339ce6e706d978d97e0ca6b914",
"version": "0.94.0.0"
},
{
"cabal_sha256": "690d1366e9ea6df71ded3daf49ca3d53c63eda3f95937962299b2391824dc3b3",
"flags": [
"-_regex-posix-clib"
],
"package": "regex-posix",
"revision": 1,
"source": "hackage",
"src_sha256": "251300f1a6bb2e91abb8bf513a21981f8fab79c98a65acea2bb6d6a524414521",
"version": "0.96.0.0"
},
{
"cabal_sha256": "0a9a6dd29706258ae60a5c22aecc140a40743b8f08fc324fd9984e7dfbf3a80d",
"flags": [],
"package": "resolv",
"revision": 0,
"source": "hackage",
"src_sha256": "81a2bafad484db123cf8d17a02d98bb388a127fd0f822fa022589468a0e64671",
"version": "0.1.2.0"
},
{
"cabal_sha256": null,
"flags": [
"-debug-conflict-sets",
"-debug-expensive-assertions",
"-debug-tracetree",
"+lukko",
"+native-dns"
],
"package": "cabal-install",
"revision": null,
"source": "local",
"src_sha256": null,
"version": "3.4.0.0"
}
]
}
{"cabal-version":"3.4.0.0","cabal-lib-version":"3.4.0.0","compiler-id":"ghc-8.6.5","os":"linux","arch":"x86_64","install-plan":[{"type":"configured","id":"Cabal-3.4.0.0-inplace","pkg-name":"Cabal","pkg-version":"3.4.0.0","flags":{"bundled-binary-generic":false},"style":"local","pkg-src":{"type":"local","path":"/code/shared-haskell/cabal/Cabal"},"dist-dir":"/code/shared-haskell/cabal/dist-newstyle/build/x86_64-linux/ghc-8.6.5/Cabal-3.4.0.0","depends":["array-0.5.3.0","base-4.12.0.0","binary-0.8.6.0","bytestring-0.10.8.2","containers-0.6.0.1","deepseq-1.4.4.0","directory-1.3.3.0","filepath-1.4.2.1","mtl-2.2.2","parsec-3.1.13.0","pretty-1.1.3.6","process-1.6.5.0","text-1.2.3.1","time-1.8.0.2","transformers-0.5.6.2","unix-2.7.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"HTTP-4000.3.14-790a9652afacb3426e95805c4d31658a3fecd2a83abd9352c3aa3f054d0d0e2f","pkg-name":"HTTP","pkg-version":"4000.3.14","flags":{"conduit10":false,"mtl1":false,"network-uri":true,"warn-as-error":false,"warp-tests":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3c19975fdfd8d057eae58847bda6a79514ad882fd6f8ead72ac0247af34bdfc6","pkg-src-sha256":"a602d7f30e917164c6a634f8cb1f5df4849048858db01380a0875e16e5aa687b","depends":["array-0.5.3.0","base-4.12.0.0","bytestring-0.10.8.2","mtl-2.2.2","network-3.1.1.1-4939b3cef5a9e8a050f13943c66c49d8199f5edb4c8acb469a21cd7f8aae1a00","network-uri-2.6.3.0-512f05dc0374923712941f8950e12cc2a1707e8a87357d7e286ccde1953144e5","parsec-3.1.13.0","time-1.8.0.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"array-0.5.3.0","pkg-name":"array","pkg-version":"0.5.3.0","depends":["base-4.12.0.0"]},{"type":"configured","id":"async-2.2.2-d821efe0c7dce18409389aa2f56f54967d3cf730dcc0b01f8f2a56acf0049649","pkg-name":"async","pkg-version":"2.2.2","flags":{"bench":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"a178c166856da7ff22fe4500337b54812e94fd2059409452187d72e057ede9cd","pkg-src-sha256":"4b4ab1ac82c45144d82c6daf6cb6ba45eab9957dad44787fa5e869e23d73bbff","depends":["base-4.12.0.0","hashable-1.3.0.0-f0497ed6dc3b89a4ddc96ef33aef5f64eaa584fcb9d5bf6da06e0dacb177c8f6","stm-2.5.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"base-4.12.0.0","pkg-name":"base","pkg-version":"4.12.0.0","depends":["ghc-prim-0.5.3","integer-gmp-1.0.2.0","rts"]},{"type":"configured","id":"base16-bytestring-0.1.1.7-1c6dcde90355116a6bd3d6d942680d6e5781af1b18a2b0c3a7731813fafec43d","pkg-name":"base16-bytestring","pkg-version":"0.1.1.7","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"8cbba2505d4da4f6cfc90cd36c8e8ad0c09c056538481ea00e8b10b78f70cb10","pkg-src-sha256":"525689679d5cc80fa532c1d5cfeace0f62bbb54134fad514f1ba00d0e7fe69ba","depends":["base-4.12.0.0","bytestring-0.10.8.2","ghc-prim-0.5.3"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"base64-bytestring-1.1.0.0-cd0fbc582434f7abba096a3124f8a90979ca8fa48b9730de02a035de19e50b0f","pkg-name":"base64-bytestring","pkg-version":"1.1.0.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"190264fef9e65d9085f00ccda419137096d1dc94777c58272bc96821dc7f37c3","pkg-src-sha256":"210d6c9042241ca52ee5d89cf221dbeb4d0e64b37391345369035ad2d9b4aca9","depends":["base-4.12.0.0","bytestring-0.10.8.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"binary-0.8.6.0","pkg-name":"binary","pkg-version":"0.8.6.0","depends":["array-0.5.3.0","base-4.12.0.0","bytestring-0.10.8.2","containers-0.6.0.1"]},{"type":"pre-existing","id":"bytestring-0.10.8.2","pkg-name":"bytestring","pkg-version":"0.10.8.2","depends":["base-4.12.0.0","deepseq-1.4.4.0","ghc-prim-0.5.3","integer-gmp-1.0.2.0"]},{"type":"configured","id":"cabal-install-3.4.0.0-inplace-cabal","pkg-name":"cabal-install","pkg-version":"3.4.0.0","flags":{"debug-conflict-sets":false,"debug-expensive-assertions":false,"debug-tracetree":false,"lukko":true,"native-dns":true},"style":"local","pkg-src":{"type":"local","path":"/code/shared-haskell/cabal/cabal-install"},"dist-dir":"/code/shared-haskell/cabal/dist-newstyle/build/x86_64-linux/ghc-8.6.5/cabal-install-3.4.0.0/x/cabal","depends":["Cabal-3.4.0.0-inplace","HTTP-4000.3.14-790a9652afacb3426e95805c4d31658a3fecd2a83abd9352c3aa3f054d0d0e2f","array-0.5.3.0","async-2.2.2-d821efe0c7dce18409389aa2f56f54967d3cf730dcc0b01f8f2a56acf0049649","base-4.12.0.0","base16-bytestring-0.1.1.7-1c6dcde90355116a6bd3d6d942680d6e5781af1b18a2b0c3a7731813fafec43d","binary-0.8.6.0","bytestring-0.10.8.2","containers-0.6.0.1","cryptohash-sha256-0.11.101.0-672df49aeb8f00e269bc8f003b8bf84a83fe557f0ac7c977f6776a97491a955e","deepseq-1.4.4.0","directory-1.3.3.0","echo-0.1.3-0aa444d1be9406439b2acf2158866a15b09805c8788d9945aead993e2d97d6ad","edit-distance-0.2.2.1-3ee9066a02ddd83fb02b975c6cbe4e48cfa58432df9a58e28f4d3117cc114e94","filepath-1.4.2.1","hackage-security-0.6.0.1-inplace","hashable-1.3.0.0-f0497ed6dc3b89a4ddc96ef33aef5f64eaa584fcb9d5bf6da06e0dacb177c8f6","lukko-0.1.1.2-15fdd1a837b209eef09d6df1acec1d26c8a95712fa902c19b288dceede1e623a","mtl-2.2.2","network-uri-2.6.3.0-512f05dc0374923712941f8950e12cc2a1707e8a87357d7e286ccde1953144e5","parsec-3.1.13.0","pretty-1.1.3.6","process-1.6.5.0","random-1.2.0-f0994fc834469fbb09d3fb78fa43c9173070bd28fae87d2ccb1f145d8b044188","regex-base-0.94.0.0-83cf4d8eac97e9aa145a3d27ac67bed98c4e85b4079681c563b9474b72d6c8c0","regex-posix-0.96.0.0-dc0bdb2738aaeebb56a1c073495ba842a9dd4d5dad088e0e0eeb5e2292c1e0b8","resolv-0.1.2.0-9223654e337d641bc8cfe29ee10796f5e3821f9d84e0e63d4c16d74a309e0622","stm-2.5.0.0","tar-0.5.1.1-2bac801a527e5793b7752115b282082cf46ce8f20e48fb17bd96599f96366b21","text-1.2.3.1","time-1.8.0.2","transformers-0.5.6.2","unix-2.7.2.2","zlib-0.6.2.1-3d450e620fbe0e654eb7e97cd33cb6273bfb8229af0302c8890c078792ee1342"],"exe-depends":[],"component-name":"exe:cabal","bin-file":"/code/shared-haskell/cabal/dist-newstyle/build/x86_64-linux/ghc-8.6.5/cabal-install-3.4.0.0/x/cabal/build/cabal/cabal"},{"type":"pre-existing","id":"containers-0.6.0.1","pkg-name":"containers","pkg-version":"0.6.0.1","depends":["array-0.5.3.0","base-4.12.0.0","deepseq-1.4.4.0","ghc-prim-0.5.3"]},{"type":"configured","id":"cryptohash-sha256-0.11.101.0-672df49aeb8f00e269bc8f003b8bf84a83fe557f0ac7c977f6776a97491a955e","pkg-name":"cryptohash-sha256","pkg-version":"0.11.101.0","flags":{"exe":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"b963d6308db096362d73d9c603b331cf188aa69310195f479dfedf6045d7e602","pkg-src-sha256":"52756435dbea248e344fbcbcc5df5307f60dfacf337dfd11ae30f1c7a4da05dd","depends":["base-4.12.0.0","bytestring-0.10.8.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"deepseq-1.4.4.0","pkg-name":"deepseq","pkg-version":"1.4.4.0","depends":["array-0.5.3.0","base-4.12.0.0"]},{"type":"pre-existing","id":"directory-1.3.3.0","pkg-name":"directory","pkg-version":"1.3.3.0","depends":["base-4.12.0.0","filepath-1.4.2.1","time-1.8.0.2","unix-2.7.2.2"]},{"type":"configured","id":"echo-0.1.3-0aa444d1be9406439b2acf2158866a15b09805c8788d9945aead993e2d97d6ad","pkg-name":"echo","pkg-version":"0.1.3","flags":{"example":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"5490be9cfbea95e14a7a68b7d055ae8d295822e0b146d2ac8285b3e5a3e3282f","pkg-src-sha256":"704f07310f8272d170f8ab7fb2a2c13f15d8501ef8310801e36964c8eff485ef","depends":["base-4.12.0.0","process-1.6.5.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"ed25519-0.0.5.0-751e5a5744fdd2d7ce2245bc124b15133d0dff1db6b0441d93ced591450d9edb","pkg-name":"ed25519","pkg-version":"0.0.5.0","flags":{"no-donna":true,"test-doctests":true,"test-hlint":true,"test-properties":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"fb98b08de467d51f788f8bd9391f0e9ab9bd4d8dfc264296b895ffea0d822dfa","pkg-src-sha256":"d8a5958ebfa9309790efade64275dc5c441b568645c45ceed1b0c6ff36d6156d","depends":["base-4.12.0.0","bytestring-0.10.8.2","ghc-prim-0.5.3"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"edit-distance-0.2.2.1-3ee9066a02ddd83fb02b975c6cbe4e48cfa58432df9a58e28f4d3117cc114e94","pkg-name":"edit-distance","pkg-version":"0.2.2.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4d33a49cd383d50af090f1b888642d10116e43809f9da6023d9fc6f67d2656ee","pkg-src-sha256":"3e8885ee2f56ad4da940f043ae8f981ee2fe336b5e8e4ba3f7436cff4f526c4a","depends":["array-0.5.3.0","base-4.12.0.0","containers-0.6.0.1","random-1.2.0-f0994fc834469fbb09d3fb78fa43c9173070bd28fae87d2ccb1f145d8b044188"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"filepath-1.4.2.1","pkg-name":"filepath","pkg-version":"1.4.2.1","depends":["base-4.12.0.0"]},{"type":"pre-existing","id":"ghc-boot-th-8.6.5","pkg-name":"ghc-boot-th","pkg-version":"8.6.5","depends":["base-4.12.0.0"]},{"type":"pre-existing","id":"ghc-prim-0.5.3","pkg-name":"ghc-prim","pkg-version":"0.5.3","depends":["rts"]},{"type":"configured","id":"hackage-security-0.6.0.1-inplace","pkg-name":"hackage-security","pkg-version":"0.6.0.1","flags":{"base48":true,"lukko":true,"mtl21":false,"old-directory":false,"use-network-uri":true},"style":"inplace","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"692c385c085baa2813046ae58e31df21c250346b81c882431b5ffef76451a18a","pkg-src-sha256":"9162b473af5a21c1ff32a50b972b9acf51f4c901604a22cf08a2dccac2f82f17","dist-dir":"/code/shared-haskell/cabal/dist-newstyle/build/x86_64-linux/ghc-8.6.5/hackage-security-0.6.0.1","depends":["Cabal-3.4.0.0-inplace","base-4.12.0.0","base16-bytestring-0.1.1.7-1c6dcde90355116a6bd3d6d942680d6e5781af1b18a2b0c3a7731813fafec43d","base64-bytestring-1.1.0.0-cd0fbc582434f7abba096a3124f8a90979ca8fa48b9730de02a035de19e50b0f","bytestring-0.10.8.2","containers-0.6.0.1","cryptohash-sha256-0.11.101.0-672df49aeb8f00e269bc8f003b8bf84a83fe557f0ac7c977f6776a97491a955e","directory-1.3.3.0","ed25519-0.0.5.0-751e5a5744fdd2d7ce2245bc124b15133d0dff1db6b0441d93ced591450d9edb","filepath-1.4.2.1","ghc-prim-0.5.3","lukko-0.1.1.2-15fdd1a837b209eef09d6df1acec1d26c8a95712fa902c19b288dceede1e623a","mtl-2.2.2","network-3.1.1.1-4939b3cef5a9e8a050f13943c66c49d8199f5edb4c8acb469a21cd7f8aae1a00","network-uri-2.6.3.0-512f05dc0374923712941f8950e12cc2a1707e8a87357d7e286ccde1953144e5","parsec-3.1.13.0","pretty-1.1.3.6","tar-0.5.1.1-2bac801a527e5793b7752115b282082cf46ce8f20e48fb17bd96599f96366b21","template-haskell-2.14.0.0","time-1.8.0.2","transformers-0.5.6.2","zlib-0.6.2.1-3d450e620fbe0e654eb7e97cd33cb6273bfb8229af0302c8890c078792ee1342"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"hashable-1.3.0.0-f0497ed6dc3b89a4ddc96ef33aef5f64eaa584fcb9d5bf6da06e0dacb177c8f6","pkg-name":"hashable","pkg-version":"1.3.0.0","flags":{"examples":false,"integer-gmp":true,"sse2":true,"sse41":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4c70f1407881059e93550d3742191254296b2737b793a742bd901348fb3e1fb1","pkg-src-sha256":"822e5413fbccca6ae884d3aba4066422c8b5d58d23d18b9ecb5c03273bb19ab4","depends":["base-4.12.0.0","bytestring-0.10.8.2","deepseq-1.4.4.0","ghc-prim-0.5.3","integer-gmp-1.0.2.0","text-1.2.3.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"hsc2hs-0.68.7-e-hsc2hs-0c4585ed41291b35ebc895b38398cb967e27e28d827b43b63adf9034d1517144","pkg-name":"hsc2hs","pkg-version":"0.68.7","flags":{"in-ghc-tree":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"6a9419c04ca31a5931c77bd129789d4ceafcd8c9275551da237df341b8944540","pkg-src-sha256":"fd7915e41e3ed3bc7750fee0e8add2b4f32dcac8b7c544cfdf5542293223894a","depends":["base-4.12.0.0","containers-0.6.0.1","directory-1.3.3.0","filepath-1.4.2.1","process-1.6.5.0"],"exe-depends":[],"component-name":"exe:hsc2hs","bin-file":"/cabal/store/ghc-8.6.5/hsc2hs-0.68.7-e-hsc2hs-0c4585ed41291b35ebc895b38398cb967e27e28d827b43b63adf9034d1517144/bin/hsc2hs"},{"type":"pre-existing","id":"integer-gmp-1.0.2.0","pkg-name":"integer-gmp","pkg-version":"1.0.2.0","depends":["ghc-prim-0.5.3"]},{"type":"configured","id":"lukko-0.1.1.2-15fdd1a837b209eef09d6df1acec1d26c8a95712fa902c19b288dceede1e623a","pkg-name":"lukko","pkg-version":"0.1.1.2","flags":{"ofd-locking":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"c9d3fa30fb6ab2ba16e037586ca79be6e57ec5f00381b6ee5f293400dbdf5515","pkg-src-sha256":"8a79d113dc0ccef16c24d83379cc457485943027e777529c46362fecc06607d2","depends":["base-4.12.0.0"],"exe-depends":["hsc2hs-0.68.7-e-hsc2hs-0c4585ed41291b35ebc895b38398cb967e27e28d827b43b63adf9034d1517144"],"component-name":"lib"},{"type":"pre-existing","id":"mtl-2.2.2","pkg-name":"mtl","pkg-version":"2.2.2","depends":["base-4.12.0.0","transformers-0.5.6.2"]},{"type":"configured","id":"network-3.1.1.1-4939b3cef5a9e8a050f13943c66c49d8199f5edb4c8acb469a21cd7f8aae1a00","pkg-name":"network","pkg-version":"3.1.1.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"b704cb6676c03e98267190df797497587576a2e96094550ea143415239bbe66e","pkg-src-sha256":"d7ef590173fff2ab522fbc167f3fafb867e4ecfca279eb3ef0d137b51f142c9a","components":{"lib":{"depends":["base-4.12.0.0","bytestring-0.10.8.2","deepseq-1.4.4.0"],"exe-depends":["hsc2hs-0.68.7-e-hsc2hs-0c4585ed41291b35ebc895b38398cb967e27e28d827b43b63adf9034d1517144"]}}},{"type":"configured","id":"network-uri-2.6.3.0-512f05dc0374923712941f8950e12cc2a1707e8a87357d7e286ccde1953144e5","pkg-name":"network-uri","pkg-version":"2.6.3.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"d2d9ff3a80d9b2d1ff317a354bc0c56cc109c69a4c2449e5fc712d3ddce83ede","pkg-src-sha256":"a01c1389f15d2cc2e847914737f706133bb11f0c5f8ee89711a36a25b7afa723","depends":["base-4.12.0.0","deepseq-1.4.4.0","parsec-3.1.13.0","template-haskell-2.14.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"parsec-3.1.13.0","pkg-name":"parsec","pkg-version":"3.1.13.0","depends":["base-4.12.0.0","bytestring-0.10.8.2","mtl-2.2.2","text-1.2.3.1"]},{"type":"pre-existing","id":"pretty-1.1.3.6","pkg-name":"pretty","pkg-version":"1.1.3.6","depends":["base-4.12.0.0","deepseq-1.4.4.0","ghc-prim-0.5.3"]},{"type":"pre-existing","id":"process-1.6.5.0","pkg-name":"process","pkg-version":"1.6.5.0","depends":["base-4.12.0.0","deepseq-1.4.4.0","directory-1.3.3.0","filepath-1.4.2.1","unix-2.7.2.2"]},{"type":"configured","id":"random-1.2.0-f0994fc834469fbb09d3fb78fa43c9173070bd28fae87d2ccb1f145d8b044188","pkg-name":"random","pkg-version":"1.2.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"5ca8674e95c46c7eb90f520c26aea22d403625c97697275434afba66ebd32b05","pkg-src-sha256":"e4519cf7c058bfd5bdbe4acc782284acc9e25e74487208619ca83cbcd63fb9de","depends":["base-4.12.0.0","bytestring-0.10.8.2","deepseq-1.4.4.0","mtl-2.2.2","splitmix-0.1-3e60b38b41c8bde822762030b4373375791f98915e3d10eaf33ceadaeeb94a21"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"regex-base-0.94.0.0-83cf4d8eac97e9aa145a3d27ac67bed98c4e85b4079681c563b9474b72d6c8c0","pkg-name":"regex-base","pkg-version":"0.94.0.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"44aa95ca762294ffbb28cf0af9c567d93b5d2c56e4f38ce5385a257d899f968e","pkg-src-sha256":"c41f82f5fc1157c961a4cbdc0cd5561e5aa44f339ce6e706d978d97e0ca6b914","depends":["array-0.5.3.0","base-4.12.0.0","bytestring-0.10.8.2","containers-0.6.0.1","mtl-2.2.2","text-1.2.3.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"regex-posix-0.96.0.0-dc0bdb2738aaeebb56a1c073495ba842a9dd4d5dad088e0e0eeb5e2292c1e0b8","pkg-name":"regex-posix","pkg-version":"0.96.0.0","flags":{"_regex-posix-clib":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"690d1366e9ea6df71ded3daf49ca3d53c63eda3f95937962299b2391824dc3b3","pkg-src-sha256":"251300f1a6bb2e91abb8bf513a21981f8fab79c98a65acea2bb6d6a524414521","depends":["array-0.5.3.0","base-4.12.0.0","bytestring-0.10.8.2","containers-0.6.0.1","regex-base-0.94.0.0-83cf4d8eac97e9aa145a3d27ac67bed98c4e85b4079681c563b9474b72d6c8c0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"resolv-0.1.2.0-9223654e337d641bc8cfe29ee10796f5e3821f9d84e0e63d4c16d74a309e0622","pkg-name":"resolv","pkg-version":"0.1.2.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"0a9a6dd29706258ae60a5c22aecc140a40743b8f08fc324fd9984e7dfbf3a80d","pkg-src-sha256":"81a2bafad484db123cf8d17a02d98bb388a127fd0f822fa022589468a0e64671","components":{"lib":{"depends":["base-4.12.0.0","base16-bytestring-0.1.1.7-1c6dcde90355116a6bd3d6d942680d6e5781af1b18a2b0c3a7731813fafec43d","binary-0.8.6.0","bytestring-0.10.8.2","containers-0.6.0.1"],"exe-depends":[]}}},{"type":"pre-existing","id":"rts","pkg-name":"rts","pkg-version":"1.0","depends":[]},{"type":"configured","id":"splitmix-0.1-3e60b38b41c8bde822762030b4373375791f98915e3d10eaf33ceadaeeb94a21","pkg-name":"splitmix","pkg-version":"0.1","flags":{"optimised-mixer":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"d50c4d0801a35be7875a040470c09863342514930c82a7d25780a6c2efc4fda9","pkg-src-sha256":"1c11c87352ddbb13365380fe163f99bb8f8845ebc96ca1d572e5d3a9bf810bfa","depends":["base-4.12.0.0","deepseq-1.4.4.0","time-1.8.0.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"stm-2.5.0.0","pkg-name":"stm","pkg-version":"2.5.0.0","depends":["array-0.5.3.0","base-4.12.0.0"]},{"type":"configured","id":"tar-0.5.1.1-2bac801a527e5793b7752115b282082cf46ce8f20e48fb17bd96599f96366b21","pkg-name":"tar","pkg-version":"0.5.1.1","flags":{"old-bytestring":false,"old-time":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"7a715414c4d494c9048cfb6d7634e07e7732ca154cb8938dc85f6ea192192e8c","pkg-src-sha256":"b384449f62b2b0aa3e6d2cb1004b8060b01f21ec93e7b63e7af6d8fad8a9f1de","depends":["array-0.5.3.0","base-4.12.0.0","bytestring-0.10.8.2","containers-0.6.0.1","deepseq-1.4.4.0","directory-1.3.3.0","filepath-1.4.2.1","time-1.8.0.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"template-haskell-2.14.0.0","pkg-name":"template-haskell","pkg-version":"2.14.0.0","depends":["base-4.12.0.0","ghc-boot-th-8.6.5","pretty-1.1.3.6"]},{"type":"pre-existing","id":"text-1.2.3.1","pkg-name":"text","pkg-version":"1.2.3.1","depends":["array-0.5.3.0","base-4.12.0.0","binary-0.8.6.0","bytestring-0.10.8.2","deepseq-1.4.4.0","ghc-prim-0.5.3","integer-gmp-1.0.2.0"]},{"type":"pre-existing","id":"time-1.8.0.2","pkg-name":"time","pkg-version":"1.8.0.2","depends":["base-4.12.0.0","deepseq-1.4.4.0"]},{"type":"pre-existing","id":"transformers-0.5.6.2","pkg-name":"transformers","pkg-version":"0.5.6.2","depends":["base-4.12.0.0"]},{"type":"pre-existing","id":"unix-2.7.2.2","pkg-name":"unix","pkg-version":"2.7.2.2","depends":["base-4.12.0.0","bytestring-0.10.8.2","time-1.8.0.2"]},{"type":"configured","id":"zlib-0.6.2.1-3d450e620fbe0e654eb7e97cd33cb6273bfb8229af0302c8890c078792ee1342","pkg-name":"zlib","pkg-version":"0.6.2.1","flags":{"non-blocking-ffi":false,"pkg-config":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"d34ddf5fece4d1e9d471b5298f36335bb3cfe12cb5a1b8525c42f0b665382f45","pkg-src-sha256":"f0f810ff173560b60392db448455c0513b3239f48e43cb494b3733aa559621d0","depends":["base-4.12.0.0","bytestring-0.10.8.2"],"exe-depends":[],"component-name":"lib"}]}
\ No newline at end of file
{
"builtin": [
{
"package": "rts",
"version": "1.0"
},
{
"package": "ghc-prim",
"version": "0.5.3"
},
{
"package": "integer-gmp",
"version": "1.0.2.0"
},
{
"package": "base",
"version": "4.13.0.0"
},
{
"package": "array",
"version": "0.5.4.0"
},
{
"package": "deepseq",
"version": "1.4.4.0"
},
{
"package": "bytestring",
"version": "0.10.10.0"
},
{
"package": "containers",
"version": "0.6.2.1"
},
{
"package": "binary",
"version": "0.8.7.0"
},
{
"package": "filepath",
"version": "1.4.2.1"
},
{
"package": "time",
"version": "1.9.3"
},
{
"package": "unix",
"version": "2.7.2.2"
},
{
"package": "directory",
"version": "1.3.6.0"
},
{
"package": "transformers",
"version": "0.5.6.2"
},
{
"package": "mtl",
"version": "2.2.2"
},
{
"package": "ghc-boot-th",
"version": "8.8.3"
},
{
"package": "pretty",
"version": "1.1.3.6"
},
{
"package": "template-haskell",
"version": "2.15.0.0"
},
{
"package": "text",
"version": "1.2.4.0"
},
{
"package": "parsec",
"version": "3.1.14.0"
},
{
"package": "process",
"version": "1.6.8.0"
},
{
"package": "stm",
"version": "2.5.0.0"
}
],
"dependencies": [
{
"cabal_sha256": null,
"flags": [
"-bundled-binary-generic"
],
"package": "Cabal",
"revision": null,
"source": "local",
"src_sha256": null,
"version": "3.4.0.0"
},
{
"cabal_sha256": "b704cb6676c03e98267190df797497587576a2e96094550ea143415239bbe66e",
"flags": [],
"package": "network",
"revision": 0,
"source": "hackage",
"src_sha256": "d7ef590173fff2ab522fbc167f3fafb867e4ecfca279eb3ef0d137b51f142c9a",
"version": "3.1.1.1"
},
{
"cabal_sha256": "d2d9ff3a80d9b2d1ff317a354bc0c56cc109c69a4c2449e5fc712d3ddce83ede",
"flags": [],
"package": "network-uri",
"revision": 0,
"source": "hackage",
"src_sha256": "a01c1389f15d2cc2e847914737f706133bb11f0c5f8ee89711a36a25b7afa723",
"version": "2.6.3.0"
},
{
"cabal_sha256": "3c19975fdfd8d057eae58847bda6a79514ad882fd6f8ead72ac0247af34bdfc6",
"flags": [
"-conduit10",
"-mtl1",
"+network-uri",
"-warn-as-error",
"-warp-tests"
],
"package": "HTTP",
"revision": 1,
"source": "hackage",
"src_sha256": "a602d7f30e917164c6a634f8cb1f5df4849048858db01380a0875e16e5aa687b",
"version": "4000.3.14"
},
{
"cabal_sha256": "4c70f1407881059e93550d3742191254296b2737b793a742bd901348fb3e1fb1",
"flags": [
"-examples",
"+integer-gmp",
"+sse2",
"-sse41"
],
"package": "hashable",
"revision": 1,
"source": "hackage",
"src_sha256": "822e5413fbccca6ae884d3aba4066422c8b5d58d23d18b9ecb5c03273bb19ab4",
"version": "1.3.0.0"
},
{
"cabal_sha256": "a178c166856da7ff22fe4500337b54812e94fd2059409452187d72e057ede9cd",
"flags": [
"-bench"
],
"package": "async",
"revision": 1,
"source": "hackage",
"src_sha256": "4b4ab1ac82c45144d82c6daf6cb6ba45eab9957dad44787fa5e869e23d73bbff",
"version": "2.2.2"
},
{
"cabal_sha256": "8cbba2505d4da4f6cfc90cd36c8e8ad0c09c056538481ea00e8b10b78f70cb10",
"flags": [],