[Git][ghc/ghc][wip/rts-configure-new-cabal] 2 commits: Put hadrian bootstrap plans through `jq`

John Ericson (@Ericson2314) gitlab at gitlab.haskell.org
Sat Jan 21 01:08:10 UTC 2023



John Ericson pushed to branch wip/rts-configure-new-cabal at Glasgow Haskell Compiler / GHC


Commits:
720eb6c2 by John Ericson at 2023-01-20T19:51:34-05:00
Put hadrian bootstrap plans through `jq`

This makes it possible to review changes with conventional diffing
tools.

- - - - -
4f9732f5 by John Ericson at 2023-01-20T20:02:03-05:00
Get newer Cabal for Hadrian, use for `findPtr`

There are many more things we would use this for, this is just a first
simple example to ensure the Cabal bump is working as intended.

The support for multiple package in `bootstrap.py` matches Cabal's
`bootstrap.py`, its inspiration, in order to keep it easy to sync
changes back and forth.

- - - - -


16 changed files:

- hadrian/bootstrap/bootstrap.py
- hadrian/bootstrap/generate_bootstrap_plans
- hadrian/bootstrap/plan-bootstrap-9_2_1.json
- hadrian/bootstrap/plan-bootstrap-9_2_2.json
- hadrian/bootstrap/plan-bootstrap-9_2_3.json
- hadrian/bootstrap/plan-bootstrap-9_2_4.json
- hadrian/bootstrap/plan-bootstrap-9_2_5.json
- hadrian/bootstrap/plan-bootstrap-9_4_1.json
- hadrian/bootstrap/plan-bootstrap-9_4_2.json
- hadrian/bootstrap/plan-bootstrap-9_4_3.json
- hadrian/cabal.project
- hadrian/hadrian.cabal
- hadrian/stack.yaml
- rts/configure.ac
- rts/external-symbols.list.in
- rts/rts.cabal.in


Changes:

=====================================
hadrian/bootstrap/bootstrap.py
=====================================
@@ -78,6 +78,8 @@ FetchInfo = NamedTuple('FetchInfo', [
 
 FetchPlan = Dict[Path, FetchInfo]
 
+local_packages: List[PackageName] = ["hadrian", "Cabal-syntax", "Cabal"]
+
 class Compiler:
     def __init__(self, ghc_path: Path):
         if not ghc_path.is_file():
@@ -173,7 +175,7 @@ def resolve_dep(dep : BootstrapDep) -> Path:
             shutil.copyfile(cabal_file, sdist_dir / f'{dep.package}.cabal')
 
     elif dep.source == PackageSource.LOCAL:
-        if dep.package == 'hadrian':
+        if dep.package in local_packages:
             sdist_dir = Path(sys.path[0]).parent.resolve()
         else:
             raise ValueError(f'Unknown local package {dep.package}')
@@ -341,7 +343,7 @@ def fetch_from_plan(plan : FetchPlan, output_dir : Path):
 def gen_fetch_plan(info : BootstrapInfo) -> FetchPlan :
     sources_dict = {}
     for dep in info.dependencies:
-      if dep.package != 'hadrian':
+      if not(dep.package in local_packages):
         sources_dict[f"{dep.package}-{dep.version}.tar.gz"] = FetchInfo(package_url(dep.package, dep.version), dep.src_sha256)
         if dep.revision is not None:
           sources_dict[f"{dep.package}.cabal"] = FetchInfo(package_cabal_url(dep.package, dep.version, dep.revision), dep.cabal_sha256)


=====================================
hadrian/bootstrap/generate_bootstrap_plans
=====================================
@@ -9,7 +9,7 @@ run() {
   nix build -f "$ghcs_nix" $drv
   (cd ../; rm -r dist-newstyle; cabal configure hadrian -w bootstrap/result/bin/ghc)
   cp ../dist-newstyle/cache/plan.json "plan-$ver.json"
-  cabal run --with-ghc-pkg $PWD/boot_ghc/bin/ghc-pkg -w $PWD/boot_ghc/bin/ghc -v0 hadrian-bootstrap-gen -- "plan-$ver.json" | tee "plan-bootstrap-$ver.json"
+  cabal run --with-ghc-pkg $PWD/boot_ghc/bin/ghc-pkg -w $PWD/boot_ghc/bin/ghc -v0 hadrian-bootstrap-gen -- "plan-$ver.json" | tee | jq --sort-keys | "plan-bootstrap-$ver.json"
 }
 
 run "9_2_1"


=====================================
hadrian/bootstrap/plan-bootstrap-9_2_1.json
=====================================
@@ -1 +1,270 @@
-{"dependencies":[{"cabal_sha256":"804e2574bc7e32d08cbab91e47ee6287b4df7d50851d73f9e778f94a9a7814c7","revision":1,"src_sha256":"6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa","flags":["-optimised-mixer"],"package":"splitmix","source":"hackage","version":"0.1.0.4"},{"cabal_sha256":"dea1f11e5569332dc6c8efaad1cb301016a5587b6754943a49f9de08ae0e56d9","revision":0,"src_sha256":"3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76","flags":[],"package":"random","source":"hackage","version":"1.2.1.1"},{"cabal_sha256":"4ce29211223d5e6620ebceba34a3ca9ccf1c10c0cf387d48aea45599222ee5aa","revision":0,"src_sha256":"d87b6c85696b601175274361fa62217894401e401e150c3c5d4013ac53cd36f3","flags":["-old-random","+templatehaskell"],"package":"QuickCheck","source":"hackage","version":"2.14.2"},{"cabal_sha256":"a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c","revision":0,"src_sha256":"845ce5db4c98cefd517323e005f87effceff886987305e421c4ef616dc0505d1","flags":["-llvm"],"package":"clock","source":"hackage","version":"0.8.3"},{"cabal_sha256":"3ac58d7341976173d1052e7b2837d119212d9afcf911735667c7f1ab67aec25f","revision":0,"src_sha256":"e571a9ec1d8865f0fbb0e0ba1eb575f783b0365c80db19b54a93600bae43b03c","flags":[],"package":"extra","source":"hackage","version":"1.7.12"},{"cabal_sha256":"372c1733d83b90045eb29da9f010fed79bfef8771ce65eb126a1d83ecc54a9a2","revision":0,"src_sha256":"cc445d439ea2f65cac7604d3578aa2c3a62e5a91dc989f4ce5b3390db9e59636","flags":[],"package":"filepattern","source":"hackage","version":"0.1.3"},{"cabal_sha256":"50b2f002c68fe67730ee7a3cd8607486197dd99b084255005ad51ecd6970a41b","revision":0,"src_sha256":"e1b305c280e66ad827edeaedd6933b9fc4174f626882877eab2a08344e665e87","flags":["+containers","+integer-gmp","-random-initial-seed"],"package":"hashable","source":"hackage","version":"1.4.1.0"},{"cabal_sha256":"66b19fcd813b0e4db3e0bac541bd46606c3b13d3d081d9f9666f4be0f5ff14b8","revision":0,"src_sha256":"89329df8b95ae99ef272e41e7a2d0fe2f1bb7eacfcc34bc01664414b33067cfd","flags":[],"package":"heaps","source":"hackage","version":"0.4"},{"cabal_sha256":"f75cb4fa53c88c65794becdd48eb0d3b2b8abd89a3d5c19e87af91f5225c15e4","revision":0,"src_sha256":"e28dd65bee8083b17210134e22e01c6349dc33c3b7bd17705973cd014e9f20ac","flags":[],"package":"js-dgtable","source":"hackage","version":"0.5.2"},{"cabal_sha256":"4c1c447a9a2fba0adba6d30678302a30c32b9dfde9e7aa9e9156483e1545096d","revision":0,"src_sha256":"1ba2f2a6b8d85da76c41f526c98903cbb107f8642e506c072c1e7e3c20fe5e7a","flags":[],"package":"js-flot","source":"hackage","version":"0.8.3"},{"cabal_sha256":"59ab6c79159549ef94b584abce8e6d3b336014c2cce1337b59a8f637e2856df5","revision":0,"src_sha256":"e0e0681f0da1130ede4e03a051630ea439c458cb97216cdb01771ebdbe44069b","flags":[],"package":"js-jquery","source":"hackage","version":"3.3.1"},{"cabal_sha256":"89b88a3e08493b7727fa4089b0692bfbdf7e1e666ef54635f458644eb8358764","revision":0,"src_sha256":"5b2d6dc2812eb2f6a115f05fcbe3e723d3aeff7894b012c617e075130581add5","flags":[],"package":"primitive","source":"hackage","version":"0.7.4.0"},{"cabal_sha256":"db11042bb0356c0adea277d0794743829125b4c99455af6af2bd5f7bd5e88a39","revision":1,"src_sha256":"1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2","flags":["-debug"],"package":"unordered-containers","source":"hackage","version":"0.2.19.1"},{"cabal_sha256":"79416292186feeaf1f60e49ac5a1ffae9bf1b120e040a74bf0e81ca7f1d31d3f","revision":0,"src_sha256":"ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a","flags":[],"package":"utf8-string","source":"hackage","version":"1.0.2"},{"cabal_sha256":"ca49ff48ad82cdea18824a6fa7bd15f62ded882988316bd724fcc97fa5031b6a","revision":0,"src_sha256":"7d9db837bfd67acaaabdb3cea29acc15559ede82dd9f75d438589268031cd542","flags":["-cloud","-embed-files","-portable"],"package":"shake","source":"hackage","version":"0.19.6"},{"cabal_sha256":null,"revision":null,"src_sha256":null,"flags":["+selftest","+threaded"],"package":"hadrian","source":"local","version":"0.1.0.0"}],"builtin":[{"package":"rts","version":"1.0.2"},{"package":"ghc-prim","version":"0.8.0"},{"package":"ghc-bignum","version":"1.2"},{"package":"base","version":"4.16.0.0"},{"package":"array","version":"0.5.4.0"},{"package":"deepseq","version":"1.4.6.0"},{"package":"bytestring","version":"0.11.1.0"},{"package":"containers","version":"0.6.5.1"},{"package":"binary","version":"0.8.9.0"},{"package":"filepath","version":"1.4.2.1"},{"package":"time","version":"1.11.1.1"},{"package":"unix","version":"2.7.2.2"},{"package":"directory","version":"1.3.6.2"},{"package":"transformers","version":"0.5.6.2"},{"package":"mtl","version":"2.2.2"},{"package":"ghc-boot-th","version":"9.2.1"},{"package":"pretty","version":"1.1.3.6"},{"package":"template-haskell","version":"2.18.0.0"},{"package":"text","version":"1.2.5.0"},{"package":"parsec","version":"3.1.14.0"},{"package":"process","version":"1.6.13.2"},{"package":"Cabal","version":"3.6.0.0"}]}
\ No newline at end of file
+{
+  "builtin": [
+    {
+      "package": "rts",
+      "version": "1.0.2"
+    },
+    {
+      "package": "ghc-prim",
+      "version": "0.8.0"
+    },
+    {
+      "package": "ghc-bignum",
+      "version": "1.2"
+    },
+    {
+      "package": "base",
+      "version": "4.16.0.0"
+    },
+    {
+      "package": "array",
+      "version": "0.5.4.0"
+    },
+    {
+      "package": "deepseq",
+      "version": "1.4.6.0"
+    },
+    {
+      "package": "bytestring",
+      "version": "0.11.1.0"
+    },
+    {
+      "package": "containers",
+      "version": "0.6.5.1"
+    },
+    {
+      "package": "binary",
+      "version": "0.8.9.0"
+    },
+    {
+      "package": "filepath",
+      "version": "1.4.2.1"
+    },
+    {
+      "package": "time",
+      "version": "1.11.1.1"
+    },
+    {
+      "package": "unix",
+      "version": "2.7.2.2"
+    },
+    {
+      "package": "directory",
+      "version": "1.3.6.2"
+    },
+    {
+      "package": "transformers",
+      "version": "0.5.6.2"
+    },
+    {
+      "package": "mtl",
+      "version": "2.2.2"
+    },
+    {
+      "package": "ghc-boot-th",
+      "version": "9.2.1"
+    },
+    {
+      "package": "pretty",
+      "version": "1.1.3.6"
+    },
+    {
+      "package": "template-haskell",
+      "version": "2.18.0.0"
+    },
+    {
+      "package": "text",
+      "version": "1.2.5.0"
+    },
+    {
+      "package": "parsec",
+      "version": "3.1.14.0"
+    },
+    {
+      "package": "process",
+      "version": "1.6.13.2"
+    }
+  ],
+  "dependencies": [
+    {
+      "cabal_sha256": "804e2574bc7e32d08cbab91e47ee6287b4df7d50851d73f9e778f94a9a7814c7",
+      "flags": [
+        "-optimised-mixer"
+      ],
+      "package": "splitmix",
+      "revision": 1,
+      "source": "hackage",
+      "src_sha256": "6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa",
+      "version": "0.1.0.4"
+    },
+    {
+      "cabal_sha256": "dea1f11e5569332dc6c8efaad1cb301016a5587b6754943a49f9de08ae0e56d9",
+      "flags": [],
+      "package": "random",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76",
+      "version": "1.2.1.1"
+    },
+    {
+      "cabal_sha256": "4ce29211223d5e6620ebceba34a3ca9ccf1c10c0cf387d48aea45599222ee5aa",
+      "flags": [
+        "-old-random",
+        "+templatehaskell"
+      ],
+      "package": "QuickCheck",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "d87b6c85696b601175274361fa62217894401e401e150c3c5d4013ac53cd36f3",
+      "version": "2.14.2"
+    },
+    {
+      "cabal_sha256": "a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c",
+      "flags": [
+        "-llvm"
+      ],
+      "package": "clock",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "845ce5db4c98cefd517323e005f87effceff886987305e421c4ef616dc0505d1",
+      "version": "0.8.3"
+    },
+    {
+      "cabal_sha256": "3ac58d7341976173d1052e7b2837d119212d9afcf911735667c7f1ab67aec25f",
+      "flags": [],
+      "package": "extra",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "e571a9ec1d8865f0fbb0e0ba1eb575f783b0365c80db19b54a93600bae43b03c",
+      "version": "1.7.12"
+    },
+    {
+      "cabal_sha256": "372c1733d83b90045eb29da9f010fed79bfef8771ce65eb126a1d83ecc54a9a2",
+      "flags": [],
+      "package": "filepattern",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "cc445d439ea2f65cac7604d3578aa2c3a62e5a91dc989f4ce5b3390db9e59636",
+      "version": "0.1.3"
+    },
+    {
+      "cabal_sha256": "50b2f002c68fe67730ee7a3cd8607486197dd99b084255005ad51ecd6970a41b",
+      "flags": [
+        "+containers",
+        "+integer-gmp",
+        "-random-initial-seed"
+      ],
+      "package": "hashable",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "e1b305c280e66ad827edeaedd6933b9fc4174f626882877eab2a08344e665e87",
+      "version": "1.4.1.0"
+    },
+    {
+      "cabal_sha256": "66b19fcd813b0e4db3e0bac541bd46606c3b13d3d081d9f9666f4be0f5ff14b8",
+      "flags": [],
+      "package": "heaps",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "89329df8b95ae99ef272e41e7a2d0fe2f1bb7eacfcc34bc01664414b33067cfd",
+      "version": "0.4"
+    },
+    {
+      "cabal_sha256": "f75cb4fa53c88c65794becdd48eb0d3b2b8abd89a3d5c19e87af91f5225c15e4",
+      "flags": [],
+      "package": "js-dgtable",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "e28dd65bee8083b17210134e22e01c6349dc33c3b7bd17705973cd014e9f20ac",
+      "version": "0.5.2"
+    },
+    {
+      "cabal_sha256": "4c1c447a9a2fba0adba6d30678302a30c32b9dfde9e7aa9e9156483e1545096d",
+      "flags": [],
+      "package": "js-flot",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "1ba2f2a6b8d85da76c41f526c98903cbb107f8642e506c072c1e7e3c20fe5e7a",
+      "version": "0.8.3"
+    },
+    {
+      "cabal_sha256": "59ab6c79159549ef94b584abce8e6d3b336014c2cce1337b59a8f637e2856df5",
+      "flags": [],
+      "package": "js-jquery",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "e0e0681f0da1130ede4e03a051630ea439c458cb97216cdb01771ebdbe44069b",
+      "version": "3.3.1"
+    },
+    {
+      "cabal_sha256": "89b88a3e08493b7727fa4089b0692bfbdf7e1e666ef54635f458644eb8358764",
+      "flags": [],
+      "package": "primitive",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "5b2d6dc2812eb2f6a115f05fcbe3e723d3aeff7894b012c617e075130581add5",
+      "version": "0.7.4.0"
+    },
+    {
+      "cabal_sha256": "db11042bb0356c0adea277d0794743829125b4c99455af6af2bd5f7bd5e88a39",
+      "flags": [
+        "-debug"
+      ],
+      "package": "unordered-containers",
+      "revision": 1,
+      "source": "hackage",
+      "src_sha256": "1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2",
+      "version": "0.2.19.1"
+    },
+    {
+      "cabal_sha256": "79416292186feeaf1f60e49ac5a1ffae9bf1b120e040a74bf0e81ca7f1d31d3f",
+      "flags": [],
+      "package": "utf8-string",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a",
+      "version": "1.0.2"
+    },
+    {
+      "cabal_sha256": "ca49ff48ad82cdea18824a6fa7bd15f62ded882988316bd724fcc97fa5031b6a",
+      "flags": [
+        "-cloud",
+        "-embed-files",
+        "-portable"
+      ],
+      "package": "shake",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "7d9db837bfd67acaaabdb3cea29acc15559ede82dd9f75d438589268031cd542",
+      "version": "0.19.6"
+    },
+    {
+      "cabal_sha256": null,
+      "flags": [
+        "+selftest",
+        "+threaded"
+      ],
+      "package": "hadrian",
+      "revision": null,
+      "source": "local",
+      "src_sha256": null,
+      "version": "0.1.0.0"
+    },
+    {
+      "cabal_sha256": null,
+      "package": "Cabal",
+      "revision": null,
+      "source": "local",
+      "src_sha256": null,
+      "version": "3.9.0.0"
+    },
+    {
+      "cabal_sha256": null,
+      "package": "Cabal-syntax",
+      "revision": null,
+      "source": "local",
+      "src_sha256": null,
+      "version": "3.9.0.0"
+    }
+  ]
+}


=====================================
hadrian/bootstrap/plan-bootstrap-9_2_2.json
=====================================
@@ -1 +1,270 @@
-{"dependencies":[{"cabal_sha256":"804e2574bc7e32d08cbab91e47ee6287b4df7d50851d73f9e778f94a9a7814c7","revision":1,"src_sha256":"6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa","flags":["-optimised-mixer"],"package":"splitmix","source":"hackage","version":"0.1.0.4"},{"cabal_sha256":"dea1f11e5569332dc6c8efaad1cb301016a5587b6754943a49f9de08ae0e56d9","revision":0,"src_sha256":"3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76","flags":[],"package":"random","source":"hackage","version":"1.2.1.1"},{"cabal_sha256":"4ce29211223d5e6620ebceba34a3ca9ccf1c10c0cf387d48aea45599222ee5aa","revision":0,"src_sha256":"d87b6c85696b601175274361fa62217894401e401e150c3c5d4013ac53cd36f3","flags":["-old-random","+templatehaskell"],"package":"QuickCheck","source":"hackage","version":"2.14.2"},{"cabal_sha256":"a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c","revision":0,"src_sha256":"845ce5db4c98cefd517323e005f87effceff886987305e421c4ef616dc0505d1","flags":["-llvm"],"package":"clock","source":"hackage","version":"0.8.3"},{"cabal_sha256":"3ac58d7341976173d1052e7b2837d119212d9afcf911735667c7f1ab67aec25f","revision":0,"src_sha256":"e571a9ec1d8865f0fbb0e0ba1eb575f783b0365c80db19b54a93600bae43b03c","flags":[],"package":"extra","source":"hackage","version":"1.7.12"},{"cabal_sha256":"372c1733d83b90045eb29da9f010fed79bfef8771ce65eb126a1d83ecc54a9a2","revision":0,"src_sha256":"cc445d439ea2f65cac7604d3578aa2c3a62e5a91dc989f4ce5b3390db9e59636","flags":[],"package":"filepattern","source":"hackage","version":"0.1.3"},{"cabal_sha256":"50b2f002c68fe67730ee7a3cd8607486197dd99b084255005ad51ecd6970a41b","revision":0,"src_sha256":"e1b305c280e66ad827edeaedd6933b9fc4174f626882877eab2a08344e665e87","flags":["+containers","+integer-gmp","-random-initial-seed"],"package":"hashable","source":"hackage","version":"1.4.1.0"},{"cabal_sha256":"66b19fcd813b0e4db3e0bac541bd46606c3b13d3d081d9f9666f4be0f5ff14b8","revision":0,"src_sha256":"89329df8b95ae99ef272e41e7a2d0fe2f1bb7eacfcc34bc01664414b33067cfd","flags":[],"package":"heaps","source":"hackage","version":"0.4"},{"cabal_sha256":"f75cb4fa53c88c65794becdd48eb0d3b2b8abd89a3d5c19e87af91f5225c15e4","revision":0,"src_sha256":"e28dd65bee8083b17210134e22e01c6349dc33c3b7bd17705973cd014e9f20ac","flags":[],"package":"js-dgtable","source":"hackage","version":"0.5.2"},{"cabal_sha256":"4c1c447a9a2fba0adba6d30678302a30c32b9dfde9e7aa9e9156483e1545096d","revision":0,"src_sha256":"1ba2f2a6b8d85da76c41f526c98903cbb107f8642e506c072c1e7e3c20fe5e7a","flags":[],"package":"js-flot","source":"hackage","version":"0.8.3"},{"cabal_sha256":"59ab6c79159549ef94b584abce8e6d3b336014c2cce1337b59a8f637e2856df5","revision":0,"src_sha256":"e0e0681f0da1130ede4e03a051630ea439c458cb97216cdb01771ebdbe44069b","flags":[],"package":"js-jquery","source":"hackage","version":"3.3.1"},{"cabal_sha256":"89b88a3e08493b7727fa4089b0692bfbdf7e1e666ef54635f458644eb8358764","revision":0,"src_sha256":"5b2d6dc2812eb2f6a115f05fcbe3e723d3aeff7894b012c617e075130581add5","flags":[],"package":"primitive","source":"hackage","version":"0.7.4.0"},{"cabal_sha256":"db11042bb0356c0adea277d0794743829125b4c99455af6af2bd5f7bd5e88a39","revision":1,"src_sha256":"1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2","flags":["-debug"],"package":"unordered-containers","source":"hackage","version":"0.2.19.1"},{"cabal_sha256":"79416292186feeaf1f60e49ac5a1ffae9bf1b120e040a74bf0e81ca7f1d31d3f","revision":0,"src_sha256":"ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a","flags":[],"package":"utf8-string","source":"hackage","version":"1.0.2"},{"cabal_sha256":"ca49ff48ad82cdea18824a6fa7bd15f62ded882988316bd724fcc97fa5031b6a","revision":0,"src_sha256":"7d9db837bfd67acaaabdb3cea29acc15559ede82dd9f75d438589268031cd542","flags":["-cloud","-embed-files","-portable"],"package":"shake","source":"hackage","version":"0.19.6"},{"cabal_sha256":null,"revision":null,"src_sha256":null,"flags":["+selftest","+threaded"],"package":"hadrian","source":"local","version":"0.1.0.0"}],"builtin":[{"package":"rts","version":"1.0.2"},{"package":"ghc-prim","version":"0.8.0"},{"package":"ghc-bignum","version":"1.2"},{"package":"base","version":"4.16.1.0"},{"package":"array","version":"0.5.4.0"},{"package":"deepseq","version":"1.4.6.1"},{"package":"ghc-boot-th","version":"9.2.2"},{"package":"pretty","version":"1.1.3.6"},{"package":"template-haskell","version":"2.18.0.0"},{"package":"bytestring","version":"0.11.3.0"},{"package":"containers","version":"0.6.5.1"},{"package":"binary","version":"0.8.9.0"},{"package":"filepath","version":"1.4.2.2"},{"package":"time","version":"1.11.1.1"},{"package":"unix","version":"2.7.2.2"},{"package":"directory","version":"1.3.6.2"},{"package":"transformers","version":"0.5.6.2"},{"package":"mtl","version":"2.2.2"},{"package":"text","version":"1.2.5.0"},{"package":"parsec","version":"3.1.15.0"},{"package":"process","version":"1.6.13.2"},{"package":"Cabal","version":"3.6.3.0"}]}
\ No newline at end of file
+{
+  "builtin": [
+    {
+      "package": "rts",
+      "version": "1.0.2"
+    },
+    {
+      "package": "ghc-prim",
+      "version": "0.8.0"
+    },
+    {
+      "package": "ghc-bignum",
+      "version": "1.2"
+    },
+    {
+      "package": "base",
+      "version": "4.16.1.0"
+    },
+    {
+      "package": "array",
+      "version": "0.5.4.0"
+    },
+    {
+      "package": "deepseq",
+      "version": "1.4.6.1"
+    },
+    {
+      "package": "ghc-boot-th",
+      "version": "9.2.2"
+    },
+    {
+      "package": "pretty",
+      "version": "1.1.3.6"
+    },
+    {
+      "package": "template-haskell",
+      "version": "2.18.0.0"
+    },
+    {
+      "package": "bytestring",
+      "version": "0.11.3.0"
+    },
+    {
+      "package": "containers",
+      "version": "0.6.5.1"
+    },
+    {
+      "package": "binary",
+      "version": "0.8.9.0"
+    },
+    {
+      "package": "filepath",
+      "version": "1.4.2.2"
+    },
+    {
+      "package": "time",
+      "version": "1.11.1.1"
+    },
+    {
+      "package": "unix",
+      "version": "2.7.2.2"
+    },
+    {
+      "package": "directory",
+      "version": "1.3.6.2"
+    },
+    {
+      "package": "transformers",
+      "version": "0.5.6.2"
+    },
+    {
+      "package": "mtl",
+      "version": "2.2.2"
+    },
+    {
+      "package": "text",
+      "version": "1.2.5.0"
+    },
+    {
+      "package": "parsec",
+      "version": "3.1.15.0"
+    },
+    {
+      "package": "process",
+      "version": "1.6.13.2"
+    }
+  ],
+  "dependencies": [
+    {
+      "cabal_sha256": "804e2574bc7e32d08cbab91e47ee6287b4df7d50851d73f9e778f94a9a7814c7",
+      "flags": [
+        "-optimised-mixer"
+      ],
+      "package": "splitmix",
+      "revision": 1,
+      "source": "hackage",
+      "src_sha256": "6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa",
+      "version": "0.1.0.4"
+    },
+    {
+      "cabal_sha256": "dea1f11e5569332dc6c8efaad1cb301016a5587b6754943a49f9de08ae0e56d9",
+      "flags": [],
+      "package": "random",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76",
+      "version": "1.2.1.1"
+    },
+    {
+      "cabal_sha256": "4ce29211223d5e6620ebceba34a3ca9ccf1c10c0cf387d48aea45599222ee5aa",
+      "flags": [
+        "-old-random",
+        "+templatehaskell"
+      ],
+      "package": "QuickCheck",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "d87b6c85696b601175274361fa62217894401e401e150c3c5d4013ac53cd36f3",
+      "version": "2.14.2"
+    },
+    {
+      "cabal_sha256": "a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c",
+      "flags": [
+        "-llvm"
+      ],
+      "package": "clock",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "845ce5db4c98cefd517323e005f87effceff886987305e421c4ef616dc0505d1",
+      "version": "0.8.3"
+    },
+    {
+      "cabal_sha256": "3ac58d7341976173d1052e7b2837d119212d9afcf911735667c7f1ab67aec25f",
+      "flags": [],
+      "package": "extra",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "e571a9ec1d8865f0fbb0e0ba1eb575f783b0365c80db19b54a93600bae43b03c",
+      "version": "1.7.12"
+    },
+    {
+      "cabal_sha256": "372c1733d83b90045eb29da9f010fed79bfef8771ce65eb126a1d83ecc54a9a2",
+      "flags": [],
+      "package": "filepattern",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "cc445d439ea2f65cac7604d3578aa2c3a62e5a91dc989f4ce5b3390db9e59636",
+      "version": "0.1.3"
+    },
+    {
+      "cabal_sha256": "50b2f002c68fe67730ee7a3cd8607486197dd99b084255005ad51ecd6970a41b",
+      "flags": [
+        "+containers",
+        "+integer-gmp",
+        "-random-initial-seed"
+      ],
+      "package": "hashable",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "e1b305c280e66ad827edeaedd6933b9fc4174f626882877eab2a08344e665e87",
+      "version": "1.4.1.0"
+    },
+    {
+      "cabal_sha256": "66b19fcd813b0e4db3e0bac541bd46606c3b13d3d081d9f9666f4be0f5ff14b8",
+      "flags": [],
+      "package": "heaps",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "89329df8b95ae99ef272e41e7a2d0fe2f1bb7eacfcc34bc01664414b33067cfd",
+      "version": "0.4"
+    },
+    {
+      "cabal_sha256": "f75cb4fa53c88c65794becdd48eb0d3b2b8abd89a3d5c19e87af91f5225c15e4",
+      "flags": [],
+      "package": "js-dgtable",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "e28dd65bee8083b17210134e22e01c6349dc33c3b7bd17705973cd014e9f20ac",
+      "version": "0.5.2"
+    },
+    {
+      "cabal_sha256": "4c1c447a9a2fba0adba6d30678302a30c32b9dfde9e7aa9e9156483e1545096d",
+      "flags": [],
+      "package": "js-flot",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "1ba2f2a6b8d85da76c41f526c98903cbb107f8642e506c072c1e7e3c20fe5e7a",
+      "version": "0.8.3"
+    },
+    {
+      "cabal_sha256": "59ab6c79159549ef94b584abce8e6d3b336014c2cce1337b59a8f637e2856df5",
+      "flags": [],
+      "package": "js-jquery",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "e0e0681f0da1130ede4e03a051630ea439c458cb97216cdb01771ebdbe44069b",
+      "version": "3.3.1"
+    },
+    {
+      "cabal_sha256": "89b88a3e08493b7727fa4089b0692bfbdf7e1e666ef54635f458644eb8358764",
+      "flags": [],
+      "package": "primitive",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "5b2d6dc2812eb2f6a115f05fcbe3e723d3aeff7894b012c617e075130581add5",
+      "version": "0.7.4.0"
+    },
+    {
+      "cabal_sha256": "db11042bb0356c0adea277d0794743829125b4c99455af6af2bd5f7bd5e88a39",
+      "flags": [
+        "-debug"
+      ],
+      "package": "unordered-containers",
+      "revision": 1,
+      "source": "hackage",
+      "src_sha256": "1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2",
+      "version": "0.2.19.1"
+    },
+    {
+      "cabal_sha256": "79416292186feeaf1f60e49ac5a1ffae9bf1b120e040a74bf0e81ca7f1d31d3f",
+      "flags": [],
+      "package": "utf8-string",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a",
+      "version": "1.0.2"
+    },
+    {
+      "cabal_sha256": "ca49ff48ad82cdea18824a6fa7bd15f62ded882988316bd724fcc97fa5031b6a",
+      "flags": [
+        "-cloud",
+        "-embed-files",
+        "-portable"
+      ],
+      "package": "shake",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "7d9db837bfd67acaaabdb3cea29acc15559ede82dd9f75d438589268031cd542",
+      "version": "0.19.6"
+    },
+    {
+      "cabal_sha256": null,
+      "flags": [
+        "+selftest",
+        "+threaded"
+      ],
+      "package": "hadrian",
+      "revision": null,
+      "source": "local",
+      "src_sha256": null,
+      "version": "0.1.0.0"
+    },
+    {
+      "cabal_sha256": null,
+      "package": "Cabal",
+      "revision": null,
+      "source": "local",
+      "src_sha256": null,
+      "version": "3.9.0.0"
+    },
+    {
+      "cabal_sha256": null,
+      "package": "Cabal-syntax",
+      "revision": null,
+      "source": "local",
+      "src_sha256": null,
+      "version": "3.9.0.0"
+    }
+  ]
+}


=====================================
hadrian/bootstrap/plan-bootstrap-9_2_3.json
=====================================
@@ -1 +1,270 @@
-{"dependencies":[{"cabal_sha256":"804e2574bc7e32d08cbab91e47ee6287b4df7d50851d73f9e778f94a9a7814c7","revision":1,"src_sha256":"6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa","flags":["-optimised-mixer"],"package":"splitmix","source":"hackage","version":"0.1.0.4"},{"cabal_sha256":"dea1f11e5569332dc6c8efaad1cb301016a5587b6754943a49f9de08ae0e56d9","revision":0,"src_sha256":"3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76","flags":[],"package":"random","source":"hackage","version":"1.2.1.1"},{"cabal_sha256":"4ce29211223d5e6620ebceba34a3ca9ccf1c10c0cf387d48aea45599222ee5aa","revision":0,"src_sha256":"d87b6c85696b601175274361fa62217894401e401e150c3c5d4013ac53cd36f3","flags":["-old-random","+templatehaskell"],"package":"QuickCheck","source":"hackage","version":"2.14.2"},{"cabal_sha256":"a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c","revision":0,"src_sha256":"845ce5db4c98cefd517323e005f87effceff886987305e421c4ef616dc0505d1","flags":["-llvm"],"package":"clock","source":"hackage","version":"0.8.3"},{"cabal_sha256":"3ac58d7341976173d1052e7b2837d119212d9afcf911735667c7f1ab67aec25f","revision":0,"src_sha256":"e571a9ec1d8865f0fbb0e0ba1eb575f783b0365c80db19b54a93600bae43b03c","flags":[],"package":"extra","source":"hackage","version":"1.7.12"},{"cabal_sha256":"372c1733d83b90045eb29da9f010fed79bfef8771ce65eb126a1d83ecc54a9a2","revision":0,"src_sha256":"cc445d439ea2f65cac7604d3578aa2c3a62e5a91dc989f4ce5b3390db9e59636","flags":[],"package":"filepattern","source":"hackage","version":"0.1.3"},{"cabal_sha256":"50b2f002c68fe67730ee7a3cd8607486197dd99b084255005ad51ecd6970a41b","revision":0,"src_sha256":"e1b305c280e66ad827edeaedd6933b9fc4174f626882877eab2a08344e665e87","flags":["+containers","+integer-gmp","-random-initial-seed"],"package":"hashable","source":"hackage","version":"1.4.1.0"},{"cabal_sha256":"66b19fcd813b0e4db3e0bac541bd46606c3b13d3d081d9f9666f4be0f5ff14b8","revision":0,"src_sha256":"89329df8b95ae99ef272e41e7a2d0fe2f1bb7eacfcc34bc01664414b33067cfd","flags":[],"package":"heaps","source":"hackage","version":"0.4"},{"cabal_sha256":"f75cb4fa53c88c65794becdd48eb0d3b2b8abd89a3d5c19e87af91f5225c15e4","revision":0,"src_sha256":"e28dd65bee8083b17210134e22e01c6349dc33c3b7bd17705973cd014e9f20ac","flags":[],"package":"js-dgtable","source":"hackage","version":"0.5.2"},{"cabal_sha256":"4c1c447a9a2fba0adba6d30678302a30c32b9dfde9e7aa9e9156483e1545096d","revision":0,"src_sha256":"1ba2f2a6b8d85da76c41f526c98903cbb107f8642e506c072c1e7e3c20fe5e7a","flags":[],"package":"js-flot","source":"hackage","version":"0.8.3"},{"cabal_sha256":"59ab6c79159549ef94b584abce8e6d3b336014c2cce1337b59a8f637e2856df5","revision":0,"src_sha256":"e0e0681f0da1130ede4e03a051630ea439c458cb97216cdb01771ebdbe44069b","flags":[],"package":"js-jquery","source":"hackage","version":"3.3.1"},{"cabal_sha256":"89b88a3e08493b7727fa4089b0692bfbdf7e1e666ef54635f458644eb8358764","revision":0,"src_sha256":"5b2d6dc2812eb2f6a115f05fcbe3e723d3aeff7894b012c617e075130581add5","flags":[],"package":"primitive","source":"hackage","version":"0.7.4.0"},{"cabal_sha256":"db11042bb0356c0adea277d0794743829125b4c99455af6af2bd5f7bd5e88a39","revision":1,"src_sha256":"1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2","flags":["-debug"],"package":"unordered-containers","source":"hackage","version":"0.2.19.1"},{"cabal_sha256":"79416292186feeaf1f60e49ac5a1ffae9bf1b120e040a74bf0e81ca7f1d31d3f","revision":0,"src_sha256":"ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a","flags":[],"package":"utf8-string","source":"hackage","version":"1.0.2"},{"cabal_sha256":"ca49ff48ad82cdea18824a6fa7bd15f62ded882988316bd724fcc97fa5031b6a","revision":0,"src_sha256":"7d9db837bfd67acaaabdb3cea29acc15559ede82dd9f75d438589268031cd542","flags":["-cloud","-embed-files","-portable"],"package":"shake","source":"hackage","version":"0.19.6"},{"cabal_sha256":null,"revision":null,"src_sha256":null,"flags":["+selftest","+threaded"],"package":"hadrian","source":"local","version":"0.1.0.0"}],"builtin":[{"package":"rts","version":"1.0.2"},{"package":"ghc-prim","version":"0.8.0"},{"package":"ghc-bignum","version":"1.2"},{"package":"base","version":"4.16.2.0"},{"package":"array","version":"0.5.4.0"},{"package":"deepseq","version":"1.4.6.1"},{"package":"ghc-boot-th","version":"9.2.3"},{"package":"pretty","version":"1.1.3.6"},{"package":"template-haskell","version":"2.18.0.0"},{"package":"bytestring","version":"0.11.3.1"},{"package":"containers","version":"0.6.5.1"},{"package":"binary","version":"0.8.9.0"},{"package":"filepath","version":"1.4.2.2"},{"package":"time","version":"1.11.1.1"},{"package":"unix","version":"2.7.2.2"},{"package":"directory","version":"1.3.6.2"},{"package":"transformers","version":"0.5.6.2"},{"package":"mtl","version":"2.2.2"},{"package":"text","version":"1.2.5.0"},{"package":"parsec","version":"3.1.15.0"},{"package":"process","version":"1.6.13.2"},{"package":"Cabal","version":"3.6.3.0"}]}
\ No newline at end of file
+{
+  "builtin": [
+    {
+      "package": "rts",
+      "version": "1.0.2"
+    },
+    {
+      "package": "ghc-prim",
+      "version": "0.8.0"
+    },
+    {
+      "package": "ghc-bignum",
+      "version": "1.2"
+    },
+    {
+      "package": "base",
+      "version": "4.16.2.0"
+    },
+    {
+      "package": "array",
+      "version": "0.5.4.0"
+    },
+    {
+      "package": "deepseq",
+      "version": "1.4.6.1"
+    },
+    {
+      "package": "ghc-boot-th",
+      "version": "9.2.3"
+    },
+    {
+      "package": "pretty",
+      "version": "1.1.3.6"
+    },
+    {
+      "package": "template-haskell",
+      "version": "2.18.0.0"
+    },
+    {
+      "package": "bytestring",
+      "version": "0.11.3.1"
+    },
+    {
+      "package": "containers",
+      "version": "0.6.5.1"
+    },
+    {
+      "package": "binary",
+      "version": "0.8.9.0"
+    },
+    {
+      "package": "filepath",
+      "version": "1.4.2.2"
+    },
+    {
+      "package": "time",
+      "version": "1.11.1.1"
+    },
+    {
+      "package": "unix",
+      "version": "2.7.2.2"
+    },
+    {
+      "package": "directory",
+      "version": "1.3.6.2"
+    },
+    {
+      "package": "transformers",
+      "version": "0.5.6.2"
+    },
+    {
+      "package": "mtl",
+      "version": "2.2.2"
+    },
+    {
+      "package": "text",
+      "version": "1.2.5.0"
+    },
+    {
+      "package": "parsec",
+      "version": "3.1.15.0"
+    },
+    {
+      "package": "process",
+      "version": "1.6.13.2"
+    }
+  ],
+  "dependencies": [
+    {
+      "cabal_sha256": "804e2574bc7e32d08cbab91e47ee6287b4df7d50851d73f9e778f94a9a7814c7",
+      "flags": [
+        "-optimised-mixer"
+      ],
+      "package": "splitmix",
+      "revision": 1,
+      "source": "hackage",
+      "src_sha256": "6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa",
+      "version": "0.1.0.4"
+    },
+    {
+      "cabal_sha256": "dea1f11e5569332dc6c8efaad1cb301016a5587b6754943a49f9de08ae0e56d9",
+      "flags": [],
+      "package": "random",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76",
+      "version": "1.2.1.1"
+    },
+    {
+      "cabal_sha256": "4ce29211223d5e6620ebceba34a3ca9ccf1c10c0cf387d48aea45599222ee5aa",
+      "flags": [
+        "-old-random",
+        "+templatehaskell"
+      ],
+      "package": "QuickCheck",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "d87b6c85696b601175274361fa62217894401e401e150c3c5d4013ac53cd36f3",
+      "version": "2.14.2"
+    },
+    {
+      "cabal_sha256": "a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c",
+      "flags": [
+        "-llvm"
+      ],
+      "package": "clock",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "845ce5db4c98cefd517323e005f87effceff886987305e421c4ef616dc0505d1",
+      "version": "0.8.3"
+    },
+    {
+      "cabal_sha256": "3ac58d7341976173d1052e7b2837d119212d9afcf911735667c7f1ab67aec25f",
+      "flags": [],
+      "package": "extra",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "e571a9ec1d8865f0fbb0e0ba1eb575f783b0365c80db19b54a93600bae43b03c",
+      "version": "1.7.12"
+    },
+    {
+      "cabal_sha256": "372c1733d83b90045eb29da9f010fed79bfef8771ce65eb126a1d83ecc54a9a2",
+      "flags": [],
+      "package": "filepattern",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "cc445d439ea2f65cac7604d3578aa2c3a62e5a91dc989f4ce5b3390db9e59636",
+      "version": "0.1.3"
+    },
+    {
+      "cabal_sha256": "50b2f002c68fe67730ee7a3cd8607486197dd99b084255005ad51ecd6970a41b",
+      "flags": [
+        "+containers",
+        "+integer-gmp",
+        "-random-initial-seed"
+      ],
+      "package": "hashable",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "e1b305c280e66ad827edeaedd6933b9fc4174f626882877eab2a08344e665e87",
+      "version": "1.4.1.0"
+    },
+    {
+      "cabal_sha256": "66b19fcd813b0e4db3e0bac541bd46606c3b13d3d081d9f9666f4be0f5ff14b8",
+      "flags": [],
+      "package": "heaps",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "89329df8b95ae99ef272e41e7a2d0fe2f1bb7eacfcc34bc01664414b33067cfd",
+      "version": "0.4"
+    },
+    {
+      "cabal_sha256": "f75cb4fa53c88c65794becdd48eb0d3b2b8abd89a3d5c19e87af91f5225c15e4",
+      "flags": [],
+      "package": "js-dgtable",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "e28dd65bee8083b17210134e22e01c6349dc33c3b7bd17705973cd014e9f20ac",
+      "version": "0.5.2"
+    },
+    {
+      "cabal_sha256": "4c1c447a9a2fba0adba6d30678302a30c32b9dfde9e7aa9e9156483e1545096d",
+      "flags": [],
+      "package": "js-flot",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "1ba2f2a6b8d85da76c41f526c98903cbb107f8642e506c072c1e7e3c20fe5e7a",
+      "version": "0.8.3"
+    },
+    {
+      "cabal_sha256": "59ab6c79159549ef94b584abce8e6d3b336014c2cce1337b59a8f637e2856df5",
+      "flags": [],
+      "package": "js-jquery",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "e0e0681f0da1130ede4e03a051630ea439c458cb97216cdb01771ebdbe44069b",
+      "version": "3.3.1"
+    },
+    {
+      "cabal_sha256": "89b88a3e08493b7727fa4089b0692bfbdf7e1e666ef54635f458644eb8358764",
+      "flags": [],
+      "package": "primitive",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "5b2d6dc2812eb2f6a115f05fcbe3e723d3aeff7894b012c617e075130581add5",
+      "version": "0.7.4.0"
+    },
+    {
+      "cabal_sha256": "db11042bb0356c0adea277d0794743829125b4c99455af6af2bd5f7bd5e88a39",
+      "flags": [
+        "-debug"
+      ],
+      "package": "unordered-containers",
+      "revision": 1,
+      "source": "hackage",
+      "src_sha256": "1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2",
+      "version": "0.2.19.1"
+    },
+    {
+      "cabal_sha256": "79416292186feeaf1f60e49ac5a1ffae9bf1b120e040a74bf0e81ca7f1d31d3f",
+      "flags": [],
+      "package": "utf8-string",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a",
+      "version": "1.0.2"
+    },
+    {
+      "cabal_sha256": "ca49ff48ad82cdea18824a6fa7bd15f62ded882988316bd724fcc97fa5031b6a",
+      "flags": [
+        "-cloud",
+        "-embed-files",
+        "-portable"
+      ],
+      "package": "shake",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "7d9db837bfd67acaaabdb3cea29acc15559ede82dd9f75d438589268031cd542",
+      "version": "0.19.6"
+    },
+    {
+      "cabal_sha256": null,
+      "flags": [
+        "+selftest",
+        "+threaded"
+      ],
+      "package": "hadrian",
+      "revision": null,
+      "source": "local",
+      "src_sha256": null,
+      "version": "0.1.0.0"
+    },
+    {
+      "cabal_sha256": null,
+      "package": "Cabal",
+      "revision": null,
+      "source": "local",
+      "src_sha256": null,
+      "version": "3.9.0.0"
+    },
+    {
+      "cabal_sha256": null,
+      "package": "Cabal-syntax",
+      "revision": null,
+      "source": "local",
+      "src_sha256": null,
+      "version": "3.9.0.0"
+    }
+  ]
+}


=====================================
hadrian/bootstrap/plan-bootstrap-9_2_4.json
=====================================
@@ -1 +1,270 @@
-{"dependencies":[{"cabal_sha256":"804e2574bc7e32d08cbab91e47ee6287b4df7d50851d73f9e778f94a9a7814c7","revision":1,"src_sha256":"6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa","flags":["-optimised-mixer"],"package":"splitmix","source":"hackage","version":"0.1.0.4"},{"cabal_sha256":"dea1f11e5569332dc6c8efaad1cb301016a5587b6754943a49f9de08ae0e56d9","revision":0,"src_sha256":"3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76","flags":[],"package":"random","source":"hackage","version":"1.2.1.1"},{"cabal_sha256":"4ce29211223d5e6620ebceba34a3ca9ccf1c10c0cf387d48aea45599222ee5aa","revision":0,"src_sha256":"d87b6c85696b601175274361fa62217894401e401e150c3c5d4013ac53cd36f3","flags":["-old-random","+templatehaskell"],"package":"QuickCheck","source":"hackage","version":"2.14.2"},{"cabal_sha256":"a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c","revision":0,"src_sha256":"845ce5db4c98cefd517323e005f87effceff886987305e421c4ef616dc0505d1","flags":["-llvm"],"package":"clock","source":"hackage","version":"0.8.3"},{"cabal_sha256":"3ac58d7341976173d1052e7b2837d119212d9afcf911735667c7f1ab67aec25f","revision":0,"src_sha256":"e571a9ec1d8865f0fbb0e0ba1eb575f783b0365c80db19b54a93600bae43b03c","flags":[],"package":"extra","source":"hackage","version":"1.7.12"},{"cabal_sha256":"372c1733d83b90045eb29da9f010fed79bfef8771ce65eb126a1d83ecc54a9a2","revision":0,"src_sha256":"cc445d439ea2f65cac7604d3578aa2c3a62e5a91dc989f4ce5b3390db9e59636","flags":[],"package":"filepattern","source":"hackage","version":"0.1.3"},{"cabal_sha256":"50b2f002c68fe67730ee7a3cd8607486197dd99b084255005ad51ecd6970a41b","revision":0,"src_sha256":"e1b305c280e66ad827edeaedd6933b9fc4174f626882877eab2a08344e665e87","flags":["+containers","+integer-gmp","-random-initial-seed"],"package":"hashable","source":"hackage","version":"1.4.1.0"},{"cabal_sha256":"66b19fcd813b0e4db3e0bac541bd46606c3b13d3d081d9f9666f4be0f5ff14b8","revision":0,"src_sha256":"89329df8b95ae99ef272e41e7a2d0fe2f1bb7eacfcc34bc01664414b33067cfd","flags":[],"package":"heaps","source":"hackage","version":"0.4"},{"cabal_sha256":"f75cb4fa53c88c65794becdd48eb0d3b2b8abd89a3d5c19e87af91f5225c15e4","revision":0,"src_sha256":"e28dd65bee8083b17210134e22e01c6349dc33c3b7bd17705973cd014e9f20ac","flags":[],"package":"js-dgtable","source":"hackage","version":"0.5.2"},{"cabal_sha256":"4c1c447a9a2fba0adba6d30678302a30c32b9dfde9e7aa9e9156483e1545096d","revision":0,"src_sha256":"1ba2f2a6b8d85da76c41f526c98903cbb107f8642e506c072c1e7e3c20fe5e7a","flags":[],"package":"js-flot","source":"hackage","version":"0.8.3"},{"cabal_sha256":"59ab6c79159549ef94b584abce8e6d3b336014c2cce1337b59a8f637e2856df5","revision":0,"src_sha256":"e0e0681f0da1130ede4e03a051630ea439c458cb97216cdb01771ebdbe44069b","flags":[],"package":"js-jquery","source":"hackage","version":"3.3.1"},{"cabal_sha256":"89b88a3e08493b7727fa4089b0692bfbdf7e1e666ef54635f458644eb8358764","revision":0,"src_sha256":"5b2d6dc2812eb2f6a115f05fcbe3e723d3aeff7894b012c617e075130581add5","flags":[],"package":"primitive","source":"hackage","version":"0.7.4.0"},{"cabal_sha256":"db11042bb0356c0adea277d0794743829125b4c99455af6af2bd5f7bd5e88a39","revision":1,"src_sha256":"1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2","flags":["-debug"],"package":"unordered-containers","source":"hackage","version":"0.2.19.1"},{"cabal_sha256":"79416292186feeaf1f60e49ac5a1ffae9bf1b120e040a74bf0e81ca7f1d31d3f","revision":0,"src_sha256":"ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a","flags":[],"package":"utf8-string","source":"hackage","version":"1.0.2"},{"cabal_sha256":"ca49ff48ad82cdea18824a6fa7bd15f62ded882988316bd724fcc97fa5031b6a","revision":0,"src_sha256":"7d9db837bfd67acaaabdb3cea29acc15559ede82dd9f75d438589268031cd542","flags":["-cloud","-embed-files","-portable"],"package":"shake","source":"hackage","version":"0.19.6"},{"cabal_sha256":null,"revision":null,"src_sha256":null,"flags":["+selftest","+threaded"],"package":"hadrian","source":"local","version":"0.1.0.0"}],"builtin":[{"package":"rts","version":"1.0.2"},{"package":"ghc-prim","version":"0.8.0"},{"package":"ghc-bignum","version":"1.2"},{"package":"base","version":"4.16.3.0"},{"package":"array","version":"0.5.4.0"},{"package":"deepseq","version":"1.4.6.1"},{"package":"ghc-boot-th","version":"9.2.4"},{"package":"pretty","version":"1.1.3.6"},{"package":"template-haskell","version":"2.18.0.0"},{"package":"bytestring","version":"0.11.3.1"},{"package":"containers","version":"0.6.5.1"},{"package":"binary","version":"0.8.9.0"},{"package":"filepath","version":"1.4.2.2"},{"package":"time","version":"1.11.1.1"},{"package":"unix","version":"2.7.2.2"},{"package":"directory","version":"1.3.6.2"},{"package":"transformers","version":"0.5.6.2"},{"package":"mtl","version":"2.2.2"},{"package":"text","version":"1.2.5.0"},{"package":"parsec","version":"3.1.15.0"},{"package":"process","version":"1.6.13.2"},{"package":"Cabal","version":"3.6.3.0"}]}
\ No newline at end of file
+{
+  "builtin": [
+    {
+      "package": "rts",
+      "version": "1.0.2"
+    },
+    {
+      "package": "ghc-prim",
+      "version": "0.8.0"
+    },
+    {
+      "package": "ghc-bignum",
+      "version": "1.2"
+    },
+    {
+      "package": "base",
+      "version": "4.16.3.0"
+    },
+    {
+      "package": "array",
+      "version": "0.5.4.0"
+    },
+    {
+      "package": "deepseq",
+      "version": "1.4.6.1"
+    },
+    {
+      "package": "ghc-boot-th",
+      "version": "9.2.4"
+    },
+    {
+      "package": "pretty",
+      "version": "1.1.3.6"
+    },
+    {
+      "package": "template-haskell",
+      "version": "2.18.0.0"
+    },
+    {
+      "package": "bytestring",
+      "version": "0.11.3.1"
+    },
+    {
+      "package": "containers",
+      "version": "0.6.5.1"
+    },
+    {
+      "package": "binary",
+      "version": "0.8.9.0"
+    },
+    {
+      "package": "filepath",
+      "version": "1.4.2.2"
+    },
+    {
+      "package": "time",
+      "version": "1.11.1.1"
+    },
+    {
+      "package": "unix",
+      "version": "2.7.2.2"
+    },
+    {
+      "package": "directory",
+      "version": "1.3.6.2"
+    },
+    {
+      "package": "transformers",
+      "version": "0.5.6.2"
+    },
+    {
+      "package": "mtl",
+      "version": "2.2.2"
+    },
+    {
+      "package": "text",
+      "version": "1.2.5.0"
+    },
+    {
+      "package": "parsec",
+      "version": "3.1.15.0"
+    },
+    {
+      "package": "process",
+      "version": "1.6.13.2"
+    }
+  ],
+  "dependencies": [
+    {
+      "cabal_sha256": "804e2574bc7e32d08cbab91e47ee6287b4df7d50851d73f9e778f94a9a7814c7",
+      "flags": [
+        "-optimised-mixer"
+      ],
+      "package": "splitmix",
+      "revision": 1,
+      "source": "hackage",
+      "src_sha256": "6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa",
+      "version": "0.1.0.4"
+    },
+    {
+      "cabal_sha256": "dea1f11e5569332dc6c8efaad1cb301016a5587b6754943a49f9de08ae0e56d9",
+      "flags": [],
+      "package": "random",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76",
+      "version": "1.2.1.1"
+    },
+    {
+      "cabal_sha256": "4ce29211223d5e6620ebceba34a3ca9ccf1c10c0cf387d48aea45599222ee5aa",
+      "flags": [
+        "-old-random",
+        "+templatehaskell"
+      ],
+      "package": "QuickCheck",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "d87b6c85696b601175274361fa62217894401e401e150c3c5d4013ac53cd36f3",
+      "version": "2.14.2"
+    },
+    {
+      "cabal_sha256": "a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c",
+      "flags": [
+        "-llvm"
+      ],
+      "package": "clock",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "845ce5db4c98cefd517323e005f87effceff886987305e421c4ef616dc0505d1",
+      "version": "0.8.3"
+    },
+    {
+      "cabal_sha256": "3ac58d7341976173d1052e7b2837d119212d9afcf911735667c7f1ab67aec25f",
+      "flags": [],
+      "package": "extra",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "e571a9ec1d8865f0fbb0e0ba1eb575f783b0365c80db19b54a93600bae43b03c",
+      "version": "1.7.12"
+    },
+    {
+      "cabal_sha256": "372c1733d83b90045eb29da9f010fed79bfef8771ce65eb126a1d83ecc54a9a2",
+      "flags": [],
+      "package": "filepattern",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "cc445d439ea2f65cac7604d3578aa2c3a62e5a91dc989f4ce5b3390db9e59636",
+      "version": "0.1.3"
+    },
+    {
+      "cabal_sha256": "50b2f002c68fe67730ee7a3cd8607486197dd99b084255005ad51ecd6970a41b",
+      "flags": [
+        "+containers",
+        "+integer-gmp",
+        "-random-initial-seed"
+      ],
+      "package": "hashable",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "e1b305c280e66ad827edeaedd6933b9fc4174f626882877eab2a08344e665e87",
+      "version": "1.4.1.0"
+    },
+    {
+      "cabal_sha256": "66b19fcd813b0e4db3e0bac541bd46606c3b13d3d081d9f9666f4be0f5ff14b8",
+      "flags": [],
+      "package": "heaps",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "89329df8b95ae99ef272e41e7a2d0fe2f1bb7eacfcc34bc01664414b33067cfd",
+      "version": "0.4"
+    },
+    {
+      "cabal_sha256": "f75cb4fa53c88c65794becdd48eb0d3b2b8abd89a3d5c19e87af91f5225c15e4",
+      "flags": [],
+      "package": "js-dgtable",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "e28dd65bee8083b17210134e22e01c6349dc33c3b7bd17705973cd014e9f20ac",
+      "version": "0.5.2"
+    },
+    {
+      "cabal_sha256": "4c1c447a9a2fba0adba6d30678302a30c32b9dfde9e7aa9e9156483e1545096d",
+      "flags": [],
+      "package": "js-flot",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "1ba2f2a6b8d85da76c41f526c98903cbb107f8642e506c072c1e7e3c20fe5e7a",
+      "version": "0.8.3"
+    },
+    {
+      "cabal_sha256": "59ab6c79159549ef94b584abce8e6d3b336014c2cce1337b59a8f637e2856df5",
+      "flags": [],
+      "package": "js-jquery",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "e0e0681f0da1130ede4e03a051630ea439c458cb97216cdb01771ebdbe44069b",
+      "version": "3.3.1"
+    },
+    {
+      "cabal_sha256": "89b88a3e08493b7727fa4089b0692bfbdf7e1e666ef54635f458644eb8358764",
+      "flags": [],
+      "package": "primitive",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "5b2d6dc2812eb2f6a115f05fcbe3e723d3aeff7894b012c617e075130581add5",
+      "version": "0.7.4.0"
+    },
+    {
+      "cabal_sha256": "db11042bb0356c0adea277d0794743829125b4c99455af6af2bd5f7bd5e88a39",
+      "flags": [
+        "-debug"
+      ],
+      "package": "unordered-containers",
+      "revision": 1,
+      "source": "hackage",
+      "src_sha256": "1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2",
+      "version": "0.2.19.1"
+    },
+    {
+      "cabal_sha256": "79416292186feeaf1f60e49ac5a1ffae9bf1b120e040a74bf0e81ca7f1d31d3f",
+      "flags": [],
+      "package": "utf8-string",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a",
+      "version": "1.0.2"
+    },
+    {
+      "cabal_sha256": "ca49ff48ad82cdea18824a6fa7bd15f62ded882988316bd724fcc97fa5031b6a",
+      "flags": [
+        "-cloud",
+        "-embed-files",
+        "-portable"
+      ],
+      "package": "shake",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "7d9db837bfd67acaaabdb3cea29acc15559ede82dd9f75d438589268031cd542",
+      "version": "0.19.6"
+    },
+    {
+      "cabal_sha256": null,
+      "flags": [
+        "+selftest",
+        "+threaded"
+      ],
+      "package": "hadrian",
+      "revision": null,
+      "source": "local",
+      "src_sha256": null,
+      "version": "0.1.0.0"
+    },
+    {
+      "cabal_sha256": null,
+      "package": "Cabal",
+      "revision": null,
+      "source": "local",
+      "src_sha256": null,
+      "version": "3.9.0.0"
+    },
+    {
+      "cabal_sha256": null,
+      "package": "Cabal-syntax",
+      "revision": null,
+      "source": "local",
+      "src_sha256": null,
+      "version": "3.9.0.0"
+    }
+  ]
+}


=====================================
hadrian/bootstrap/plan-bootstrap-9_2_5.json
=====================================
@@ -1 +1,270 @@
-{"dependencies":[{"cabal_sha256":"804e2574bc7e32d08cbab91e47ee6287b4df7d50851d73f9e778f94a9a7814c7","revision":1,"src_sha256":"6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa","flags":["-optimised-mixer"],"package":"splitmix","source":"hackage","version":"0.1.0.4"},{"cabal_sha256":"dea1f11e5569332dc6c8efaad1cb301016a5587b6754943a49f9de08ae0e56d9","revision":0,"src_sha256":"3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76","flags":[],"package":"random","source":"hackage","version":"1.2.1.1"},{"cabal_sha256":"4ce29211223d5e6620ebceba34a3ca9ccf1c10c0cf387d48aea45599222ee5aa","revision":0,"src_sha256":"d87b6c85696b601175274361fa62217894401e401e150c3c5d4013ac53cd36f3","flags":["-old-random","+templatehaskell"],"package":"QuickCheck","source":"hackage","version":"2.14.2"},{"cabal_sha256":"a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c","revision":0,"src_sha256":"845ce5db4c98cefd517323e005f87effceff886987305e421c4ef616dc0505d1","flags":["-llvm"],"package":"clock","source":"hackage","version":"0.8.3"},{"cabal_sha256":"3ac58d7341976173d1052e7b2837d119212d9afcf911735667c7f1ab67aec25f","revision":0,"src_sha256":"e571a9ec1d8865f0fbb0e0ba1eb575f783b0365c80db19b54a93600bae43b03c","flags":[],"package":"extra","source":"hackage","version":"1.7.12"},{"cabal_sha256":"372c1733d83b90045eb29da9f010fed79bfef8771ce65eb126a1d83ecc54a9a2","revision":0,"src_sha256":"cc445d439ea2f65cac7604d3578aa2c3a62e5a91dc989f4ce5b3390db9e59636","flags":[],"package":"filepattern","source":"hackage","version":"0.1.3"},{"cabal_sha256":"50b2f002c68fe67730ee7a3cd8607486197dd99b084255005ad51ecd6970a41b","revision":0,"src_sha256":"e1b305c280e66ad827edeaedd6933b9fc4174f626882877eab2a08344e665e87","flags":["+containers","+integer-gmp","-random-initial-seed"],"package":"hashable","source":"hackage","version":"1.4.1.0"},{"cabal_sha256":"66b19fcd813b0e4db3e0bac541bd46606c3b13d3d081d9f9666f4be0f5ff14b8","revision":0,"src_sha256":"89329df8b95ae99ef272e41e7a2d0fe2f1bb7eacfcc34bc01664414b33067cfd","flags":[],"package":"heaps","source":"hackage","version":"0.4"},{"cabal_sha256":"f75cb4fa53c88c65794becdd48eb0d3b2b8abd89a3d5c19e87af91f5225c15e4","revision":0,"src_sha256":"e28dd65bee8083b17210134e22e01c6349dc33c3b7bd17705973cd014e9f20ac","flags":[],"package":"js-dgtable","source":"hackage","version":"0.5.2"},{"cabal_sha256":"4c1c447a9a2fba0adba6d30678302a30c32b9dfde9e7aa9e9156483e1545096d","revision":0,"src_sha256":"1ba2f2a6b8d85da76c41f526c98903cbb107f8642e506c072c1e7e3c20fe5e7a","flags":[],"package":"js-flot","source":"hackage","version":"0.8.3"},{"cabal_sha256":"59ab6c79159549ef94b584abce8e6d3b336014c2cce1337b59a8f637e2856df5","revision":0,"src_sha256":"e0e0681f0da1130ede4e03a051630ea439c458cb97216cdb01771ebdbe44069b","flags":[],"package":"js-jquery","source":"hackage","version":"3.3.1"},{"cabal_sha256":"89b88a3e08493b7727fa4089b0692bfbdf7e1e666ef54635f458644eb8358764","revision":0,"src_sha256":"5b2d6dc2812eb2f6a115f05fcbe3e723d3aeff7894b012c617e075130581add5","flags":[],"package":"primitive","source":"hackage","version":"0.7.4.0"},{"cabal_sha256":"db11042bb0356c0adea277d0794743829125b4c99455af6af2bd5f7bd5e88a39","revision":1,"src_sha256":"1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2","flags":["-debug"],"package":"unordered-containers","source":"hackage","version":"0.2.19.1"},{"cabal_sha256":"79416292186feeaf1f60e49ac5a1ffae9bf1b120e040a74bf0e81ca7f1d31d3f","revision":0,"src_sha256":"ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a","flags":[],"package":"utf8-string","source":"hackage","version":"1.0.2"},{"cabal_sha256":"ca49ff48ad82cdea18824a6fa7bd15f62ded882988316bd724fcc97fa5031b6a","revision":0,"src_sha256":"7d9db837bfd67acaaabdb3cea29acc15559ede82dd9f75d438589268031cd542","flags":["-cloud","-embed-files","-portable"],"package":"shake","source":"hackage","version":"0.19.6"},{"cabal_sha256":null,"revision":null,"src_sha256":null,"flags":["+selftest","+threaded"],"package":"hadrian","source":"local","version":"0.1.0.0"}],"builtin":[{"package":"rts","version":"1.0.2"},{"package":"ghc-prim","version":"0.8.0"},{"package":"ghc-bignum","version":"1.2"},{"package":"base","version":"4.16.4.0"},{"package":"array","version":"0.5.4.0"},{"package":"deepseq","version":"1.4.6.1"},{"package":"ghc-boot-th","version":"9.2.5"},{"package":"pretty","version":"1.1.3.6"},{"package":"template-haskell","version":"2.18.0.0"},{"package":"bytestring","version":"0.11.3.1"},{"package":"containers","version":"0.6.5.1"},{"package":"binary","version":"0.8.9.0"},{"package":"filepath","version":"1.4.2.2"},{"package":"time","version":"1.11.1.1"},{"package":"unix","version":"2.7.2.2"},{"package":"directory","version":"1.3.6.2"},{"package":"transformers","version":"0.5.6.2"},{"package":"mtl","version":"2.2.2"},{"package":"text","version":"1.2.5.0"},{"package":"parsec","version":"3.1.15.0"},{"package":"process","version":"1.6.16.0"},{"package":"Cabal","version":"3.6.3.0"}]}
\ No newline at end of file
+{
+  "builtin": [
+    {
+      "package": "rts",
+      "version": "1.0.2"
+    },
+    {
+      "package": "ghc-prim",
+      "version": "0.8.0"
+    },
+    {
+      "package": "ghc-bignum",
+      "version": "1.2"
+    },
+    {
+      "package": "base",
+      "version": "4.16.4.0"
+    },
+    {
+      "package": "array",
+      "version": "0.5.4.0"
+    },
+    {
+      "package": "deepseq",
+      "version": "1.4.6.1"
+    },
+    {
+      "package": "ghc-boot-th",
+      "version": "9.2.5"
+    },
+    {
+      "package": "pretty",
+      "version": "1.1.3.6"
+    },
+    {
+      "package": "template-haskell",
+      "version": "2.18.0.0"
+    },
+    {
+      "package": "bytestring",
+      "version": "0.11.3.1"
+    },
+    {
+      "package": "containers",
+      "version": "0.6.5.1"
+    },
+    {
+      "package": "binary",
+      "version": "0.8.9.0"
+    },
+    {
+      "package": "filepath",
+      "version": "1.4.2.2"
+    },
+    {
+      "package": "time",
+      "version": "1.11.1.1"
+    },
+    {
+      "package": "unix",
+      "version": "2.7.2.2"
+    },
+    {
+      "package": "directory",
+      "version": "1.3.6.2"
+    },
+    {
+      "package": "transformers",
+      "version": "0.5.6.2"
+    },
+    {
+      "package": "mtl",
+      "version": "2.2.2"
+    },
+    {
+      "package": "text",
+      "version": "1.2.5.0"
+    },
+    {
+      "package": "parsec",
+      "version": "3.1.15.0"
+    },
+    {
+      "package": "process",
+      "version": "1.6.16.0"
+    }
+  ],
+  "dependencies": [
+    {
+      "cabal_sha256": "804e2574bc7e32d08cbab91e47ee6287b4df7d50851d73f9e778f94a9a7814c7",
+      "flags": [
+        "-optimised-mixer"
+      ],
+      "package": "splitmix",
+      "revision": 1,
+      "source": "hackage",
+      "src_sha256": "6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa",
+      "version": "0.1.0.4"
+    },
+    {
+      "cabal_sha256": "dea1f11e5569332dc6c8efaad1cb301016a5587b6754943a49f9de08ae0e56d9",
+      "flags": [],
+      "package": "random",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76",
+      "version": "1.2.1.1"
+    },
+    {
+      "cabal_sha256": "4ce29211223d5e6620ebceba34a3ca9ccf1c10c0cf387d48aea45599222ee5aa",
+      "flags": [
+        "-old-random",
+        "+templatehaskell"
+      ],
+      "package": "QuickCheck",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "d87b6c85696b601175274361fa62217894401e401e150c3c5d4013ac53cd36f3",
+      "version": "2.14.2"
+    },
+    {
+      "cabal_sha256": "a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c",
+      "flags": [
+        "-llvm"
+      ],
+      "package": "clock",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "845ce5db4c98cefd517323e005f87effceff886987305e421c4ef616dc0505d1",
+      "version": "0.8.3"
+    },
+    {
+      "cabal_sha256": "3ac58d7341976173d1052e7b2837d119212d9afcf911735667c7f1ab67aec25f",
+      "flags": [],
+      "package": "extra",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "e571a9ec1d8865f0fbb0e0ba1eb575f783b0365c80db19b54a93600bae43b03c",
+      "version": "1.7.12"
+    },
+    {
+      "cabal_sha256": "372c1733d83b90045eb29da9f010fed79bfef8771ce65eb126a1d83ecc54a9a2",
+      "flags": [],
+      "package": "filepattern",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "cc445d439ea2f65cac7604d3578aa2c3a62e5a91dc989f4ce5b3390db9e59636",
+      "version": "0.1.3"
+    },
+    {
+      "cabal_sha256": "50b2f002c68fe67730ee7a3cd8607486197dd99b084255005ad51ecd6970a41b",
+      "flags": [
+        "+containers",
+        "+integer-gmp",
+        "-random-initial-seed"
+      ],
+      "package": "hashable",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "e1b305c280e66ad827edeaedd6933b9fc4174f626882877eab2a08344e665e87",
+      "version": "1.4.1.0"
+    },
+    {
+      "cabal_sha256": "66b19fcd813b0e4db3e0bac541bd46606c3b13d3d081d9f9666f4be0f5ff14b8",
+      "flags": [],
+      "package": "heaps",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "89329df8b95ae99ef272e41e7a2d0fe2f1bb7eacfcc34bc01664414b33067cfd",
+      "version": "0.4"
+    },
+    {
+      "cabal_sha256": "f75cb4fa53c88c65794becdd48eb0d3b2b8abd89a3d5c19e87af91f5225c15e4",
+      "flags": [],
+      "package": "js-dgtable",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "e28dd65bee8083b17210134e22e01c6349dc33c3b7bd17705973cd014e9f20ac",
+      "version": "0.5.2"
+    },
+    {
+      "cabal_sha256": "4c1c447a9a2fba0adba6d30678302a30c32b9dfde9e7aa9e9156483e1545096d",
+      "flags": [],
+      "package": "js-flot",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "1ba2f2a6b8d85da76c41f526c98903cbb107f8642e506c072c1e7e3c20fe5e7a",
+      "version": "0.8.3"
+    },
+    {
+      "cabal_sha256": "59ab6c79159549ef94b584abce8e6d3b336014c2cce1337b59a8f637e2856df5",
+      "flags": [],
+      "package": "js-jquery",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "e0e0681f0da1130ede4e03a051630ea439c458cb97216cdb01771ebdbe44069b",
+      "version": "3.3.1"
+    },
+    {
+      "cabal_sha256": "89b88a3e08493b7727fa4089b0692bfbdf7e1e666ef54635f458644eb8358764",
+      "flags": [],
+      "package": "primitive",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "5b2d6dc2812eb2f6a115f05fcbe3e723d3aeff7894b012c617e075130581add5",
+      "version": "0.7.4.0"
+    },
+    {
+      "cabal_sha256": "db11042bb0356c0adea277d0794743829125b4c99455af6af2bd5f7bd5e88a39",
+      "flags": [
+        "-debug"
+      ],
+      "package": "unordered-containers",
+      "revision": 1,
+      "source": "hackage",
+      "src_sha256": "1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2",
+      "version": "0.2.19.1"
+    },
+    {
+      "cabal_sha256": "79416292186feeaf1f60e49ac5a1ffae9bf1b120e040a74bf0e81ca7f1d31d3f",
+      "flags": [],
+      "package": "utf8-string",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a",
+      "version": "1.0.2"
+    },
+    {
+      "cabal_sha256": "ca49ff48ad82cdea18824a6fa7bd15f62ded882988316bd724fcc97fa5031b6a",
+      "flags": [
+        "-cloud",
+        "-embed-files",
+        "-portable"
+      ],
+      "package": "shake",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "7d9db837bfd67acaaabdb3cea29acc15559ede82dd9f75d438589268031cd542",
+      "version": "0.19.6"
+    },
+    {
+      "cabal_sha256": null,
+      "flags": [
+        "+selftest",
+        "+threaded"
+      ],
+      "package": "hadrian",
+      "revision": null,
+      "source": "local",
+      "src_sha256": null,
+      "version": "0.1.0.0"
+    },
+    {
+      "cabal_sha256": null,
+      "package": "Cabal",
+      "revision": null,
+      "source": "local",
+      "src_sha256": null,
+      "version": "3.9.0.0"
+    },
+    {
+      "cabal_sha256": null,
+      "package": "Cabal-syntax",
+      "revision": null,
+      "source": "local",
+      "src_sha256": null,
+      "version": "3.9.0.0"
+    }
+  ]
+}


=====================================
hadrian/bootstrap/plan-bootstrap-9_4_1.json
=====================================
@@ -1 +1,270 @@
-{"dependencies":[{"cabal_sha256":"804e2574bc7e32d08cbab91e47ee6287b4df7d50851d73f9e778f94a9a7814c7","revision":1,"src_sha256":"6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa","flags":["-optimised-mixer"],"package":"splitmix","source":"hackage","version":"0.1.0.4"},{"cabal_sha256":"dea1f11e5569332dc6c8efaad1cb301016a5587b6754943a49f9de08ae0e56d9","revision":0,"src_sha256":"3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76","flags":[],"package":"random","source":"hackage","version":"1.2.1.1"},{"cabal_sha256":"4ce29211223d5e6620ebceba34a3ca9ccf1c10c0cf387d48aea45599222ee5aa","revision":0,"src_sha256":"d87b6c85696b601175274361fa62217894401e401e150c3c5d4013ac53cd36f3","flags":["-old-random","+templatehaskell"],"package":"QuickCheck","source":"hackage","version":"2.14.2"},{"cabal_sha256":"a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c","revision":0,"src_sha256":"845ce5db4c98cefd517323e005f87effceff886987305e421c4ef616dc0505d1","flags":["-llvm"],"package":"clock","source":"hackage","version":"0.8.3"},{"cabal_sha256":"3ac58d7341976173d1052e7b2837d119212d9afcf911735667c7f1ab67aec25f","revision":0,"src_sha256":"e571a9ec1d8865f0fbb0e0ba1eb575f783b0365c80db19b54a93600bae43b03c","flags":[],"package":"extra","source":"hackage","version":"1.7.12"},{"cabal_sha256":"372c1733d83b90045eb29da9f010fed79bfef8771ce65eb126a1d83ecc54a9a2","revision":0,"src_sha256":"cc445d439ea2f65cac7604d3578aa2c3a62e5a91dc989f4ce5b3390db9e59636","flags":[],"package":"filepattern","source":"hackage","version":"0.1.3"},{"cabal_sha256":"50b2f002c68fe67730ee7a3cd8607486197dd99b084255005ad51ecd6970a41b","revision":0,"src_sha256":"e1b305c280e66ad827edeaedd6933b9fc4174f626882877eab2a08344e665e87","flags":["+containers","+integer-gmp","-random-initial-seed"],"package":"hashable","source":"hackage","version":"1.4.1.0"},{"cabal_sha256":"66b19fcd813b0e4db3e0bac541bd46606c3b13d3d081d9f9666f4be0f5ff14b8","revision":0,"src_sha256":"89329df8b95ae99ef272e41e7a2d0fe2f1bb7eacfcc34bc01664414b33067cfd","flags":[],"package":"heaps","source":"hackage","version":"0.4"},{"cabal_sha256":"f75cb4fa53c88c65794becdd48eb0d3b2b8abd89a3d5c19e87af91f5225c15e4","revision":0,"src_sha256":"e28dd65bee8083b17210134e22e01c6349dc33c3b7bd17705973cd014e9f20ac","flags":[],"package":"js-dgtable","source":"hackage","version":"0.5.2"},{"cabal_sha256":"4c1c447a9a2fba0adba6d30678302a30c32b9dfde9e7aa9e9156483e1545096d","revision":0,"src_sha256":"1ba2f2a6b8d85da76c41f526c98903cbb107f8642e506c072c1e7e3c20fe5e7a","flags":[],"package":"js-flot","source":"hackage","version":"0.8.3"},{"cabal_sha256":"59ab6c79159549ef94b584abce8e6d3b336014c2cce1337b59a8f637e2856df5","revision":0,"src_sha256":"e0e0681f0da1130ede4e03a051630ea439c458cb97216cdb01771ebdbe44069b","flags":[],"package":"js-jquery","source":"hackage","version":"3.3.1"},{"cabal_sha256":"89b88a3e08493b7727fa4089b0692bfbdf7e1e666ef54635f458644eb8358764","revision":0,"src_sha256":"5b2d6dc2812eb2f6a115f05fcbe3e723d3aeff7894b012c617e075130581add5","flags":[],"package":"primitive","source":"hackage","version":"0.7.4.0"},{"cabal_sha256":"db11042bb0356c0adea277d0794743829125b4c99455af6af2bd5f7bd5e88a39","revision":1,"src_sha256":"1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2","flags":["-debug"],"package":"unordered-containers","source":"hackage","version":"0.2.19.1"},{"cabal_sha256":"79416292186feeaf1f60e49ac5a1ffae9bf1b120e040a74bf0e81ca7f1d31d3f","revision":0,"src_sha256":"ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a","flags":[],"package":"utf8-string","source":"hackage","version":"1.0.2"},{"cabal_sha256":"ca49ff48ad82cdea18824a6fa7bd15f62ded882988316bd724fcc97fa5031b6a","revision":0,"src_sha256":"7d9db837bfd67acaaabdb3cea29acc15559ede82dd9f75d438589268031cd542","flags":["-cloud","-embed-files","-portable"],"package":"shake","source":"hackage","version":"0.19.6"},{"cabal_sha256":null,"revision":null,"src_sha256":null,"flags":["+selftest","+threaded"],"package":"hadrian","source":"local","version":"0.1.0.0"}],"builtin":[{"package":"rts","version":"1.0.2"},{"package":"ghc-prim","version":"0.9.0"},{"package":"ghc-bignum","version":"1.3"},{"package":"base","version":"4.17.0.0"},{"package":"array","version":"0.5.4.0"},{"package":"deepseq","version":"1.4.8.0"},{"package":"ghc-boot-th","version":"9.4.1"},{"package":"pretty","version":"1.1.3.6"},{"package":"template-haskell","version":"2.19.0.0"},{"package":"bytestring","version":"0.11.3.1"},{"package":"containers","version":"0.6.6"},{"package":"binary","version":"0.8.9.1"},{"package":"filepath","version":"1.4.2.2"},{"package":"time","version":"1.12.2"},{"package":"unix","version":"2.7.3"},{"package":"directory","version":"1.3.7.1"},{"package":"transformers","version":"0.5.6.2"},{"package":"mtl","version":"2.2.2"},{"package":"text","version":"2.0.1"},{"package":"parsec","version":"3.1.15.0"},{"package":"Cabal-syntax","version":"3.8.1.0"},{"package":"process","version":"1.6.15.0"},{"package":"Cabal","version":"3.8.1.0"}]}
\ No newline at end of file
+{
+  "builtin": [
+    {
+      "package": "rts",
+      "version": "1.0.2"
+    },
+    {
+      "package": "ghc-prim",
+      "version": "0.9.0"
+    },
+    {
+      "package": "ghc-bignum",
+      "version": "1.3"
+    },
+    {
+      "package": "base",
+      "version": "4.17.0.0"
+    },
+    {
+      "package": "array",
+      "version": "0.5.4.0"
+    },
+    {
+      "package": "deepseq",
+      "version": "1.4.8.0"
+    },
+    {
+      "package": "ghc-boot-th",
+      "version": "9.4.1"
+    },
+    {
+      "package": "pretty",
+      "version": "1.1.3.6"
+    },
+    {
+      "package": "template-haskell",
+      "version": "2.19.0.0"
+    },
+    {
+      "package": "bytestring",
+      "version": "0.11.3.1"
+    },
+    {
+      "package": "containers",
+      "version": "0.6.6"
+    },
+    {
+      "package": "binary",
+      "version": "0.8.9.1"
+    },
+    {
+      "package": "filepath",
+      "version": "1.4.2.2"
+    },
+    {
+      "package": "time",
+      "version": "1.12.2"
+    },
+    {
+      "package": "unix",
+      "version": "2.7.3"
+    },
+    {
+      "package": "directory",
+      "version": "1.3.7.1"
+    },
+    {
+      "package": "transformers",
+      "version": "0.5.6.2"
+    },
+    {
+      "package": "mtl",
+      "version": "2.2.2"
+    },
+    {
+      "package": "text",
+      "version": "2.0.1"
+    },
+    {
+      "package": "parsec",
+      "version": "3.1.15.0"
+    },
+    {
+      "package": "process",
+      "version": "1.6.15.0"
+    }
+  ],
+  "dependencies": [
+    {
+      "cabal_sha256": "804e2574bc7e32d08cbab91e47ee6287b4df7d50851d73f9e778f94a9a7814c7",
+      "flags": [
+        "-optimised-mixer"
+      ],
+      "package": "splitmix",
+      "revision": 1,
+      "source": "hackage",
+      "src_sha256": "6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa",
+      "version": "0.1.0.4"
+    },
+    {
+      "cabal_sha256": "dea1f11e5569332dc6c8efaad1cb301016a5587b6754943a49f9de08ae0e56d9",
+      "flags": [],
+      "package": "random",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76",
+      "version": "1.2.1.1"
+    },
+    {
+      "cabal_sha256": "4ce29211223d5e6620ebceba34a3ca9ccf1c10c0cf387d48aea45599222ee5aa",
+      "flags": [
+        "-old-random",
+        "+templatehaskell"
+      ],
+      "package": "QuickCheck",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "d87b6c85696b601175274361fa62217894401e401e150c3c5d4013ac53cd36f3",
+      "version": "2.14.2"
+    },
+    {
+      "cabal_sha256": "a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c",
+      "flags": [
+        "-llvm"
+      ],
+      "package": "clock",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "845ce5db4c98cefd517323e005f87effceff886987305e421c4ef616dc0505d1",
+      "version": "0.8.3"
+    },
+    {
+      "cabal_sha256": "3ac58d7341976173d1052e7b2837d119212d9afcf911735667c7f1ab67aec25f",
+      "flags": [],
+      "package": "extra",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "e571a9ec1d8865f0fbb0e0ba1eb575f783b0365c80db19b54a93600bae43b03c",
+      "version": "1.7.12"
+    },
+    {
+      "cabal_sha256": "372c1733d83b90045eb29da9f010fed79bfef8771ce65eb126a1d83ecc54a9a2",
+      "flags": [],
+      "package": "filepattern",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "cc445d439ea2f65cac7604d3578aa2c3a62e5a91dc989f4ce5b3390db9e59636",
+      "version": "0.1.3"
+    },
+    {
+      "cabal_sha256": "50b2f002c68fe67730ee7a3cd8607486197dd99b084255005ad51ecd6970a41b",
+      "flags": [
+        "+containers",
+        "+integer-gmp",
+        "-random-initial-seed"
+      ],
+      "package": "hashable",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "e1b305c280e66ad827edeaedd6933b9fc4174f626882877eab2a08344e665e87",
+      "version": "1.4.1.0"
+    },
+    {
+      "cabal_sha256": "66b19fcd813b0e4db3e0bac541bd46606c3b13d3d081d9f9666f4be0f5ff14b8",
+      "flags": [],
+      "package": "heaps",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "89329df8b95ae99ef272e41e7a2d0fe2f1bb7eacfcc34bc01664414b33067cfd",
+      "version": "0.4"
+    },
+    {
+      "cabal_sha256": "f75cb4fa53c88c65794becdd48eb0d3b2b8abd89a3d5c19e87af91f5225c15e4",
+      "flags": [],
+      "package": "js-dgtable",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "e28dd65bee8083b17210134e22e01c6349dc33c3b7bd17705973cd014e9f20ac",
+      "version": "0.5.2"
+    },
+    {
+      "cabal_sha256": "4c1c447a9a2fba0adba6d30678302a30c32b9dfde9e7aa9e9156483e1545096d",
+      "flags": [],
+      "package": "js-flot",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "1ba2f2a6b8d85da76c41f526c98903cbb107f8642e506c072c1e7e3c20fe5e7a",
+      "version": "0.8.3"
+    },
+    {
+      "cabal_sha256": "59ab6c79159549ef94b584abce8e6d3b336014c2cce1337b59a8f637e2856df5",
+      "flags": [],
+      "package": "js-jquery",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "e0e0681f0da1130ede4e03a051630ea439c458cb97216cdb01771ebdbe44069b",
+      "version": "3.3.1"
+    },
+    {
+      "cabal_sha256": "89b88a3e08493b7727fa4089b0692bfbdf7e1e666ef54635f458644eb8358764",
+      "flags": [],
+      "package": "primitive",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "5b2d6dc2812eb2f6a115f05fcbe3e723d3aeff7894b012c617e075130581add5",
+      "version": "0.7.4.0"
+    },
+    {
+      "cabal_sha256": "db11042bb0356c0adea277d0794743829125b4c99455af6af2bd5f7bd5e88a39",
+      "flags": [
+        "-debug"
+      ],
+      "package": "unordered-containers",
+      "revision": 1,
+      "source": "hackage",
+      "src_sha256": "1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2",
+      "version": "0.2.19.1"
+    },
+    {
+      "cabal_sha256": "79416292186feeaf1f60e49ac5a1ffae9bf1b120e040a74bf0e81ca7f1d31d3f",
+      "flags": [],
+      "package": "utf8-string",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a",
+      "version": "1.0.2"
+    },
+    {
+      "cabal_sha256": "ca49ff48ad82cdea18824a6fa7bd15f62ded882988316bd724fcc97fa5031b6a",
+      "flags": [
+        "-cloud",
+        "-embed-files",
+        "-portable"
+      ],
+      "package": "shake",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "7d9db837bfd67acaaabdb3cea29acc15559ede82dd9f75d438589268031cd542",
+      "version": "0.19.6"
+    },
+    {
+      "cabal_sha256": null,
+      "flags": [
+        "+selftest",
+        "+threaded"
+      ],
+      "package": "hadrian",
+      "revision": null,
+      "source": "local",
+      "src_sha256": null,
+      "version": "0.1.0.0"
+    },
+    {
+      "cabal_sha256": null,
+      "package": "Cabal",
+      "revision": null,
+      "source": "local",
+      "src_sha256": null,
+      "version": "3.9.0.0"
+    },
+    {
+      "cabal_sha256": null,
+      "package": "Cabal-syntax",
+      "revision": null,
+      "source": "local",
+      "src_sha256": null,
+      "version": "3.9.0.0"
+    }
+  ]
+}


=====================================
hadrian/bootstrap/plan-bootstrap-9_4_2.json
=====================================
@@ -1 +1,270 @@
-{"dependencies":[{"cabal_sha256":"804e2574bc7e32d08cbab91e47ee6287b4df7d50851d73f9e778f94a9a7814c7","revision":1,"src_sha256":"6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa","flags":["-optimised-mixer"],"package":"splitmix","source":"hackage","version":"0.1.0.4"},{"cabal_sha256":"dea1f11e5569332dc6c8efaad1cb301016a5587b6754943a49f9de08ae0e56d9","revision":0,"src_sha256":"3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76","flags":[],"package":"random","source":"hackage","version":"1.2.1.1"},{"cabal_sha256":"4ce29211223d5e6620ebceba34a3ca9ccf1c10c0cf387d48aea45599222ee5aa","revision":0,"src_sha256":"d87b6c85696b601175274361fa62217894401e401e150c3c5d4013ac53cd36f3","flags":["-old-random","+templatehaskell"],"package":"QuickCheck","source":"hackage","version":"2.14.2"},{"cabal_sha256":"a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c","revision":0,"src_sha256":"845ce5db4c98cefd517323e005f87effceff886987305e421c4ef616dc0505d1","flags":["-llvm"],"package":"clock","source":"hackage","version":"0.8.3"},{"cabal_sha256":"3ac58d7341976173d1052e7b2837d119212d9afcf911735667c7f1ab67aec25f","revision":0,"src_sha256":"e571a9ec1d8865f0fbb0e0ba1eb575f783b0365c80db19b54a93600bae43b03c","flags":[],"package":"extra","source":"hackage","version":"1.7.12"},{"cabal_sha256":"372c1733d83b90045eb29da9f010fed79bfef8771ce65eb126a1d83ecc54a9a2","revision":0,"src_sha256":"cc445d439ea2f65cac7604d3578aa2c3a62e5a91dc989f4ce5b3390db9e59636","flags":[],"package":"filepattern","source":"hackage","version":"0.1.3"},{"cabal_sha256":"50b2f002c68fe67730ee7a3cd8607486197dd99b084255005ad51ecd6970a41b","revision":0,"src_sha256":"e1b305c280e66ad827edeaedd6933b9fc4174f626882877eab2a08344e665e87","flags":["+containers","+integer-gmp","-random-initial-seed"],"package":"hashable","source":"hackage","version":"1.4.1.0"},{"cabal_sha256":"66b19fcd813b0e4db3e0bac541bd46606c3b13d3d081d9f9666f4be0f5ff14b8","revision":0,"src_sha256":"89329df8b95ae99ef272e41e7a2d0fe2f1bb7eacfcc34bc01664414b33067cfd","flags":[],"package":"heaps","source":"hackage","version":"0.4"},{"cabal_sha256":"f75cb4fa53c88c65794becdd48eb0d3b2b8abd89a3d5c19e87af91f5225c15e4","revision":0,"src_sha256":"e28dd65bee8083b17210134e22e01c6349dc33c3b7bd17705973cd014e9f20ac","flags":[],"package":"js-dgtable","source":"hackage","version":"0.5.2"},{"cabal_sha256":"4c1c447a9a2fba0adba6d30678302a30c32b9dfde9e7aa9e9156483e1545096d","revision":0,"src_sha256":"1ba2f2a6b8d85da76c41f526c98903cbb107f8642e506c072c1e7e3c20fe5e7a","flags":[],"package":"js-flot","source":"hackage","version":"0.8.3"},{"cabal_sha256":"59ab6c79159549ef94b584abce8e6d3b336014c2cce1337b59a8f637e2856df5","revision":0,"src_sha256":"e0e0681f0da1130ede4e03a051630ea439c458cb97216cdb01771ebdbe44069b","flags":[],"package":"js-jquery","source":"hackage","version":"3.3.1"},{"cabal_sha256":"89b88a3e08493b7727fa4089b0692bfbdf7e1e666ef54635f458644eb8358764","revision":0,"src_sha256":"5b2d6dc2812eb2f6a115f05fcbe3e723d3aeff7894b012c617e075130581add5","flags":[],"package":"primitive","source":"hackage","version":"0.7.4.0"},{"cabal_sha256":"db11042bb0356c0adea277d0794743829125b4c99455af6af2bd5f7bd5e88a39","revision":1,"src_sha256":"1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2","flags":["-debug"],"package":"unordered-containers","source":"hackage","version":"0.2.19.1"},{"cabal_sha256":"79416292186feeaf1f60e49ac5a1ffae9bf1b120e040a74bf0e81ca7f1d31d3f","revision":0,"src_sha256":"ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a","flags":[],"package":"utf8-string","source":"hackage","version":"1.0.2"},{"cabal_sha256":"ca49ff48ad82cdea18824a6fa7bd15f62ded882988316bd724fcc97fa5031b6a","revision":0,"src_sha256":"7d9db837bfd67acaaabdb3cea29acc15559ede82dd9f75d438589268031cd542","flags":["-cloud","-embed-files","-portable"],"package":"shake","source":"hackage","version":"0.19.6"},{"cabal_sha256":null,"revision":null,"src_sha256":null,"flags":["+selftest","+threaded"],"package":"hadrian","source":"local","version":"0.1.0.0"}],"builtin":[{"package":"rts","version":"1.0.2"},{"package":"ghc-prim","version":"0.9.0"},{"package":"ghc-bignum","version":"1.3"},{"package":"base","version":"4.17.0.0"},{"package":"array","version":"0.5.4.0"},{"package":"deepseq","version":"1.4.8.0"},{"package":"ghc-boot-th","version":"9.4.2"},{"package":"pretty","version":"1.1.3.6"},{"package":"template-haskell","version":"2.19.0.0"},{"package":"bytestring","version":"0.11.3.1"},{"package":"containers","version":"0.6.6"},{"package":"binary","version":"0.8.9.1"},{"package":"filepath","version":"1.4.2.2"},{"package":"time","version":"1.12.2"},{"package":"unix","version":"2.7.3"},{"package":"directory","version":"1.3.7.1"},{"package":"transformers","version":"0.5.6.2"},{"package":"mtl","version":"2.2.2"},{"package":"text","version":"2.0.1"},{"package":"parsec","version":"3.1.15.0"},{"package":"Cabal-syntax","version":"3.8.1.0"},{"package":"process","version":"1.6.15.0"},{"package":"Cabal","version":"3.8.1.0"}]}
\ No newline at end of file
+{
+  "builtin": [
+    {
+      "package": "rts",
+      "version": "1.0.2"
+    },
+    {
+      "package": "ghc-prim",
+      "version": "0.9.0"
+    },
+    {
+      "package": "ghc-bignum",
+      "version": "1.3"
+    },
+    {
+      "package": "base",
+      "version": "4.17.0.0"
+    },
+    {
+      "package": "array",
+      "version": "0.5.4.0"
+    },
+    {
+      "package": "deepseq",
+      "version": "1.4.8.0"
+    },
+    {
+      "package": "ghc-boot-th",
+      "version": "9.4.2"
+    },
+    {
+      "package": "pretty",
+      "version": "1.1.3.6"
+    },
+    {
+      "package": "template-haskell",
+      "version": "2.19.0.0"
+    },
+    {
+      "package": "bytestring",
+      "version": "0.11.3.1"
+    },
+    {
+      "package": "containers",
+      "version": "0.6.6"
+    },
+    {
+      "package": "binary",
+      "version": "0.8.9.1"
+    },
+    {
+      "package": "filepath",
+      "version": "1.4.2.2"
+    },
+    {
+      "package": "time",
+      "version": "1.12.2"
+    },
+    {
+      "package": "unix",
+      "version": "2.7.3"
+    },
+    {
+      "package": "directory",
+      "version": "1.3.7.1"
+    },
+    {
+      "package": "transformers",
+      "version": "0.5.6.2"
+    },
+    {
+      "package": "mtl",
+      "version": "2.2.2"
+    },
+    {
+      "package": "text",
+      "version": "2.0.1"
+    },
+    {
+      "package": "parsec",
+      "version": "3.1.15.0"
+    },
+    {
+      "package": "process",
+      "version": "1.6.15.0"
+    }
+  ],
+  "dependencies": [
+    {
+      "cabal_sha256": "804e2574bc7e32d08cbab91e47ee6287b4df7d50851d73f9e778f94a9a7814c7",
+      "flags": [
+        "-optimised-mixer"
+      ],
+      "package": "splitmix",
+      "revision": 1,
+      "source": "hackage",
+      "src_sha256": "6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa",
+      "version": "0.1.0.4"
+    },
+    {
+      "cabal_sha256": "dea1f11e5569332dc6c8efaad1cb301016a5587b6754943a49f9de08ae0e56d9",
+      "flags": [],
+      "package": "random",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76",
+      "version": "1.2.1.1"
+    },
+    {
+      "cabal_sha256": "4ce29211223d5e6620ebceba34a3ca9ccf1c10c0cf387d48aea45599222ee5aa",
+      "flags": [
+        "-old-random",
+        "+templatehaskell"
+      ],
+      "package": "QuickCheck",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "d87b6c85696b601175274361fa62217894401e401e150c3c5d4013ac53cd36f3",
+      "version": "2.14.2"
+    },
+    {
+      "cabal_sha256": "a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c",
+      "flags": [
+        "-llvm"
+      ],
+      "package": "clock",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "845ce5db4c98cefd517323e005f87effceff886987305e421c4ef616dc0505d1",
+      "version": "0.8.3"
+    },
+    {
+      "cabal_sha256": "3ac58d7341976173d1052e7b2837d119212d9afcf911735667c7f1ab67aec25f",
+      "flags": [],
+      "package": "extra",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "e571a9ec1d8865f0fbb0e0ba1eb575f783b0365c80db19b54a93600bae43b03c",
+      "version": "1.7.12"
+    },
+    {
+      "cabal_sha256": "372c1733d83b90045eb29da9f010fed79bfef8771ce65eb126a1d83ecc54a9a2",
+      "flags": [],
+      "package": "filepattern",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "cc445d439ea2f65cac7604d3578aa2c3a62e5a91dc989f4ce5b3390db9e59636",
+      "version": "0.1.3"
+    },
+    {
+      "cabal_sha256": "50b2f002c68fe67730ee7a3cd8607486197dd99b084255005ad51ecd6970a41b",
+      "flags": [
+        "+containers",
+        "+integer-gmp",
+        "-random-initial-seed"
+      ],
+      "package": "hashable",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "e1b305c280e66ad827edeaedd6933b9fc4174f626882877eab2a08344e665e87",
+      "version": "1.4.1.0"
+    },
+    {
+      "cabal_sha256": "66b19fcd813b0e4db3e0bac541bd46606c3b13d3d081d9f9666f4be0f5ff14b8",
+      "flags": [],
+      "package": "heaps",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "89329df8b95ae99ef272e41e7a2d0fe2f1bb7eacfcc34bc01664414b33067cfd",
+      "version": "0.4"
+    },
+    {
+      "cabal_sha256": "f75cb4fa53c88c65794becdd48eb0d3b2b8abd89a3d5c19e87af91f5225c15e4",
+      "flags": [],
+      "package": "js-dgtable",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "e28dd65bee8083b17210134e22e01c6349dc33c3b7bd17705973cd014e9f20ac",
+      "version": "0.5.2"
+    },
+    {
+      "cabal_sha256": "4c1c447a9a2fba0adba6d30678302a30c32b9dfde9e7aa9e9156483e1545096d",
+      "flags": [],
+      "package": "js-flot",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "1ba2f2a6b8d85da76c41f526c98903cbb107f8642e506c072c1e7e3c20fe5e7a",
+      "version": "0.8.3"
+    },
+    {
+      "cabal_sha256": "59ab6c79159549ef94b584abce8e6d3b336014c2cce1337b59a8f637e2856df5",
+      "flags": [],
+      "package": "js-jquery",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "e0e0681f0da1130ede4e03a051630ea439c458cb97216cdb01771ebdbe44069b",
+      "version": "3.3.1"
+    },
+    {
+      "cabal_sha256": "89b88a3e08493b7727fa4089b0692bfbdf7e1e666ef54635f458644eb8358764",
+      "flags": [],
+      "package": "primitive",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "5b2d6dc2812eb2f6a115f05fcbe3e723d3aeff7894b012c617e075130581add5",
+      "version": "0.7.4.0"
+    },
+    {
+      "cabal_sha256": "db11042bb0356c0adea277d0794743829125b4c99455af6af2bd5f7bd5e88a39",
+      "flags": [
+        "-debug"
+      ],
+      "package": "unordered-containers",
+      "revision": 1,
+      "source": "hackage",
+      "src_sha256": "1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2",
+      "version": "0.2.19.1"
+    },
+    {
+      "cabal_sha256": "79416292186feeaf1f60e49ac5a1ffae9bf1b120e040a74bf0e81ca7f1d31d3f",
+      "flags": [],
+      "package": "utf8-string",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a",
+      "version": "1.0.2"
+    },
+    {
+      "cabal_sha256": "ca49ff48ad82cdea18824a6fa7bd15f62ded882988316bd724fcc97fa5031b6a",
+      "flags": [
+        "-cloud",
+        "-embed-files",
+        "-portable"
+      ],
+      "package": "shake",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "7d9db837bfd67acaaabdb3cea29acc15559ede82dd9f75d438589268031cd542",
+      "version": "0.19.6"
+    },
+    {
+      "cabal_sha256": null,
+      "flags": [
+        "+selftest",
+        "+threaded"
+      ],
+      "package": "hadrian",
+      "revision": null,
+      "source": "local",
+      "src_sha256": null,
+      "version": "0.1.0.0"
+    },
+    {
+      "cabal_sha256": null,
+      "package": "Cabal",
+      "revision": null,
+      "source": "local",
+      "src_sha256": null,
+      "version": "3.9.0.0"
+    },
+    {
+      "cabal_sha256": null,
+      "package": "Cabal-syntax",
+      "revision": null,
+      "source": "local",
+      "src_sha256": null,
+      "version": "3.9.0.0"
+    }
+  ]
+}


=====================================
hadrian/bootstrap/plan-bootstrap-9_4_3.json
=====================================
@@ -1 +1,270 @@
-{"dependencies":[{"cabal_sha256":"804e2574bc7e32d08cbab91e47ee6287b4df7d50851d73f9e778f94a9a7814c7","revision":1,"src_sha256":"6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa","flags":["-optimised-mixer"],"package":"splitmix","source":"hackage","version":"0.1.0.4"},{"cabal_sha256":"dea1f11e5569332dc6c8efaad1cb301016a5587b6754943a49f9de08ae0e56d9","revision":0,"src_sha256":"3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76","flags":[],"package":"random","source":"hackage","version":"1.2.1.1"},{"cabal_sha256":"4ce29211223d5e6620ebceba34a3ca9ccf1c10c0cf387d48aea45599222ee5aa","revision":0,"src_sha256":"d87b6c85696b601175274361fa62217894401e401e150c3c5d4013ac53cd36f3","flags":["-old-random","+templatehaskell"],"package":"QuickCheck","source":"hackage","version":"2.14.2"},{"cabal_sha256":"a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c","revision":0,"src_sha256":"845ce5db4c98cefd517323e005f87effceff886987305e421c4ef616dc0505d1","flags":["-llvm"],"package":"clock","source":"hackage","version":"0.8.3"},{"cabal_sha256":"3ac58d7341976173d1052e7b2837d119212d9afcf911735667c7f1ab67aec25f","revision":0,"src_sha256":"e571a9ec1d8865f0fbb0e0ba1eb575f783b0365c80db19b54a93600bae43b03c","flags":[],"package":"extra","source":"hackage","version":"1.7.12"},{"cabal_sha256":"372c1733d83b90045eb29da9f010fed79bfef8771ce65eb126a1d83ecc54a9a2","revision":0,"src_sha256":"cc445d439ea2f65cac7604d3578aa2c3a62e5a91dc989f4ce5b3390db9e59636","flags":[],"package":"filepattern","source":"hackage","version":"0.1.3"},{"cabal_sha256":"50b2f002c68fe67730ee7a3cd8607486197dd99b084255005ad51ecd6970a41b","revision":0,"src_sha256":"e1b305c280e66ad827edeaedd6933b9fc4174f626882877eab2a08344e665e87","flags":["+containers","+integer-gmp","-random-initial-seed"],"package":"hashable","source":"hackage","version":"1.4.1.0"},{"cabal_sha256":"66b19fcd813b0e4db3e0bac541bd46606c3b13d3d081d9f9666f4be0f5ff14b8","revision":0,"src_sha256":"89329df8b95ae99ef272e41e7a2d0fe2f1bb7eacfcc34bc01664414b33067cfd","flags":[],"package":"heaps","source":"hackage","version":"0.4"},{"cabal_sha256":"f75cb4fa53c88c65794becdd48eb0d3b2b8abd89a3d5c19e87af91f5225c15e4","revision":0,"src_sha256":"e28dd65bee8083b17210134e22e01c6349dc33c3b7bd17705973cd014e9f20ac","flags":[],"package":"js-dgtable","source":"hackage","version":"0.5.2"},{"cabal_sha256":"4c1c447a9a2fba0adba6d30678302a30c32b9dfde9e7aa9e9156483e1545096d","revision":0,"src_sha256":"1ba2f2a6b8d85da76c41f526c98903cbb107f8642e506c072c1e7e3c20fe5e7a","flags":[],"package":"js-flot","source":"hackage","version":"0.8.3"},{"cabal_sha256":"59ab6c79159549ef94b584abce8e6d3b336014c2cce1337b59a8f637e2856df5","revision":0,"src_sha256":"e0e0681f0da1130ede4e03a051630ea439c458cb97216cdb01771ebdbe44069b","flags":[],"package":"js-jquery","source":"hackage","version":"3.3.1"},{"cabal_sha256":"89b88a3e08493b7727fa4089b0692bfbdf7e1e666ef54635f458644eb8358764","revision":0,"src_sha256":"5b2d6dc2812eb2f6a115f05fcbe3e723d3aeff7894b012c617e075130581add5","flags":[],"package":"primitive","source":"hackage","version":"0.7.4.0"},{"cabal_sha256":"db11042bb0356c0adea277d0794743829125b4c99455af6af2bd5f7bd5e88a39","revision":1,"src_sha256":"1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2","flags":["-debug"],"package":"unordered-containers","source":"hackage","version":"0.2.19.1"},{"cabal_sha256":"79416292186feeaf1f60e49ac5a1ffae9bf1b120e040a74bf0e81ca7f1d31d3f","revision":0,"src_sha256":"ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a","flags":[],"package":"utf8-string","source":"hackage","version":"1.0.2"},{"cabal_sha256":"ca49ff48ad82cdea18824a6fa7bd15f62ded882988316bd724fcc97fa5031b6a","revision":0,"src_sha256":"7d9db837bfd67acaaabdb3cea29acc15559ede82dd9f75d438589268031cd542","flags":["-cloud","-embed-files","-portable"],"package":"shake","source":"hackage","version":"0.19.6"},{"cabal_sha256":null,"revision":null,"src_sha256":null,"flags":["+selftest","+threaded"],"package":"hadrian","source":"local","version":"0.1.0.0"}],"builtin":[{"package":"rts","version":"1.0.2"},{"package":"ghc-prim","version":"0.9.0"},{"package":"ghc-bignum","version":"1.3"},{"package":"base","version":"4.17.0.0"},{"package":"array","version":"0.5.4.0"},{"package":"deepseq","version":"1.4.8.0"},{"package":"ghc-boot-th","version":"9.4.3"},{"package":"pretty","version":"1.1.3.6"},{"package":"template-haskell","version":"2.19.0.0"},{"package":"bytestring","version":"0.11.3.1"},{"package":"containers","version":"0.6.6"},{"package":"binary","version":"0.8.9.1"},{"package":"filepath","version":"1.4.2.2"},{"package":"time","version":"1.12.2"},{"package":"unix","version":"2.7.3"},{"package":"directory","version":"1.3.7.1"},{"package":"transformers","version":"0.5.6.2"},{"package":"mtl","version":"2.2.2"},{"package":"text","version":"2.0.1"},{"package":"parsec","version":"3.1.15.0"},{"package":"Cabal-syntax","version":"3.8.1.0"},{"package":"process","version":"1.6.16.0"},{"package":"Cabal","version":"3.8.1.0"}]}
\ No newline at end of file
+{
+  "builtin": [
+    {
+      "package": "rts",
+      "version": "1.0.2"
+    },
+    {
+      "package": "ghc-prim",
+      "version": "0.9.0"
+    },
+    {
+      "package": "ghc-bignum",
+      "version": "1.3"
+    },
+    {
+      "package": "base",
+      "version": "4.17.0.0"
+    },
+    {
+      "package": "array",
+      "version": "0.5.4.0"
+    },
+    {
+      "package": "deepseq",
+      "version": "1.4.8.0"
+    },
+    {
+      "package": "ghc-boot-th",
+      "version": "9.4.3"
+    },
+    {
+      "package": "pretty",
+      "version": "1.1.3.6"
+    },
+    {
+      "package": "template-haskell",
+      "version": "2.19.0.0"
+    },
+    {
+      "package": "bytestring",
+      "version": "0.11.3.1"
+    },
+    {
+      "package": "containers",
+      "version": "0.6.6"
+    },
+    {
+      "package": "binary",
+      "version": "0.8.9.1"
+    },
+    {
+      "package": "filepath",
+      "version": "1.4.2.2"
+    },
+    {
+      "package": "time",
+      "version": "1.12.2"
+    },
+    {
+      "package": "unix",
+      "version": "2.7.3"
+    },
+    {
+      "package": "directory",
+      "version": "1.3.7.1"
+    },
+    {
+      "package": "transformers",
+      "version": "0.5.6.2"
+    },
+    {
+      "package": "mtl",
+      "version": "2.2.2"
+    },
+    {
+      "package": "text",
+      "version": "2.0.1"
+    },
+    {
+      "package": "parsec",
+      "version": "3.1.15.0"
+    },
+    {
+      "package": "process",
+      "version": "1.6.16.0"
+    }
+  ],
+  "dependencies": [
+    {
+      "cabal_sha256": "804e2574bc7e32d08cbab91e47ee6287b4df7d50851d73f9e778f94a9a7814c7",
+      "flags": [
+        "-optimised-mixer"
+      ],
+      "package": "splitmix",
+      "revision": 1,
+      "source": "hackage",
+      "src_sha256": "6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa",
+      "version": "0.1.0.4"
+    },
+    {
+      "cabal_sha256": "dea1f11e5569332dc6c8efaad1cb301016a5587b6754943a49f9de08ae0e56d9",
+      "flags": [],
+      "package": "random",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76",
+      "version": "1.2.1.1"
+    },
+    {
+      "cabal_sha256": "4ce29211223d5e6620ebceba34a3ca9ccf1c10c0cf387d48aea45599222ee5aa",
+      "flags": [
+        "-old-random",
+        "+templatehaskell"
+      ],
+      "package": "QuickCheck",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "d87b6c85696b601175274361fa62217894401e401e150c3c5d4013ac53cd36f3",
+      "version": "2.14.2"
+    },
+    {
+      "cabal_sha256": "a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c",
+      "flags": [
+        "-llvm"
+      ],
+      "package": "clock",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "845ce5db4c98cefd517323e005f87effceff886987305e421c4ef616dc0505d1",
+      "version": "0.8.3"
+    },
+    {
+      "cabal_sha256": "3ac58d7341976173d1052e7b2837d119212d9afcf911735667c7f1ab67aec25f",
+      "flags": [],
+      "package": "extra",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "e571a9ec1d8865f0fbb0e0ba1eb575f783b0365c80db19b54a93600bae43b03c",
+      "version": "1.7.12"
+    },
+    {
+      "cabal_sha256": "372c1733d83b90045eb29da9f010fed79bfef8771ce65eb126a1d83ecc54a9a2",
+      "flags": [],
+      "package": "filepattern",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "cc445d439ea2f65cac7604d3578aa2c3a62e5a91dc989f4ce5b3390db9e59636",
+      "version": "0.1.3"
+    },
+    {
+      "cabal_sha256": "50b2f002c68fe67730ee7a3cd8607486197dd99b084255005ad51ecd6970a41b",
+      "flags": [
+        "+containers",
+        "+integer-gmp",
+        "-random-initial-seed"
+      ],
+      "package": "hashable",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "e1b305c280e66ad827edeaedd6933b9fc4174f626882877eab2a08344e665e87",
+      "version": "1.4.1.0"
+    },
+    {
+      "cabal_sha256": "66b19fcd813b0e4db3e0bac541bd46606c3b13d3d081d9f9666f4be0f5ff14b8",
+      "flags": [],
+      "package": "heaps",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "89329df8b95ae99ef272e41e7a2d0fe2f1bb7eacfcc34bc01664414b33067cfd",
+      "version": "0.4"
+    },
+    {
+      "cabal_sha256": "f75cb4fa53c88c65794becdd48eb0d3b2b8abd89a3d5c19e87af91f5225c15e4",
+      "flags": [],
+      "package": "js-dgtable",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "e28dd65bee8083b17210134e22e01c6349dc33c3b7bd17705973cd014e9f20ac",
+      "version": "0.5.2"
+    },
+    {
+      "cabal_sha256": "4c1c447a9a2fba0adba6d30678302a30c32b9dfde9e7aa9e9156483e1545096d",
+      "flags": [],
+      "package": "js-flot",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "1ba2f2a6b8d85da76c41f526c98903cbb107f8642e506c072c1e7e3c20fe5e7a",
+      "version": "0.8.3"
+    },
+    {
+      "cabal_sha256": "59ab6c79159549ef94b584abce8e6d3b336014c2cce1337b59a8f637e2856df5",
+      "flags": [],
+      "package": "js-jquery",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "e0e0681f0da1130ede4e03a051630ea439c458cb97216cdb01771ebdbe44069b",
+      "version": "3.3.1"
+    },
+    {
+      "cabal_sha256": "89b88a3e08493b7727fa4089b0692bfbdf7e1e666ef54635f458644eb8358764",
+      "flags": [],
+      "package": "primitive",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "5b2d6dc2812eb2f6a115f05fcbe3e723d3aeff7894b012c617e075130581add5",
+      "version": "0.7.4.0"
+    },
+    {
+      "cabal_sha256": "db11042bb0356c0adea277d0794743829125b4c99455af6af2bd5f7bd5e88a39",
+      "flags": [
+        "-debug"
+      ],
+      "package": "unordered-containers",
+      "revision": 1,
+      "source": "hackage",
+      "src_sha256": "1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2",
+      "version": "0.2.19.1"
+    },
+    {
+      "cabal_sha256": "79416292186feeaf1f60e49ac5a1ffae9bf1b120e040a74bf0e81ca7f1d31d3f",
+      "flags": [],
+      "package": "utf8-string",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a",
+      "version": "1.0.2"
+    },
+    {
+      "cabal_sha256": "ca49ff48ad82cdea18824a6fa7bd15f62ded882988316bd724fcc97fa5031b6a",
+      "flags": [
+        "-cloud",
+        "-embed-files",
+        "-portable"
+      ],
+      "package": "shake",
+      "revision": 0,
+      "source": "hackage",
+      "src_sha256": "7d9db837bfd67acaaabdb3cea29acc15559ede82dd9f75d438589268031cd542",
+      "version": "0.19.6"
+    },
+    {
+      "cabal_sha256": null,
+      "flags": [
+        "+selftest",
+        "+threaded"
+      ],
+      "package": "hadrian",
+      "revision": null,
+      "source": "local",
+      "src_sha256": null,
+      "version": "0.1.0.0"
+    },
+    {
+      "cabal_sha256": null,
+      "package": "Cabal",
+      "revision": null,
+      "source": "local",
+      "src_sha256": null,
+      "version": "3.9.0.0"
+    },
+    {
+      "cabal_sha256": null,
+      "package": "Cabal-syntax",
+      "revision": null,
+      "source": "local",
+      "src_sha256": null,
+      "version": "3.9.0.0"
+    }
+  ]
+}


=====================================
hadrian/cabal.project
=====================================
@@ -1,4 +1,6 @@
 packages: ./
+-- N.B. This could be removed once Cabal 3.9 is released.
+packages: ../libraries/Cabal/Cabal, ../libraries/Cabal/Cabal-syntax
 
 -- This essentially freezes the build plan for hadrian
 index-state: 2022-11-19T22:13:06Z


=====================================
hadrian/hadrian.cabal
=====================================
@@ -149,7 +149,7 @@ executable hadrian
                        , TypeOperators
     other-extensions:    MultiParamTypeClasses
                        , TypeFamilies
-    build-depends:       Cabal                >= 3.2     && < 3.9
+    build-depends:       Cabal                >= 3.9     && < 3.10
                        , base                 >= 4.11    && < 5
                        , bytestring           >= 0.10    && < 0.12
                        , containers           >= 0.5     && < 0.7


=====================================
hadrian/stack.yaml
=====================================
@@ -2,6 +2,8 @@ resolver: lts-19.8
 
 packages:
 - '.'
+- '../libraries/Cabal/Cabal'
+- '../libraries/Cabal/Cabal-syntax'
 
 nix:
    enable: false


=====================================
rts/configure.ac
=====================================
@@ -62,8 +62,14 @@ dnl ######################################################################
 
 dnl See Note [Undefined symbols in the RTS]
 
+[
+symbolExtraDefs=''
+if [[ $CABAL_FLAG_find_ptr = 1 ]]; then
+    symbolExtraDefs+=' -DFIND_PTR'
+fi
+
 cat $srcdir/external-symbols.list.in \
-    | "$CC" -E -P -traditional -Iinclude - -o - \
+    | "$CC" $symbolExtraDefs -E -P -traditional -Iinclude - -o - \
     | sed '/^$/d' \
     > external-symbols.list \
     || exit 1
@@ -75,14 +81,17 @@ else
     sed 's/^/  -Wl,-u,/' external-symbols.tmp > external-symbols.list
 fi
 rm -f external-symbols.tmp
+]
 
 dnl ######################################################################
 dnl Generate build-info
 dnl ######################################################################
 
+[
 cat $srcdir/rts.buildinfo.in | \
     sed -e 's/^  *//' | \
     "$CC" -E -P -traditional - -o - \
     > rts.buildinfo
 echo "" >> rts.buildinfo
 rm -f external-symbols.list
+]


=====================================
rts/external-symbols.list.in
=====================================
@@ -19,6 +19,10 @@ hs_atomicwrite64
 base_GHCziEventziWindows_processRemoteCompletion_closure
 #endif
 
+#if FIND_PTR
+findPtr
+#endif
+
 base_GHCziTopHandler_runIO_closure
 base_GHCziTopHandler_runNonIO_closure
 ghczmprim_GHCziTupleziPrim_Z0T_closure


=====================================
rts/rts.cabal.in
=====================================
@@ -295,23 +295,6 @@ library
                         stg/Ticky.h
                         stg/Types.h
 
-      -- See Note [Undefined symbols in the RTS]
-      --
-      -- We should handle this symbol with the others in the configure script
-      -- once we are using Cabal containing
-      -- https://github.com/haskell/cabal/pull/8565 /
-      -- 30f8a46008d164b5c4c6ce0b4453eb93eb5ef46c.
-      if flag(leading-underscore)
-        if flag(find-ptr)
-          -- This symbol is useful in gdb, but not referred to anywhere,
-          -- so we need to force it to be included in the binary.
-          ld-options: "-Wl,-u,_findPtr"
-      else
-        if flag(find-ptr)
-          -- This symbol is useful in gdb, but not referred to anywhere,
-          -- so we need to force it to be included in the binary.
-          ld-options: "-Wl,-u,findPtr"
-
       if os(osx)
         ld-options: "-Wl,-search_paths_first"
                     -- See Note [fd_set_overflow]



View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/4c349ee56a0ae1cdc32adc6ac9c4f86a1eb003da...4f9732f53dacc0c7f92e46af115828ead20b604f

-- 
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/4c349ee56a0ae1cdc32adc6ac9c4f86a1eb003da...4f9732f53dacc0c7f92e46af115828ead20b604f
You're receiving this email because of your account on gitlab.haskell.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-commits/attachments/20230120/bf8816a3/attachment-0001.html>


More information about the ghc-commits mailing list