summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorromes <rodrigo.m.mesquita@gmail.com>2023-03-16 11:35:17 +0000
committerMarge Bot <ben+marge-bot@smart-cactus.org>2023-05-04 14:58:14 -0400
commitdb4be3395cb74eb07355339184123d5ded331dc3 (patch)
tree69ccc565d5e4253d74adc44cfbabf39d41061424
parent6689c9c6eba6f538bedfe7a08316d7c5dec8bfae (diff)
downloadhaskell-db4be3395cb74eb07355339184123d5ded331dc3.tar.gz
Add hashes to unit-ids created by hadrian
This commit adds support for computing an inputs hash for packages compiled by hadrian. The result is that ABI incompatible packages should be given different hashes and therefore be distinct in a cabal store. Hashing is enabled by the `--flag`, and is off by default as the hash contains a hash of the source files. We enable it when we produce release builds so that the artifacts we distribute have the right unit ids.
-rw-r--r--hadrian/bindist/Makefile2
-rw-r--r--hadrian/bootstrap/plan-9_2_1.json2
-rw-r--r--hadrian/bootstrap/plan-9_2_2.json2
-rw-r--r--hadrian/bootstrap/plan-9_2_3.json2
-rw-r--r--hadrian/bootstrap/plan-9_2_4.json2
-rw-r--r--hadrian/bootstrap/plan-9_2_5.json2
-rw-r--r--hadrian/bootstrap/plan-9_2_6.json2
-rw-r--r--hadrian/bootstrap/plan-9_2_7.json2
-rw-r--r--hadrian/bootstrap/plan-9_4_1.json2
-rw-r--r--hadrian/bootstrap/plan-9_4_2.json2
-rw-r--r--hadrian/bootstrap/plan-9_4_3.json2
-rw-r--r--hadrian/bootstrap/plan-9_4_4.json2
-rw-r--r--hadrian/bootstrap/plan-9_6_1.json2
-rw-r--r--hadrian/bootstrap/plan-bootstrap-9_2_1.json116
-rw-r--r--hadrian/bootstrap/plan-bootstrap-9_2_2.json21
-rw-r--r--hadrian/bootstrap/plan-bootstrap-9_2_3.json21
-rw-r--r--hadrian/bootstrap/plan-bootstrap-9_2_4.json21
-rw-r--r--hadrian/bootstrap/plan-bootstrap-9_2_5.json21
-rw-r--r--hadrian/bootstrap/plan-bootstrap-9_2_6.json21
-rw-r--r--hadrian/bootstrap/plan-bootstrap-9_2_7.json21
-rw-r--r--hadrian/bootstrap/plan-bootstrap-9_4_1.json21
-rw-r--r--hadrian/bootstrap/plan-bootstrap-9_4_2.json21
-rw-r--r--hadrian/bootstrap/plan-bootstrap-9_4_3.json21
-rw-r--r--hadrian/bootstrap/plan-bootstrap-9_4_4.json21
-rw-r--r--hadrian/bootstrap/plan-bootstrap-9_6_1.json21
-rw-r--r--hadrian/hadrian.cabal3
-rw-r--r--hadrian/src/CommandLine.hs12
-rw-r--r--hadrian/src/Context.hs22
-rw-r--r--hadrian/src/Hadrian/BuildPath.hs21
-rw-r--r--hadrian/src/Hadrian/Builder/Git.hs3
-rw-r--r--hadrian/src/Hadrian/Haskell/Cabal.hs15
-rw-r--r--hadrian/src/Hadrian/Haskell/Cabal/Parse.hs11
-rw-r--r--hadrian/src/Hadrian/Haskell/Hash.hs257
-rw-r--r--hadrian/src/Hadrian/Haskell/Hash.hs-boot8
-rw-r--r--hadrian/src/Hadrian/Package.hs2
-rw-r--r--hadrian/src/Rules.hs2
-rw-r--r--hadrian/src/Rules/BinaryDist.hs3
-rw-r--r--hadrian/src/Rules/CabalReinstall.hs5
-rw-r--r--hadrian/src/Rules/Documentation.hs2
-rw-r--r--hadrian/src/Rules/Generate.hs16
-rw-r--r--hadrian/src/Rules/Library.hs48
-rw-r--r--hadrian/src/Rules/Register.hs40
-rw-r--r--hadrian/src/Settings/Builders/Cabal.hs4
-rw-r--r--hadrian/src/Settings/Builders/Ghc.hs7
-rw-r--r--hadrian/src/Settings/Builders/Haddock.hs4
-rw-r--r--hadrian/src/Settings/Default.hs1
-rw-r--r--testsuite/driver/testlib.py5
-rw-r--r--testsuite/tests/backpack/cabal/bkpcabal02/all.T2
-rw-r--r--testsuite/tests/cabal/t18567/all.T1
-rw-r--r--testsuite/tests/driver/T16318/Makefile2
-rw-r--r--testsuite/tests/driver/T18125/Makefile4
-rw-r--r--testsuite/tests/ghci/scripts/Makefile2
-rw-r--r--testsuite/tests/package/all.T2
-rw-r--r--utils/ghc-pkg/Main.hs3
54 files changed, 740 insertions, 140 deletions
diff --git a/hadrian/bindist/Makefile b/hadrian/bindist/Makefile
index d3ad0e84e6..3f18720253 100644
--- a/hadrian/bindist/Makefile
+++ b/hadrian/bindist/Makefile
@@ -226,7 +226,7 @@ update_package_db: install_bin install_lib
$(INSTALL_DATA) mk/system-cxx-std-lib-1.0.conf "$(DESTDIR)$(ActualLibsDir)/package.conf.d"
@echo "Updating the package DB"
$(foreach p, $(PKG_CONFS),\
- $(call patchpackageconf,$(shell echo $(notdir $p) | sed 's/-\([0-9]*[0-9]\.\)*conf//g'),$(shell echo "$p" | sed 's:\0xxx\0: :g'),$(docdir),$(shell mk/relpath.sh "$(ActualLibsDir)" "$(docdir)"),$(shell echo $(notdir $p) | sed 's/.conf//g')))
+ $(call patchpackageconf,$(shell echo $(notdir $p) | sed 's/-[0-9.]*-[0-9a-zA-Z]*\.conf//g'),$(shell echo "$p" | sed 's:\0xxx\0: :g'),$(docdir),$(shell mk/relpath.sh "$(ActualLibsDir)" "$(docdir)"),$(shell echo $(notdir $p) | sed 's/.conf//g')))
'$(DESTDIR)$(ActualBinsDir)/$(CrossCompilePrefix)ghc-pkg' --global-package-db "$(DESTDIR)$(ActualLibsDir)/package.conf.d" recache
install_mingw:
diff --git a/hadrian/bootstrap/plan-9_2_1.json b/hadrian/bootstrap/plan-9_2_1.json
index b66c38b27a..4f3eeb7f37 100644
--- a/hadrian/bootstrap/plan-9_2_1.json
+++ b/hadrian/bootstrap/plan-9_2_1.json
@@ -1 +1 @@
-{"cabal-version":"3.8.1.0","cabal-lib-version":"3.8.1.0","compiler-id":"ghc-9.2.1","os":"linux","arch":"x86_64","install-plan":[{"type":"pre-existing","id":"Cabal-3.6.0.0","pkg-name":"Cabal","pkg-version":"3.6.0.0","depends":["array-0.5.4.0","base-4.16.0.0","binary-0.8.9.0","bytestring-0.11.1.0","containers-0.6.5.1","deepseq-1.4.6.0","directory-1.3.6.2","filepath-1.4.2.1","mtl-2.2.2","parsec-3.1.14.0","pretty-1.1.3.6","process-1.6.13.2","text-1.2.5.0","time-1.11.1.1","transformers-0.5.6.2","unix-2.7.2.2"]},{"type":"configured","id":"QuickCheck-2.14.2-d206773042205de1060139757d2714b6fc1f3b1ff5294e611a076f708c2c2939","pkg-name":"QuickCheck","pkg-version":"2.14.2","flags":{"old-random":false,"templatehaskell":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4ce29211223d5e6620ebceba34a3ca9ccf1c10c0cf387d48aea45599222ee5aa","pkg-src-sha256":"d87b6c85696b601175274361fa62217894401e401e150c3c5d4013ac53cd36f3","depends":["base-4.16.0.0","containers-0.6.5.1","deepseq-1.4.6.0","random-1.2.1.1-97ce1668cc8855def97f8467b8241effcc343cfb3341c4b9c3dec392ca31a395","splitmix-0.1.0.4-6e4cb959752030596da42aa487811cf8f2f8d97e77e5b86f7c0286b176af5a9e","template-haskell-2.18.0.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"array-0.5.4.0","pkg-name":"array","pkg-version":"0.5.4.0","depends":["base-4.16.0.0"]},{"type":"pre-existing","id":"base-4.16.0.0","pkg-name":"base","pkg-version":"4.16.0.0","depends":["ghc-bignum-1.2","ghc-prim-0.8.0","rts"]},{"type":"pre-existing","id":"binary-0.8.9.0","pkg-name":"binary","pkg-version":"0.8.9.0","depends":["array-0.5.4.0","base-4.16.0.0","bytestring-0.11.1.0","containers-0.6.5.1"]},{"type":"pre-existing","id":"bytestring-0.11.1.0","pkg-name":"bytestring","pkg-version":"0.11.1.0","depends":["base-4.16.0.0","deepseq-1.4.6.0","ghc-bignum-1.2","ghc-prim-0.8.0"]},{"type":"configured","id":"clock-0.8.3-92b3cf3a8d563bc4cec59855d0fe86bab13ee56991b5eb116314b00120c8d023","pkg-name":"clock","pkg-version":"0.8.3","flags":{"llvm":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c","pkg-src-sha256":"845ce5db4c98cefd517323e005f87effceff886987305e421c4ef616dc0505d1","depends":["base-4.16.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"containers-0.6.5.1","pkg-name":"containers","pkg-version":"0.6.5.1","depends":["array-0.5.4.0","base-4.16.0.0","deepseq-1.4.6.0"]},{"type":"configured","id":"data-array-byte-0.1.0.1-39089d1700e8eb79997c0fea24daee60863f08caa05929ff7d545a59d374af7e","pkg-name":"data-array-byte","pkg-version":"0.1.0.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"2ef1bd3511e82ba56f7f23cd793dd2da84338a1e7c2cbea5b151417afe3baada","pkg-src-sha256":"1bb6eca0b3e02d057fe7f4e14c81ef395216f421ab30fdaa1b18017c9c025600","depends":["base-4.16.0.0","deepseq-1.4.6.0","template-haskell-2.18.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"deepseq-1.4.6.0","pkg-name":"deepseq","pkg-version":"1.4.6.0","depends":["array-0.5.4.0","base-4.16.0.0"]},{"type":"pre-existing","id":"directory-1.3.6.2","pkg-name":"directory","pkg-version":"1.3.6.2","depends":["base-4.16.0.0","filepath-1.4.2.1","time-1.11.1.1","unix-2.7.2.2"]},{"type":"configured","id":"extra-1.7.12-4537794a6683eedd21da2fd7dcb19c48d6720bebd53dfa635675ab945ec56f58","pkg-name":"extra","pkg-version":"1.7.12","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3ac58d7341976173d1052e7b2837d119212d9afcf911735667c7f1ab67aec25f","pkg-src-sha256":"e571a9ec1d8865f0fbb0e0ba1eb575f783b0365c80db19b54a93600bae43b03c","depends":["base-4.16.0.0","clock-0.8.3-92b3cf3a8d563bc4cec59855d0fe86bab13ee56991b5eb116314b00120c8d023","directory-1.3.6.2","filepath-1.4.2.1","process-1.6.13.2","time-1.11.1.1","unix-2.7.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"filepath-1.4.2.1","pkg-name":"filepath","pkg-version":"1.4.2.1","depends":["base-4.16.0.0"]},{"type":"configured","id":"filepattern-0.1.3-44052a6b8a974f5f5b326a6eac65d98c24b4beca809a2e4e6cdb0557d01ac03e","pkg-name":"filepattern","pkg-version":"0.1.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"372c1733d83b90045eb29da9f010fed79bfef8771ce65eb126a1d83ecc54a9a2","pkg-src-sha256":"cc445d439ea2f65cac7604d3578aa2c3a62e5a91dc989f4ce5b3390db9e59636","depends":["base-4.16.0.0","directory-1.3.6.2","extra-1.7.12-4537794a6683eedd21da2fd7dcb19c48d6720bebd53dfa635675ab945ec56f58","filepath-1.4.2.1"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"ghc-bignum-1.2","pkg-name":"ghc-bignum","pkg-version":"1.2","depends":["ghc-prim-0.8.0"]},{"type":"pre-existing","id":"ghc-boot-th-9.2.1","pkg-name":"ghc-boot-th","pkg-version":"9.2.1","depends":["base-4.16.0.0"]},{"type":"pre-existing","id":"ghc-prim-0.8.0","pkg-name":"ghc-prim","pkg-version":"0.8.0","depends":["rts"]},{"type":"configured","id":"hadrian-0.1.0.0-inplace-hadrian","pkg-name":"hadrian","pkg-version":"0.1.0.0","flags":{"selftest":true,"threaded":true},"style":"local","pkg-src":{"type":"local","path":"/home/matt/ghc-scratch/hadrian/."},"dist-dir":"/home/matt/ghc-scratch/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.2.1/hadrian-0.1.0.0/x/hadrian","build-info":"/home/matt/ghc-scratch/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.2.1/hadrian-0.1.0.0/x/hadrian/build-info.json","depends":["Cabal-3.6.0.0","QuickCheck-2.14.2-d206773042205de1060139757d2714b6fc1f3b1ff5294e611a076f708c2c2939","base-4.16.0.0","bytestring-0.11.1.0","containers-0.6.5.1","directory-1.3.6.2","extra-1.7.12-4537794a6683eedd21da2fd7dcb19c48d6720bebd53dfa635675ab945ec56f58","filepath-1.4.2.1","mtl-2.2.2","parsec-3.1.14.0","shake-0.19.7-f674e0317c75177d3e90c60343b4709ccb09132b7241f5718a9b394e7841298d","text-1.2.5.0","time-1.11.1.1","transformers-0.5.6.2","unordered-containers-0.2.19.1-89127bf85578057135b77bb1158d3c3ba3d8b676352c7d9af1628e53054cfabe"],"exe-depends":[],"component-name":"exe:hadrian","bin-file":"/home/matt/ghc-scratch/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.2.1/hadrian-0.1.0.0/x/hadrian/build/hadrian/hadrian"},{"type":"configured","id":"hashable-1.4.2.0-a256d5223f556ecea163e1289cbc51834d62cbd6964b0bbc5aacc47e0ce28ead","pkg-name":"hashable","pkg-version":"1.4.2.0","flags":{"integer-gmp":true,"random-initial-seed":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"585792335d5541dba78fa8dfcb291a89cd5812a281825ff7a44afa296ab5d58a","pkg-src-sha256":"1b4000ea82b81f69d46d0af4152c10c6303873510738e24cfc4767760d30e3f8","depends":["base-4.16.0.0","bytestring-0.11.1.0","containers-0.6.5.1","data-array-byte-0.1.0.1-39089d1700e8eb79997c0fea24daee60863f08caa05929ff7d545a59d374af7e","deepseq-1.4.6.0","filepath-1.4.2.1","ghc-bignum-1.2","ghc-prim-0.8.0","text-1.2.5.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"heaps-0.4-8d3419f8408b5b8b6841b00f6d1a7471816134201231be28416266a3ee3bde49","pkg-name":"heaps","pkg-version":"0.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"66b19fcd813b0e4db3e0bac541bd46606c3b13d3d081d9f9666f4be0f5ff14b8","pkg-src-sha256":"89329df8b95ae99ef272e41e7a2d0fe2f1bb7eacfcc34bc01664414b33067cfd","depends":["base-4.16.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-dgtable-0.5.2-6278b9d6c9e5cd92f21180eee5fe6a6cc4709b3454a4f39848c0924a4b6130cc","pkg-name":"js-dgtable","pkg-version":"0.5.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f75cb4fa53c88c65794becdd48eb0d3b2b8abd89a3d5c19e87af91f5225c15e4","pkg-src-sha256":"e28dd65bee8083b17210134e22e01c6349dc33c3b7bd17705973cd014e9f20ac","depends":["base-4.16.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-flot-0.8.3-0fe00be087c19b4ab01d3df43cb86b0d0d8634379a8ec6ab5d64bd544fc95aa5","pkg-name":"js-flot","pkg-version":"0.8.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4c1c447a9a2fba0adba6d30678302a30c32b9dfde9e7aa9e9156483e1545096d","pkg-src-sha256":"1ba2f2a6b8d85da76c41f526c98903cbb107f8642e506c072c1e7e3c20fe5e7a","depends":["base-4.16.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-jquery-3.3.1-df9b3aa568ece10aa0a1f02d8e0df8a6faee7f76b182f7f7e8e435249bb7c040","pkg-name":"js-jquery","pkg-version":"3.3.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"59ab6c79159549ef94b584abce8e6d3b336014c2cce1337b59a8f637e2856df5","pkg-src-sha256":"e0e0681f0da1130ede4e03a051630ea439c458cb97216cdb01771ebdbe44069b","depends":["base-4.16.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"mtl-2.2.2","pkg-name":"mtl","pkg-version":"2.2.2","depends":["base-4.16.0.0","transformers-0.5.6.2"]},{"type":"pre-existing","id":"parsec-3.1.14.0","pkg-name":"parsec","pkg-version":"3.1.14.0","depends":["base-4.16.0.0","bytestring-0.11.1.0","mtl-2.2.2","text-1.2.5.0"]},{"type":"pre-existing","id":"pretty-1.1.3.6","pkg-name":"pretty","pkg-version":"1.1.3.6","depends":["base-4.16.0.0","deepseq-1.4.6.0","ghc-prim-0.8.0"]},{"type":"configured","id":"primitive-0.8.0.0-1e9f1620b3af36dba02da5dc1555b2753e6c35b78d7641cf661542322aca6e43","pkg-name":"primitive","pkg-version":"0.8.0.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"826bf2a702a26ef87532a135808abad69d74f70ead39f26c06d034b1f0537a19","pkg-src-sha256":"5553c21b4a789f9b591eed69e598cc58484c274af29250e517b5a8bcc62b995f","depends":["base-4.16.0.0","data-array-byte-0.1.0.1-39089d1700e8eb79997c0fea24daee60863f08caa05929ff7d545a59d374af7e","deepseq-1.4.6.0","template-haskell-2.18.0.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"process-1.6.13.2","pkg-name":"process","pkg-version":"1.6.13.2","depends":["base-4.16.0.0","deepseq-1.4.6.0","directory-1.3.6.2","filepath-1.4.2.1","unix-2.7.2.2"]},{"type":"configured","id":"random-1.2.1.1-97ce1668cc8855def97f8467b8241effcc343cfb3341c4b9c3dec392ca31a395","pkg-name":"random","pkg-version":"1.2.1.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"dea1f11e5569332dc6c8efaad1cb301016a5587b6754943a49f9de08ae0e56d9","pkg-src-sha256":"3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76","depends":["base-4.16.0.0","bytestring-0.11.1.0","deepseq-1.4.6.0","mtl-2.2.2","splitmix-0.1.0.4-6e4cb959752030596da42aa487811cf8f2f8d97e77e5b86f7c0286b176af5a9e"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"rts","pkg-name":"rts","pkg-version":"1.0.2","depends":[]},{"type":"configured","id":"shake-0.19.7-e-shake-0de9d0da02df51a122baac2187f5171939545b90c4e4b918adcb9f3e9f8f3ae8","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.16.0.0","binary-0.8.9.0","bytestring-0.11.1.0","deepseq-1.4.6.0","directory-1.3.6.2","extra-1.7.12-4537794a6683eedd21da2fd7dcb19c48d6720bebd53dfa635675ab945ec56f58","filepath-1.4.2.1","filepattern-0.1.3-44052a6b8a974f5f5b326a6eac65d98c24b4beca809a2e4e6cdb0557d01ac03e","hashable-1.4.2.0-a256d5223f556ecea163e1289cbc51834d62cbd6964b0bbc5aacc47e0ce28ead","heaps-0.4-8d3419f8408b5b8b6841b00f6d1a7471816134201231be28416266a3ee3bde49","js-dgtable-0.5.2-6278b9d6c9e5cd92f21180eee5fe6a6cc4709b3454a4f39848c0924a4b6130cc","js-flot-0.8.3-0fe00be087c19b4ab01d3df43cb86b0d0d8634379a8ec6ab5d64bd544fc95aa5","js-jquery-3.3.1-df9b3aa568ece10aa0a1f02d8e0df8a6faee7f76b182f7f7e8e435249bb7c040","primitive-0.8.0.0-1e9f1620b3af36dba02da5dc1555b2753e6c35b78d7641cf661542322aca6e43","process-1.6.13.2","random-1.2.1.1-97ce1668cc8855def97f8467b8241effcc343cfb3341c4b9c3dec392ca31a395","time-1.11.1.1","transformers-0.5.6.2","unix-2.7.2.2","unordered-containers-0.2.19.1-89127bf85578057135b77bb1158d3c3ba3d8b676352c7d9af1628e53054cfabe","utf8-string-1.0.2-1508e35653a100bc70cf4b62637d1bc71807fe8682a43fc50125618f1075e8fa"],"exe-depends":[],"component-name":"exe:shake","bin-file":"/home/matt/.cabal/store/ghc-9.2.1/shake-0.19.7-e-shake-0de9d0da02df51a122baac2187f5171939545b90c4e4b918adcb9f3e9f8f3ae8/bin/shake"},{"type":"configured","id":"shake-0.19.7-f674e0317c75177d3e90c60343b4709ccb09132b7241f5718a9b394e7841298d","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.16.0.0","binary-0.8.9.0","bytestring-0.11.1.0","deepseq-1.4.6.0","directory-1.3.6.2","extra-1.7.12-4537794a6683eedd21da2fd7dcb19c48d6720bebd53dfa635675ab945ec56f58","filepath-1.4.2.1","filepattern-0.1.3-44052a6b8a974f5f5b326a6eac65d98c24b4beca809a2e4e6cdb0557d01ac03e","hashable-1.4.2.0-a256d5223f556ecea163e1289cbc51834d62cbd6964b0bbc5aacc47e0ce28ead","heaps-0.4-8d3419f8408b5b8b6841b00f6d1a7471816134201231be28416266a3ee3bde49","js-dgtable-0.5.2-6278b9d6c9e5cd92f21180eee5fe6a6cc4709b3454a4f39848c0924a4b6130cc","js-flot-0.8.3-0fe00be087c19b4ab01d3df43cb86b0d0d8634379a8ec6ab5d64bd544fc95aa5","js-jquery-3.3.1-df9b3aa568ece10aa0a1f02d8e0df8a6faee7f76b182f7f7e8e435249bb7c040","primitive-0.8.0.0-1e9f1620b3af36dba02da5dc1555b2753e6c35b78d7641cf661542322aca6e43","process-1.6.13.2","random-1.2.1.1-97ce1668cc8855def97f8467b8241effcc343cfb3341c4b9c3dec392ca31a395","time-1.11.1.1","transformers-0.5.6.2","unix-2.7.2.2","unordered-containers-0.2.19.1-89127bf85578057135b77bb1158d3c3ba3d8b676352c7d9af1628e53054cfabe","utf8-string-1.0.2-1508e35653a100bc70cf4b62637d1bc71807fe8682a43fc50125618f1075e8fa"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"splitmix-0.1.0.4-6e4cb959752030596da42aa487811cf8f2f8d97e77e5b86f7c0286b176af5a9e","pkg-name":"splitmix","pkg-version":"0.1.0.4","flags":{"optimised-mixer":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"db25c2e17967aa6b6046ab8b1b96ba3f344ca59a62b60fb6113d51ea305a3d8e","pkg-src-sha256":"6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa","depends":["base-4.16.0.0","deepseq-1.4.6.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"template-haskell-2.18.0.0","pkg-name":"template-haskell","pkg-version":"2.18.0.0","depends":["base-4.16.0.0","ghc-boot-th-9.2.1","ghc-prim-0.8.0","pretty-1.1.3.6"]},{"type":"pre-existing","id":"text-1.2.5.0","pkg-name":"text","pkg-version":"1.2.5.0","depends":["array-0.5.4.0","base-4.16.0.0","binary-0.8.9.0","bytestring-0.11.1.0","deepseq-1.4.6.0","ghc-prim-0.8.0","template-haskell-2.18.0.0"]},{"type":"pre-existing","id":"time-1.11.1.1","pkg-name":"time","pkg-version":"1.11.1.1","depends":["base-4.16.0.0","deepseq-1.4.6.0"]},{"type":"pre-existing","id":"transformers-0.5.6.2","pkg-name":"transformers","pkg-version":"0.5.6.2","depends":["base-4.16.0.0"]},{"type":"pre-existing","id":"unix-2.7.2.2","pkg-name":"unix","pkg-version":"2.7.2.2","depends":["base-4.16.0.0","bytestring-0.11.1.0","time-1.11.1.1"]},{"type":"configured","id":"unordered-containers-0.2.19.1-89127bf85578057135b77bb1158d3c3ba3d8b676352c7d9af1628e53054cfabe","pkg-name":"unordered-containers","pkg-version":"0.2.19.1","flags":{"debug":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"9ad8972c2e913c37b1d4f0e1261517fd7a1b8c8a58077e057be69837e3dbaa00","pkg-src-sha256":"1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2","depends":["base-4.16.0.0","deepseq-1.4.6.0","hashable-1.4.2.0-a256d5223f556ecea163e1289cbc51834d62cbd6964b0bbc5aacc47e0ce28ead","template-haskell-2.18.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"utf8-string-1.0.2-1508e35653a100bc70cf4b62637d1bc71807fe8682a43fc50125618f1075e8fa","pkg-name":"utf8-string","pkg-version":"1.0.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"79416292186feeaf1f60e49ac5a1ffae9bf1b120e040a74bf0e81ca7f1d31d3f","pkg-src-sha256":"ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a","depends":["base-4.16.0.0","bytestring-0.11.1.0"],"exe-depends":[],"component-name":"lib"}]} \ No newline at end of file
+{"cabal-version":"3.8.1.0","cabal-lib-version":"3.8.1.0","compiler-id":"ghc-9.6.1","os":"linux","arch":"x86_64","install-plan":[{"type":"configured","id":"Cabal-3.8.1.0-372ffc7841ab6b7a5b1b38fc4fa05a1def6d41a4a28a05b6b16412d8d03e6fd6","pkg-name":"Cabal","pkg-version":"3.8.1.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"77121d8e1aff14a0fd95684b751599db78a7dd26d55862d9fcef27c88b193e9d","pkg-src-sha256":"7464cbe6c2f3d7e5d0232023a1a7330621f8b24853cb259fc89a2af85b736608","depends":["Cabal-syntax-3.8.1.0-3ca25e89601c18bd49019a3d1e19420c47007f095f586f14636917297c1fc62a","array-0.5.5.0","base-4.18.0.0","bytestring-0.11.4.0","containers-0.6.7","deepseq-1.4.8.1","directory-1.3.8.1","filepath-1.4.100.1","mtl-2.3.1","parsec-3.1.16.1","pretty-1.1.3.6","process-1.6.17.0","text-2.0.2","time-1.12.2","transformers-0.6.1.0","unix-2.8.1.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"Cabal-syntax-3.8.1.0-3ca25e89601c18bd49019a3d1e19420c47007f095f586f14636917297c1fc62a","pkg-name":"Cabal-syntax","pkg-version":"3.8.1.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"ed2d937ba6c6a20b75850349eedd41374885fc42369ef152d69e2ba70f44f593","pkg-src-sha256":"07e8ddb19fe01781485f1522b6afc22aba680b0ab28ebe6bbfb84a2dd698ce0f","depends":["array-0.5.5.0","base-4.18.0.0","binary-0.8.9.1","bytestring-0.11.4.0","containers-0.6.7","deepseq-1.4.8.1","directory-1.3.8.1","filepath-1.4.100.1","mtl-2.3.1","parsec-3.1.16.1","pretty-1.1.3.6","text-2.0.2","time-1.12.2","transformers-0.6.1.0","unix-2.8.1.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"QuickCheck-2.14.2-48f73357a0d5467607535cbb21ac8449b28303ff215af7e947416e6a4ef4195f","pkg-name":"QuickCheck","pkg-version":"2.14.2","flags":{"old-random":false,"templatehaskell":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4ce29211223d5e6620ebceba34a3ca9ccf1c10c0cf387d48aea45599222ee5aa","pkg-src-sha256":"d87b6c85696b601175274361fa62217894401e401e150c3c5d4013ac53cd36f3","depends":["base-4.18.0.0","containers-0.6.7","deepseq-1.4.8.1","random-1.2.1.1-2344f66ad3296b3c8c64d0fbe5a1dc8799adc0c02f28ef27b3d8bcb93f71e8f6","splitmix-0.1.0.4-d2df76b90c23066708f4e66aade172a985bb07c1ccf613221011d8827c32f89b","template-haskell-2.20.0.0","transformers-0.6.1.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"array-0.5.5.0","pkg-name":"array","pkg-version":"0.5.5.0","depends":["base-4.18.0.0"]},{"type":"pre-existing","id":"base-4.18.0.0","pkg-name":"base","pkg-version":"4.18.0.0","depends":["ghc-bignum-1.3","ghc-prim-0.10.0","rts-1.0.2"]},{"type":"configured","id":"base16-bytestring-1.0.2.0-b5940c21a059d328169082a7bf03f08fec9ea9cb300f6de1499ec2087f455bc8","pkg-name":"base16-bytestring","pkg-version":"1.0.2.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"64abad7816ab8cabed8489e29f807b3a6f828e0b2cec0eae404323d69d36df9a","pkg-src-sha256":"1d5a91143ef0e22157536093ec8e59d226a68220ec89378d5dcaeea86472c784","depends":["base-4.18.0.0","bytestring-0.11.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"binary-0.8.9.1","pkg-name":"binary","pkg-version":"0.8.9.1","depends":["array-0.5.5.0","base-4.18.0.0","bytestring-0.11.4.0","containers-0.6.7"]},{"type":"pre-existing","id":"bytestring-0.11.4.0","pkg-name":"bytestring","pkg-version":"0.11.4.0","depends":["base-4.18.0.0","deepseq-1.4.8.1","ghc-prim-0.10.0","template-haskell-2.20.0.0"]},{"type":"configured","id":"clock-0.8.3-309549353d285d82eaa6ef36502628671b62ca2d2fb6284260bd7679d5e7b9a3","pkg-name":"clock","pkg-version":"0.8.3","flags":{"llvm":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c","pkg-src-sha256":"845ce5db4c98cefd517323e005f87effceff886987305e421c4ef616dc0505d1","depends":["base-4.18.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"containers-0.6.7","pkg-name":"containers","pkg-version":"0.6.7","depends":["array-0.5.5.0","base-4.18.0.0","deepseq-1.4.8.1","template-haskell-2.20.0.0"]},{"type":"configured","id":"cryptohash-sha256-0.11.102.1-9d310921383dbec51b2f6fa686c9d99cfd3bb977a8eff016b53bb33c86c941e0","pkg-name":"cryptohash-sha256","pkg-version":"0.11.102.1","flags":{"exe":false,"use-cbits":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"72ce9095872eae653addca5f412ac8070d6282d8e1c8578c2237c33f2cbbf4bc","pkg-src-sha256":"73a7dc7163871a80837495039a099967b11f5c4fe70a118277842f7a713c6bf6","depends":["base-4.18.0.0","bytestring-0.11.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"deepseq-1.4.8.1","pkg-name":"deepseq","pkg-version":"1.4.8.1","depends":["array-0.5.5.0","base-4.18.0.0","ghc-prim-0.10.0"]},{"type":"pre-existing","id":"directory-1.3.8.1","pkg-name":"directory","pkg-version":"1.3.8.1","depends":["base-4.18.0.0","filepath-1.4.100.1","time-1.12.2","unix-2.8.1.0"]},{"type":"pre-existing","id":"exceptions-0.10.7","pkg-name":"exceptions","pkg-version":"0.10.7","depends":["base-4.18.0.0","mtl-2.3.1","stm-2.5.1.0","template-haskell-2.20.0.0","transformers-0.6.1.0"]},{"type":"configured","id":"extra-1.7.12-3ff76dca5298f0150cab13d98558cc454778c8488bbe7ff495cf22dd8ce1fbac","pkg-name":"extra","pkg-version":"1.7.12","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3ac58d7341976173d1052e7b2837d119212d9afcf911735667c7f1ab67aec25f","pkg-src-sha256":"e571a9ec1d8865f0fbb0e0ba1eb575f783b0365c80db19b54a93600bae43b03c","depends":["base-4.18.0.0","clock-0.8.3-309549353d285d82eaa6ef36502628671b62ca2d2fb6284260bd7679d5e7b9a3","directory-1.3.8.1","filepath-1.4.100.1","process-1.6.17.0","time-1.12.2","unix-2.8.1.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"filepath-1.4.100.1","pkg-name":"filepath","pkg-version":"1.4.100.1","depends":["base-4.18.0.0","bytestring-0.11.4.0","deepseq-1.4.8.1","exceptions-0.10.7","template-haskell-2.20.0.0"]},{"type":"configured","id":"filepattern-0.1.3-27d278e9a17a55f9f951233d92fa6c79dfb3359757c1c3d71c29c72a1563a990","pkg-name":"filepattern","pkg-version":"0.1.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"372c1733d83b90045eb29da9f010fed79bfef8771ce65eb126a1d83ecc54a9a2","pkg-src-sha256":"cc445d439ea2f65cac7604d3578aa2c3a62e5a91dc989f4ce5b3390db9e59636","depends":["base-4.18.0.0","directory-1.3.8.1","extra-1.7.12-3ff76dca5298f0150cab13d98558cc454778c8488bbe7ff495cf22dd8ce1fbac","filepath-1.4.100.1"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"ghc-bignum-1.3","pkg-name":"ghc-bignum","pkg-version":"1.3","depends":["ghc-prim-0.10.0"]},{"type":"pre-existing","id":"ghc-boot-th-9.6.1","pkg-name":"ghc-boot-th","pkg-version":"9.6.1","depends":["base-4.18.0.0"]},{"type":"pre-existing","id":"ghc-prim-0.10.0","pkg-name":"ghc-prim","pkg-version":"0.10.0","depends":["rts-1.0.2"]},{"type":"configured","id":"hadrian-0.1.0.0-inplace-hadrian","pkg-name":"hadrian","pkg-version":"0.1.0.0","flags":{"selftest":true,"threaded":true},"style":"local","pkg-src":{"type":"local","path":"/home/matt/ghc-rodrigo/hadrian/."},"dist-dir":"/home/matt/ghc-rodrigo/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.6.1/hadrian-0.1.0.0/x/hadrian","build-info":"/home/matt/ghc-rodrigo/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.6.1/hadrian-0.1.0.0/x/hadrian/build-info.json","depends":["Cabal-3.8.1.0-372ffc7841ab6b7a5b1b38fc4fa05a1def6d41a4a28a05b6b16412d8d03e6fd6","QuickCheck-2.14.2-48f73357a0d5467607535cbb21ac8449b28303ff215af7e947416e6a4ef4195f","base-4.18.0.0","base16-bytestring-1.0.2.0-b5940c21a059d328169082a7bf03f08fec9ea9cb300f6de1499ec2087f455bc8","bytestring-0.11.4.0","containers-0.6.7","cryptohash-sha256-0.11.102.1-9d310921383dbec51b2f6fa686c9d99cfd3bb977a8eff016b53bb33c86c941e0","directory-1.3.8.1","extra-1.7.12-3ff76dca5298f0150cab13d98558cc454778c8488bbe7ff495cf22dd8ce1fbac","filepath-1.4.100.1","mtl-2.3.1","parsec-3.1.16.1","shake-0.19.7-5a9ab582f15d6b877ed307ed78deca9e9f66793b09ed98bacc612e42b1e9bb49","text-2.0.2","time-1.12.2","transformers-0.6.1.0","unordered-containers-0.2.19.1-dd696ab9b62a991ef164b9913b3122a7c8f7f5556a841af32aff1e29cd73ef99"],"exe-depends":[],"component-name":"exe:hadrian","bin-file":"/home/matt/ghc-rodrigo/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.6.1/hadrian-0.1.0.0/x/hadrian/build/hadrian/hadrian"},{"type":"configured","id":"hashable-1.4.2.0-0889edbce65a4fa263d1b820b2b8d69eaa1dc95475dff3c60f82e860064fa7d4","pkg-name":"hashable","pkg-version":"1.4.2.0","flags":{"integer-gmp":true,"random-initial-seed":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"585792335d5541dba78fa8dfcb291a89cd5812a281825ff7a44afa296ab5d58a","pkg-src-sha256":"1b4000ea82b81f69d46d0af4152c10c6303873510738e24cfc4767760d30e3f8","depends":["base-4.18.0.0","bytestring-0.11.4.0","containers-0.6.7","deepseq-1.4.8.1","filepath-1.4.100.1","ghc-bignum-1.3","ghc-prim-0.10.0","text-2.0.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"heaps-0.4-84f785fa326505d8cac138316c7ca1fae826bac79403765826b5e0e8b4ca6459","pkg-name":"heaps","pkg-version":"0.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"66b19fcd813b0e4db3e0bac541bd46606c3b13d3d081d9f9666f4be0f5ff14b8","pkg-src-sha256":"89329df8b95ae99ef272e41e7a2d0fe2f1bb7eacfcc34bc01664414b33067cfd","depends":["base-4.18.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-dgtable-0.5.2-929f5bb1639fd2d41e313c57e9a1322999779829eab0b2562697ea02d35cb572","pkg-name":"js-dgtable","pkg-version":"0.5.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f75cb4fa53c88c65794becdd48eb0d3b2b8abd89a3d5c19e87af91f5225c15e4","pkg-src-sha256":"e28dd65bee8083b17210134e22e01c6349dc33c3b7bd17705973cd014e9f20ac","depends":["base-4.18.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-flot-0.8.3-6ef19e2feb165ecbdc5faf2cc57c67ac671129ac8bfa15f49d808e2c55182e5a","pkg-name":"js-flot","pkg-version":"0.8.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4c1c447a9a2fba0adba6d30678302a30c32b9dfde9e7aa9e9156483e1545096d","pkg-src-sha256":"1ba2f2a6b8d85da76c41f526c98903cbb107f8642e506c072c1e7e3c20fe5e7a","depends":["base-4.18.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-jquery-3.3.1-7aa226a6aaf4a0a4ab8c2edaf9ce49229001fbdf5d86e863b4c2ece60a4532ed","pkg-name":"js-jquery","pkg-version":"3.3.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"59ab6c79159549ef94b584abce8e6d3b336014c2cce1337b59a8f637e2856df5","pkg-src-sha256":"e0e0681f0da1130ede4e03a051630ea439c458cb97216cdb01771ebdbe44069b","depends":["base-4.18.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"mtl-2.3.1","pkg-name":"mtl","pkg-version":"2.3.1","depends":["base-4.18.0.0","transformers-0.6.1.0"]},{"type":"pre-existing","id":"parsec-3.1.16.1","pkg-name":"parsec","pkg-version":"3.1.16.1","depends":["base-4.18.0.0","bytestring-0.11.4.0","mtl-2.3.1","text-2.0.2"]},{"type":"pre-existing","id":"pretty-1.1.3.6","pkg-name":"pretty","pkg-version":"1.1.3.6","depends":["base-4.18.0.0","deepseq-1.4.8.1","ghc-prim-0.10.0"]},{"type":"configured","id":"primitive-0.8.0.0-ad645076af9195e65e5c77d3a3850c7fb7f4153156656431f6be749f834f8371","pkg-name":"primitive","pkg-version":"0.8.0.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"826bf2a702a26ef87532a135808abad69d74f70ead39f26c06d034b1f0537a19","pkg-src-sha256":"5553c21b4a789f9b591eed69e598cc58484c274af29250e517b5a8bcc62b995f","depends":["base-4.18.0.0","deepseq-1.4.8.1","template-haskell-2.20.0.0","transformers-0.6.1.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"process-1.6.17.0","pkg-name":"process","pkg-version":"1.6.17.0","depends":["base-4.18.0.0","deepseq-1.4.8.1","directory-1.3.8.1","filepath-1.4.100.1","unix-2.8.1.0"]},{"type":"configured","id":"random-1.2.1.1-2344f66ad3296b3c8c64d0fbe5a1dc8799adc0c02f28ef27b3d8bcb93f71e8f6","pkg-name":"random","pkg-version":"1.2.1.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"dea1f11e5569332dc6c8efaad1cb301016a5587b6754943a49f9de08ae0e56d9","pkg-src-sha256":"3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76","depends":["base-4.18.0.0","bytestring-0.11.4.0","deepseq-1.4.8.1","mtl-2.3.1","splitmix-0.1.0.4-d2df76b90c23066708f4e66aade172a985bb07c1ccf613221011d8827c32f89b"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"rts-1.0.2","pkg-name":"rts","pkg-version":"1.0.2","depends":[]},{"type":"configured","id":"shake-0.19.7-5a9ab582f15d6b877ed307ed78deca9e9f66793b09ed98bacc612e42b1e9bb49","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.18.0.0","binary-0.8.9.1","bytestring-0.11.4.0","deepseq-1.4.8.1","directory-1.3.8.1","extra-1.7.12-3ff76dca5298f0150cab13d98558cc454778c8488bbe7ff495cf22dd8ce1fbac","filepath-1.4.100.1","filepattern-0.1.3-27d278e9a17a55f9f951233d92fa6c79dfb3359757c1c3d71c29c72a1563a990","hashable-1.4.2.0-0889edbce65a4fa263d1b820b2b8d69eaa1dc95475dff3c60f82e860064fa7d4","heaps-0.4-84f785fa326505d8cac138316c7ca1fae826bac79403765826b5e0e8b4ca6459","js-dgtable-0.5.2-929f5bb1639fd2d41e313c57e9a1322999779829eab0b2562697ea02d35cb572","js-flot-0.8.3-6ef19e2feb165ecbdc5faf2cc57c67ac671129ac8bfa15f49d808e2c55182e5a","js-jquery-3.3.1-7aa226a6aaf4a0a4ab8c2edaf9ce49229001fbdf5d86e863b4c2ece60a4532ed","primitive-0.8.0.0-ad645076af9195e65e5c77d3a3850c7fb7f4153156656431f6be749f834f8371","process-1.6.17.0","random-1.2.1.1-2344f66ad3296b3c8c64d0fbe5a1dc8799adc0c02f28ef27b3d8bcb93f71e8f6","time-1.12.2","transformers-0.6.1.0","unix-2.8.1.0","unordered-containers-0.2.19.1-dd696ab9b62a991ef164b9913b3122a7c8f7f5556a841af32aff1e29cd73ef99","utf8-string-1.0.2-721e9e04faa6601f986dacde9b25ed4ab91af08c4232b52f8ff34c6b34918053"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"shake-0.19.7-e-shake-a59c980e9cb95b2a1d37687f9ab3efd3a8e8314a00e4ca7fb819044d23198462","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.18.0.0","binary-0.8.9.1","bytestring-0.11.4.0","deepseq-1.4.8.1","directory-1.3.8.1","extra-1.7.12-3ff76dca5298f0150cab13d98558cc454778c8488bbe7ff495cf22dd8ce1fbac","filepath-1.4.100.1","filepattern-0.1.3-27d278e9a17a55f9f951233d92fa6c79dfb3359757c1c3d71c29c72a1563a990","hashable-1.4.2.0-0889edbce65a4fa263d1b820b2b8d69eaa1dc95475dff3c60f82e860064fa7d4","heaps-0.4-84f785fa326505d8cac138316c7ca1fae826bac79403765826b5e0e8b4ca6459","js-dgtable-0.5.2-929f5bb1639fd2d41e313c57e9a1322999779829eab0b2562697ea02d35cb572","js-flot-0.8.3-6ef19e2feb165ecbdc5faf2cc57c67ac671129ac8bfa15f49d808e2c55182e5a","js-jquery-3.3.1-7aa226a6aaf4a0a4ab8c2edaf9ce49229001fbdf5d86e863b4c2ece60a4532ed","primitive-0.8.0.0-ad645076af9195e65e5c77d3a3850c7fb7f4153156656431f6be749f834f8371","process-1.6.17.0","random-1.2.1.1-2344f66ad3296b3c8c64d0fbe5a1dc8799adc0c02f28ef27b3d8bcb93f71e8f6","time-1.12.2","transformers-0.6.1.0","unix-2.8.1.0","unordered-containers-0.2.19.1-dd696ab9b62a991ef164b9913b3122a7c8f7f5556a841af32aff1e29cd73ef99","utf8-string-1.0.2-721e9e04faa6601f986dacde9b25ed4ab91af08c4232b52f8ff34c6b34918053"],"exe-depends":[],"component-name":"exe:shake","bin-file":"/home/matt/.cabal/store/ghc-9.6.1/shake-0.19.7-e-shake-a59c980e9cb95b2a1d37687f9ab3efd3a8e8314a00e4ca7fb819044d23198462/bin/shake"},{"type":"configured","id":"splitmix-0.1.0.4-d2df76b90c23066708f4e66aade172a985bb07c1ccf613221011d8827c32f89b","pkg-name":"splitmix","pkg-version":"0.1.0.4","flags":{"optimised-mixer":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"db25c2e17967aa6b6046ab8b1b96ba3f344ca59a62b60fb6113d51ea305a3d8e","pkg-src-sha256":"6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa","depends":["base-4.18.0.0","deepseq-1.4.8.1"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"stm-2.5.1.0","pkg-name":"stm","pkg-version":"2.5.1.0","depends":["array-0.5.5.0","base-4.18.0.0"]},{"type":"pre-existing","id":"template-haskell-2.20.0.0","pkg-name":"template-haskell","pkg-version":"2.20.0.0","depends":["base-4.18.0.0","ghc-boot-th-9.6.1","ghc-prim-0.10.0","pretty-1.1.3.6"]},{"type":"pre-existing","id":"text-2.0.2","pkg-name":"text","pkg-version":"2.0.2","depends":["array-0.5.5.0","base-4.18.0.0","binary-0.8.9.1","bytestring-0.11.4.0","deepseq-1.4.8.1","ghc-prim-0.10.0","template-haskell-2.20.0.0"]},{"type":"pre-existing","id":"time-1.12.2","pkg-name":"time","pkg-version":"1.12.2","depends":["base-4.18.0.0","deepseq-1.4.8.1"]},{"type":"pre-existing","id":"transformers-0.6.1.0","pkg-name":"transformers","pkg-version":"0.6.1.0","depends":["base-4.18.0.0"]},{"type":"pre-existing","id":"unix-2.8.1.0","pkg-name":"unix","pkg-version":"2.8.1.0","depends":["base-4.18.0.0","bytestring-0.11.4.0","filepath-1.4.100.1","time-1.12.2"]},{"type":"configured","id":"unordered-containers-0.2.19.1-dd696ab9b62a991ef164b9913b3122a7c8f7f5556a841af32aff1e29cd73ef99","pkg-name":"unordered-containers","pkg-version":"0.2.19.1","flags":{"debug":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"9ad8972c2e913c37b1d4f0e1261517fd7a1b8c8a58077e057be69837e3dbaa00","pkg-src-sha256":"1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2","depends":["base-4.18.0.0","deepseq-1.4.8.1","hashable-1.4.2.0-0889edbce65a4fa263d1b820b2b8d69eaa1dc95475dff3c60f82e860064fa7d4","template-haskell-2.20.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"utf8-string-1.0.2-721e9e04faa6601f986dacde9b25ed4ab91af08c4232b52f8ff34c6b34918053","pkg-name":"utf8-string","pkg-version":"1.0.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"79416292186feeaf1f60e49ac5a1ffae9bf1b120e040a74bf0e81ca7f1d31d3f","pkg-src-sha256":"ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a","depends":["base-4.18.0.0","bytestring-0.11.4.0"],"exe-depends":[],"component-name":"lib"}]} \ No newline at end of file
diff --git a/hadrian/bootstrap/plan-9_2_2.json b/hadrian/bootstrap/plan-9_2_2.json
index b05959aa17..06ea678346 100644
--- a/hadrian/bootstrap/plan-9_2_2.json
+++ b/hadrian/bootstrap/plan-9_2_2.json
@@ -1 +1 @@
-{"cabal-version":"3.8.1.0","cabal-lib-version":"3.8.1.0","compiler-id":"ghc-9.2.2","os":"linux","arch":"x86_64","install-plan":[{"type":"pre-existing","id":"Cabal-3.6.3.0","pkg-name":"Cabal","pkg-version":"3.6.3.0","depends":["array-0.5.4.0","base-4.16.1.0","binary-0.8.9.0","bytestring-0.11.3.0","containers-0.6.5.1","deepseq-1.4.6.1","directory-1.3.6.2","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","pretty-1.1.3.6","process-1.6.13.2","text-1.2.5.0","time-1.11.1.1","transformers-0.5.6.2","unix-2.7.2.2"]},{"type":"configured","id":"QuickCheck-2.14.2-fd6bc24ff3b5f8201c3071f6ca35f332d6b1353852d01e1b4e5ff25db746e149","pkg-name":"QuickCheck","pkg-version":"2.14.2","flags":{"old-random":false,"templatehaskell":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4ce29211223d5e6620ebceba34a3ca9ccf1c10c0cf387d48aea45599222ee5aa","pkg-src-sha256":"d87b6c85696b601175274361fa62217894401e401e150c3c5d4013ac53cd36f3","depends":["base-4.16.1.0","containers-0.6.5.1","deepseq-1.4.6.1","random-1.2.1.1-1a74f78224fb4b9c0290854a02b095a76191148a477857d7f21dcd68e5c2b4cf","splitmix-0.1.0.4-201c59ac932f856499a47c73ffe84a6be5b6dfd5db9ec6182775fe6b945f369c","template-haskell-2.18.0.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"array-0.5.4.0","pkg-name":"array","pkg-version":"0.5.4.0","depends":["base-4.16.1.0"]},{"type":"pre-existing","id":"base-4.16.1.0","pkg-name":"base","pkg-version":"4.16.1.0","depends":["ghc-bignum-1.2","ghc-prim-0.8.0","rts"]},{"type":"pre-existing","id":"binary-0.8.9.0","pkg-name":"binary","pkg-version":"0.8.9.0","depends":["array-0.5.4.0","base-4.16.1.0","bytestring-0.11.3.0","containers-0.6.5.1"]},{"type":"pre-existing","id":"bytestring-0.11.3.0","pkg-name":"bytestring","pkg-version":"0.11.3.0","depends":["base-4.16.1.0","deepseq-1.4.6.1","ghc-prim-0.8.0","template-haskell-2.18.0.0"]},{"type":"configured","id":"clock-0.8.3-0c7c9e547a146527c99f2e7581131ba32cadfbda0704ef58b7c52090bd8615f6","pkg-name":"clock","pkg-version":"0.8.3","flags":{"llvm":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c","pkg-src-sha256":"845ce5db4c98cefd517323e005f87effceff886987305e421c4ef616dc0505d1","depends":["base-4.16.1.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"containers-0.6.5.1","pkg-name":"containers","pkg-version":"0.6.5.1","depends":["array-0.5.4.0","base-4.16.1.0","deepseq-1.4.6.1"]},{"type":"configured","id":"data-array-byte-0.1.0.1-e7958b903e06231e1e247b429923d80ecc5674ee18a064ad9de8d6edc70e24e5","pkg-name":"data-array-byte","pkg-version":"0.1.0.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"2ef1bd3511e82ba56f7f23cd793dd2da84338a1e7c2cbea5b151417afe3baada","pkg-src-sha256":"1bb6eca0b3e02d057fe7f4e14c81ef395216f421ab30fdaa1b18017c9c025600","depends":["base-4.16.1.0","deepseq-1.4.6.1","template-haskell-2.18.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"deepseq-1.4.6.1","pkg-name":"deepseq","pkg-version":"1.4.6.1","depends":["array-0.5.4.0","base-4.16.1.0"]},{"type":"pre-existing","id":"directory-1.3.6.2","pkg-name":"directory","pkg-version":"1.3.6.2","depends":["base-4.16.1.0","filepath-1.4.2.2","time-1.11.1.1","unix-2.7.2.2"]},{"type":"configured","id":"extra-1.7.12-2ebaa460133d1ef6e5e06bbfa066f8d302f505e4a67498115edf41ac0ce1b283","pkg-name":"extra","pkg-version":"1.7.12","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3ac58d7341976173d1052e7b2837d119212d9afcf911735667c7f1ab67aec25f","pkg-src-sha256":"e571a9ec1d8865f0fbb0e0ba1eb575f783b0365c80db19b54a93600bae43b03c","depends":["base-4.16.1.0","clock-0.8.3-0c7c9e547a146527c99f2e7581131ba32cadfbda0704ef58b7c52090bd8615f6","directory-1.3.6.2","filepath-1.4.2.2","process-1.6.13.2","time-1.11.1.1","unix-2.7.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"filepath-1.4.2.2","pkg-name":"filepath","pkg-version":"1.4.2.2","depends":["base-4.16.1.0"]},{"type":"configured","id":"filepattern-0.1.3-d9631d8baf926960f6eb6991bc1e7c256a8c1757d9ec9e8cb827d563cf27e3a3","pkg-name":"filepattern","pkg-version":"0.1.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"372c1733d83b90045eb29da9f010fed79bfef8771ce65eb126a1d83ecc54a9a2","pkg-src-sha256":"cc445d439ea2f65cac7604d3578aa2c3a62e5a91dc989f4ce5b3390db9e59636","depends":["base-4.16.1.0","directory-1.3.6.2","extra-1.7.12-2ebaa460133d1ef6e5e06bbfa066f8d302f505e4a67498115edf41ac0ce1b283","filepath-1.4.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"ghc-bignum-1.2","pkg-name":"ghc-bignum","pkg-version":"1.2","depends":["ghc-prim-0.8.0"]},{"type":"pre-existing","id":"ghc-boot-th-9.2.2","pkg-name":"ghc-boot-th","pkg-version":"9.2.2","depends":["base-4.16.1.0"]},{"type":"pre-existing","id":"ghc-prim-0.8.0","pkg-name":"ghc-prim","pkg-version":"0.8.0","depends":["rts"]},{"type":"configured","id":"hadrian-0.1.0.0-inplace-hadrian","pkg-name":"hadrian","pkg-version":"0.1.0.0","flags":{"selftest":true,"threaded":true},"style":"local","pkg-src":{"type":"local","path":"/home/matt/ghc-scratch/hadrian/."},"dist-dir":"/home/matt/ghc-scratch/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.2.2/hadrian-0.1.0.0/x/hadrian","build-info":"/home/matt/ghc-scratch/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.2.2/hadrian-0.1.0.0/x/hadrian/build-info.json","depends":["Cabal-3.6.3.0","QuickCheck-2.14.2-fd6bc24ff3b5f8201c3071f6ca35f332d6b1353852d01e1b4e5ff25db746e149","base-4.16.1.0","bytestring-0.11.3.0","containers-0.6.5.1","directory-1.3.6.2","extra-1.7.12-2ebaa460133d1ef6e5e06bbfa066f8d302f505e4a67498115edf41ac0ce1b283","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","shake-0.19.7-4ae8d8886d8f99edbfe8169a6bb88c87e09313ef8011e4b71d3da02dba0d9060","text-1.2.5.0","time-1.11.1.1","transformers-0.5.6.2","unordered-containers-0.2.19.1-86da5900c10586ba66016cb5b90cb5be35eac7b8f8e5d511594e55990fb9b7e7"],"exe-depends":[],"component-name":"exe:hadrian","bin-file":"/home/matt/ghc-scratch/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.2.2/hadrian-0.1.0.0/x/hadrian/build/hadrian/hadrian"},{"type":"configured","id":"hashable-1.4.2.0-9f364f21d03523f32ca22163ac5da2faa0f4cbfda68d9a08c95d216e04119750","pkg-name":"hashable","pkg-version":"1.4.2.0","flags":{"integer-gmp":true,"random-initial-seed":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"585792335d5541dba78fa8dfcb291a89cd5812a281825ff7a44afa296ab5d58a","pkg-src-sha256":"1b4000ea82b81f69d46d0af4152c10c6303873510738e24cfc4767760d30e3f8","depends":["base-4.16.1.0","bytestring-0.11.3.0","containers-0.6.5.1","data-array-byte-0.1.0.1-e7958b903e06231e1e247b429923d80ecc5674ee18a064ad9de8d6edc70e24e5","deepseq-1.4.6.1","filepath-1.4.2.2","ghc-bignum-1.2","ghc-prim-0.8.0","text-1.2.5.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"heaps-0.4-492ad633a7c1fd0990246fbd401f8438db0635c4fa550e36cb43b775527c157f","pkg-name":"heaps","pkg-version":"0.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"66b19fcd813b0e4db3e0bac541bd46606c3b13d3d081d9f9666f4be0f5ff14b8","pkg-src-sha256":"89329df8b95ae99ef272e41e7a2d0fe2f1bb7eacfcc34bc01664414b33067cfd","depends":["base-4.16.1.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-dgtable-0.5.2-bfe5ec294647feda55ba2f90bde0d374568a86efba113bfff8363c9e8f34af37","pkg-name":"js-dgtable","pkg-version":"0.5.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f75cb4fa53c88c65794becdd48eb0d3b2b8abd89a3d5c19e87af91f5225c15e4","pkg-src-sha256":"e28dd65bee8083b17210134e22e01c6349dc33c3b7bd17705973cd014e9f20ac","depends":["base-4.16.1.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-flot-0.8.3-6a01b63899fcd71d3e88646c1d9e81ca1d7937cf03770977570987e81b26d8fe","pkg-name":"js-flot","pkg-version":"0.8.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4c1c447a9a2fba0adba6d30678302a30c32b9dfde9e7aa9e9156483e1545096d","pkg-src-sha256":"1ba2f2a6b8d85da76c41f526c98903cbb107f8642e506c072c1e7e3c20fe5e7a","depends":["base-4.16.1.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-jquery-3.3.1-5d3188cc3ebaa3d2976301605f921eb24ec9ca825b83351e4eeb8eb4b22dd9f3","pkg-name":"js-jquery","pkg-version":"3.3.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"59ab6c79159549ef94b584abce8e6d3b336014c2cce1337b59a8f637e2856df5","pkg-src-sha256":"e0e0681f0da1130ede4e03a051630ea439c458cb97216cdb01771ebdbe44069b","depends":["base-4.16.1.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"mtl-2.2.2","pkg-name":"mtl","pkg-version":"2.2.2","depends":["base-4.16.1.0","transformers-0.5.6.2"]},{"type":"pre-existing","id":"parsec-3.1.15.0","pkg-name":"parsec","pkg-version":"3.1.15.0","depends":["base-4.16.1.0","bytestring-0.11.3.0","mtl-2.2.2","text-1.2.5.0"]},{"type":"pre-existing","id":"pretty-1.1.3.6","pkg-name":"pretty","pkg-version":"1.1.3.6","depends":["base-4.16.1.0","deepseq-1.4.6.1","ghc-prim-0.8.0"]},{"type":"configured","id":"primitive-0.8.0.0-79a029355b4c47f541431a34a60def13110b01ecc59bbb2dd0ae5e832fe524ff","pkg-name":"primitive","pkg-version":"0.8.0.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"826bf2a702a26ef87532a135808abad69d74f70ead39f26c06d034b1f0537a19","pkg-src-sha256":"5553c21b4a789f9b591eed69e598cc58484c274af29250e517b5a8bcc62b995f","depends":["base-4.16.1.0","data-array-byte-0.1.0.1-e7958b903e06231e1e247b429923d80ecc5674ee18a064ad9de8d6edc70e24e5","deepseq-1.4.6.1","template-haskell-2.18.0.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"process-1.6.13.2","pkg-name":"process","pkg-version":"1.6.13.2","depends":["base-4.16.1.0","deepseq-1.4.6.1","directory-1.3.6.2","filepath-1.4.2.2","unix-2.7.2.2"]},{"type":"configured","id":"random-1.2.1.1-1a74f78224fb4b9c0290854a02b095a76191148a477857d7f21dcd68e5c2b4cf","pkg-name":"random","pkg-version":"1.2.1.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"dea1f11e5569332dc6c8efaad1cb301016a5587b6754943a49f9de08ae0e56d9","pkg-src-sha256":"3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76","depends":["base-4.16.1.0","bytestring-0.11.3.0","deepseq-1.4.6.1","mtl-2.2.2","splitmix-0.1.0.4-201c59ac932f856499a47c73ffe84a6be5b6dfd5db9ec6182775fe6b945f369c"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"rts","pkg-name":"rts","pkg-version":"1.0.2","depends":[]},{"type":"configured","id":"shake-0.19.7-4ae8d8886d8f99edbfe8169a6bb88c87e09313ef8011e4b71d3da02dba0d9060","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.16.1.0","binary-0.8.9.0","bytestring-0.11.3.0","deepseq-1.4.6.1","directory-1.3.6.2","extra-1.7.12-2ebaa460133d1ef6e5e06bbfa066f8d302f505e4a67498115edf41ac0ce1b283","filepath-1.4.2.2","filepattern-0.1.3-d9631d8baf926960f6eb6991bc1e7c256a8c1757d9ec9e8cb827d563cf27e3a3","hashable-1.4.2.0-9f364f21d03523f32ca22163ac5da2faa0f4cbfda68d9a08c95d216e04119750","heaps-0.4-492ad633a7c1fd0990246fbd401f8438db0635c4fa550e36cb43b775527c157f","js-dgtable-0.5.2-bfe5ec294647feda55ba2f90bde0d374568a86efba113bfff8363c9e8f34af37","js-flot-0.8.3-6a01b63899fcd71d3e88646c1d9e81ca1d7937cf03770977570987e81b26d8fe","js-jquery-3.3.1-5d3188cc3ebaa3d2976301605f921eb24ec9ca825b83351e4eeb8eb4b22dd9f3","primitive-0.8.0.0-79a029355b4c47f541431a34a60def13110b01ecc59bbb2dd0ae5e832fe524ff","process-1.6.13.2","random-1.2.1.1-1a74f78224fb4b9c0290854a02b095a76191148a477857d7f21dcd68e5c2b4cf","time-1.11.1.1","transformers-0.5.6.2","unix-2.7.2.2","unordered-containers-0.2.19.1-86da5900c10586ba66016cb5b90cb5be35eac7b8f8e5d511594e55990fb9b7e7","utf8-string-1.0.2-3b60297ab3bd0b49e24ff62a4d011e876a1464182bd13b03752e8393de14f237"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"shake-0.19.7-e-shake-dffab5914106a6f7d61bd9c25caad4c6fb10925bc51610993593856eabe755de","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.16.1.0","binary-0.8.9.0","bytestring-0.11.3.0","deepseq-1.4.6.1","directory-1.3.6.2","extra-1.7.12-2ebaa460133d1ef6e5e06bbfa066f8d302f505e4a67498115edf41ac0ce1b283","filepath-1.4.2.2","filepattern-0.1.3-d9631d8baf926960f6eb6991bc1e7c256a8c1757d9ec9e8cb827d563cf27e3a3","hashable-1.4.2.0-9f364f21d03523f32ca22163ac5da2faa0f4cbfda68d9a08c95d216e04119750","heaps-0.4-492ad633a7c1fd0990246fbd401f8438db0635c4fa550e36cb43b775527c157f","js-dgtable-0.5.2-bfe5ec294647feda55ba2f90bde0d374568a86efba113bfff8363c9e8f34af37","js-flot-0.8.3-6a01b63899fcd71d3e88646c1d9e81ca1d7937cf03770977570987e81b26d8fe","js-jquery-3.3.1-5d3188cc3ebaa3d2976301605f921eb24ec9ca825b83351e4eeb8eb4b22dd9f3","primitive-0.8.0.0-79a029355b4c47f541431a34a60def13110b01ecc59bbb2dd0ae5e832fe524ff","process-1.6.13.2","random-1.2.1.1-1a74f78224fb4b9c0290854a02b095a76191148a477857d7f21dcd68e5c2b4cf","time-1.11.1.1","transformers-0.5.6.2","unix-2.7.2.2","unordered-containers-0.2.19.1-86da5900c10586ba66016cb5b90cb5be35eac7b8f8e5d511594e55990fb9b7e7","utf8-string-1.0.2-3b60297ab3bd0b49e24ff62a4d011e876a1464182bd13b03752e8393de14f237"],"exe-depends":[],"component-name":"exe:shake","bin-file":"/home/matt/.cabal/store/ghc-9.2.2/shake-0.19.7-e-shake-dffab5914106a6f7d61bd9c25caad4c6fb10925bc51610993593856eabe755de/bin/shake"},{"type":"configured","id":"splitmix-0.1.0.4-201c59ac932f856499a47c73ffe84a6be5b6dfd5db9ec6182775fe6b945f369c","pkg-name":"splitmix","pkg-version":"0.1.0.4","flags":{"optimised-mixer":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"db25c2e17967aa6b6046ab8b1b96ba3f344ca59a62b60fb6113d51ea305a3d8e","pkg-src-sha256":"6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa","depends":["base-4.16.1.0","deepseq-1.4.6.1"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"template-haskell-2.18.0.0","pkg-name":"template-haskell","pkg-version":"2.18.0.0","depends":["base-4.16.1.0","ghc-boot-th-9.2.2","ghc-prim-0.8.0","pretty-1.1.3.6"]},{"type":"pre-existing","id":"text-1.2.5.0","pkg-name":"text","pkg-version":"1.2.5.0","depends":["array-0.5.4.0","base-4.16.1.0","binary-0.8.9.0","bytestring-0.11.3.0","deepseq-1.4.6.1","ghc-prim-0.8.0","template-haskell-2.18.0.0"]},{"type":"pre-existing","id":"time-1.11.1.1","pkg-name":"time","pkg-version":"1.11.1.1","depends":["base-4.16.1.0","deepseq-1.4.6.1"]},{"type":"pre-existing","id":"transformers-0.5.6.2","pkg-name":"transformers","pkg-version":"0.5.6.2","depends":["base-4.16.1.0"]},{"type":"pre-existing","id":"unix-2.7.2.2","pkg-name":"unix","pkg-version":"2.7.2.2","depends":["base-4.16.1.0","bytestring-0.11.3.0","time-1.11.1.1"]},{"type":"configured","id":"unordered-containers-0.2.19.1-86da5900c10586ba66016cb5b90cb5be35eac7b8f8e5d511594e55990fb9b7e7","pkg-name":"unordered-containers","pkg-version":"0.2.19.1","flags":{"debug":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"9ad8972c2e913c37b1d4f0e1261517fd7a1b8c8a58077e057be69837e3dbaa00","pkg-src-sha256":"1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2","depends":["base-4.16.1.0","deepseq-1.4.6.1","hashable-1.4.2.0-9f364f21d03523f32ca22163ac5da2faa0f4cbfda68d9a08c95d216e04119750","template-haskell-2.18.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"utf8-string-1.0.2-3b60297ab3bd0b49e24ff62a4d011e876a1464182bd13b03752e8393de14f237","pkg-name":"utf8-string","pkg-version":"1.0.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"79416292186feeaf1f60e49ac5a1ffae9bf1b120e040a74bf0e81ca7f1d31d3f","pkg-src-sha256":"ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a","depends":["base-4.16.1.0","bytestring-0.11.3.0"],"exe-depends":[],"component-name":"lib"}]} \ No newline at end of file
+{"cabal-version":"3.8.1.0","cabal-lib-version":"3.8.1.0","compiler-id":"ghc-9.2.2","os":"linux","arch":"x86_64","install-plan":[{"type":"pre-existing","id":"Cabal-3.6.3.0","pkg-name":"Cabal","pkg-version":"3.6.3.0","depends":["array-0.5.4.0","base-4.16.1.0","binary-0.8.9.0","bytestring-0.11.3.0","containers-0.6.5.1","deepseq-1.4.6.1","directory-1.3.6.2","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","pretty-1.1.3.6","process-1.6.13.2","text-1.2.5.0","time-1.11.1.1","transformers-0.5.6.2","unix-2.7.2.2"]},{"type":"configured","id":"QuickCheck-2.14.2-fd6bc24ff3b5f8201c3071f6ca35f332d6b1353852d01e1b4e5ff25db746e149","pkg-name":"QuickCheck","pkg-version":"2.14.2","flags":{"old-random":false,"templatehaskell":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4ce29211223d5e6620ebceba34a3ca9ccf1c10c0cf387d48aea45599222ee5aa","pkg-src-sha256":"d87b6c85696b601175274361fa62217894401e401e150c3c5d4013ac53cd36f3","depends":["base-4.16.1.0","containers-0.6.5.1","deepseq-1.4.6.1","random-1.2.1.1-1a74f78224fb4b9c0290854a02b095a76191148a477857d7f21dcd68e5c2b4cf","splitmix-0.1.0.4-201c59ac932f856499a47c73ffe84a6be5b6dfd5db9ec6182775fe6b945f369c","template-haskell-2.18.0.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"array-0.5.4.0","pkg-name":"array","pkg-version":"0.5.4.0","depends":["base-4.16.1.0"]},{"type":"pre-existing","id":"base-4.16.1.0","pkg-name":"base","pkg-version":"4.16.1.0","depends":["ghc-bignum-1.2","ghc-prim-0.8.0","rts"]},{"type":"configured","id":"base16-bytestring-1.0.2.0-7d350effd7294677ead91dcc7892137a82d4e37839e8214dd3d9d4f446d67082","pkg-name":"base16-bytestring","pkg-version":"1.0.2.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"64abad7816ab8cabed8489e29f807b3a6f828e0b2cec0eae404323d69d36df9a","pkg-src-sha256":"1d5a91143ef0e22157536093ec8e59d226a68220ec89378d5dcaeea86472c784","depends":["base-4.16.1.0","bytestring-0.11.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"binary-0.8.9.0","pkg-name":"binary","pkg-version":"0.8.9.0","depends":["array-0.5.4.0","base-4.16.1.0","bytestring-0.11.3.0","containers-0.6.5.1"]},{"type":"pre-existing","id":"bytestring-0.11.3.0","pkg-name":"bytestring","pkg-version":"0.11.3.0","depends":["base-4.16.1.0","deepseq-1.4.6.1","ghc-prim-0.8.0","template-haskell-2.18.0.0"]},{"type":"configured","id":"clock-0.8.3-0c7c9e547a146527c99f2e7581131ba32cadfbda0704ef58b7c52090bd8615f6","pkg-name":"clock","pkg-version":"0.8.3","flags":{"llvm":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c","pkg-src-sha256":"845ce5db4c98cefd517323e005f87effceff886987305e421c4ef616dc0505d1","depends":["base-4.16.1.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"containers-0.6.5.1","pkg-name":"containers","pkg-version":"0.6.5.1","depends":["array-0.5.4.0","base-4.16.1.0","deepseq-1.4.6.1"]},{"type":"configured","id":"cryptohash-sha256-0.11.102.1-77d0e0e250721ad8fbb8386cc0b73155a840c70a76fd3c2e042053fa91dd7aa1","pkg-name":"cryptohash-sha256","pkg-version":"0.11.102.1","flags":{"exe":false,"use-cbits":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"72ce9095872eae653addca5f412ac8070d6282d8e1c8578c2237c33f2cbbf4bc","pkg-src-sha256":"73a7dc7163871a80837495039a099967b11f5c4fe70a118277842f7a713c6bf6","depends":["base-4.16.1.0","bytestring-0.11.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"data-array-byte-0.1.0.1-e7958b903e06231e1e247b429923d80ecc5674ee18a064ad9de8d6edc70e24e5","pkg-name":"data-array-byte","pkg-version":"0.1.0.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"2ef1bd3511e82ba56f7f23cd793dd2da84338a1e7c2cbea5b151417afe3baada","pkg-src-sha256":"1bb6eca0b3e02d057fe7f4e14c81ef395216f421ab30fdaa1b18017c9c025600","depends":["base-4.16.1.0","deepseq-1.4.6.1","template-haskell-2.18.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"deepseq-1.4.6.1","pkg-name":"deepseq","pkg-version":"1.4.6.1","depends":["array-0.5.4.0","base-4.16.1.0"]},{"type":"pre-existing","id":"directory-1.3.6.2","pkg-name":"directory","pkg-version":"1.3.6.2","depends":["base-4.16.1.0","filepath-1.4.2.2","time-1.11.1.1","unix-2.7.2.2"]},{"type":"configured","id":"extra-1.7.12-2ebaa460133d1ef6e5e06bbfa066f8d302f505e4a67498115edf41ac0ce1b283","pkg-name":"extra","pkg-version":"1.7.12","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3ac58d7341976173d1052e7b2837d119212d9afcf911735667c7f1ab67aec25f","pkg-src-sha256":"e571a9ec1d8865f0fbb0e0ba1eb575f783b0365c80db19b54a93600bae43b03c","depends":["base-4.16.1.0","clock-0.8.3-0c7c9e547a146527c99f2e7581131ba32cadfbda0704ef58b7c52090bd8615f6","directory-1.3.6.2","filepath-1.4.2.2","process-1.6.13.2","time-1.11.1.1","unix-2.7.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"filepath-1.4.2.2","pkg-name":"filepath","pkg-version":"1.4.2.2","depends":["base-4.16.1.0"]},{"type":"configured","id":"filepattern-0.1.3-d9631d8baf926960f6eb6991bc1e7c256a8c1757d9ec9e8cb827d563cf27e3a3","pkg-name":"filepattern","pkg-version":"0.1.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"372c1733d83b90045eb29da9f010fed79bfef8771ce65eb126a1d83ecc54a9a2","pkg-src-sha256":"cc445d439ea2f65cac7604d3578aa2c3a62e5a91dc989f4ce5b3390db9e59636","depends":["base-4.16.1.0","directory-1.3.6.2","extra-1.7.12-2ebaa460133d1ef6e5e06bbfa066f8d302f505e4a67498115edf41ac0ce1b283","filepath-1.4.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"ghc-bignum-1.2","pkg-name":"ghc-bignum","pkg-version":"1.2","depends":["ghc-prim-0.8.0"]},{"type":"pre-existing","id":"ghc-boot-th-9.2.2","pkg-name":"ghc-boot-th","pkg-version":"9.2.2","depends":["base-4.16.1.0"]},{"type":"pre-existing","id":"ghc-prim-0.8.0","pkg-name":"ghc-prim","pkg-version":"0.8.0","depends":["rts"]},{"type":"configured","id":"hadrian-0.1.0.0-inplace-hadrian","pkg-name":"hadrian","pkg-version":"0.1.0.0","flags":{"selftest":true,"threaded":true},"style":"local","pkg-src":{"type":"local","path":"/home/matt/ghc-rodrigo/hadrian/."},"dist-dir":"/home/matt/ghc-rodrigo/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.2.2/hadrian-0.1.0.0/x/hadrian","build-info":"/home/matt/ghc-rodrigo/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.2.2/hadrian-0.1.0.0/x/hadrian/build-info.json","depends":["Cabal-3.6.3.0","QuickCheck-2.14.2-fd6bc24ff3b5f8201c3071f6ca35f332d6b1353852d01e1b4e5ff25db746e149","base-4.16.1.0","base16-bytestring-1.0.2.0-7d350effd7294677ead91dcc7892137a82d4e37839e8214dd3d9d4f446d67082","bytestring-0.11.3.0","containers-0.6.5.1","cryptohash-sha256-0.11.102.1-77d0e0e250721ad8fbb8386cc0b73155a840c70a76fd3c2e042053fa91dd7aa1","directory-1.3.6.2","extra-1.7.12-2ebaa460133d1ef6e5e06bbfa066f8d302f505e4a67498115edf41ac0ce1b283","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","shake-0.19.7-4ae8d8886d8f99edbfe8169a6bb88c87e09313ef8011e4b71d3da02dba0d9060","text-1.2.5.0","time-1.11.1.1","transformers-0.5.6.2","unordered-containers-0.2.19.1-86da5900c10586ba66016cb5b90cb5be35eac7b8f8e5d511594e55990fb9b7e7"],"exe-depends":[],"component-name":"exe:hadrian","bin-file":"/home/matt/ghc-rodrigo/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.2.2/hadrian-0.1.0.0/x/hadrian/build/hadrian/hadrian"},{"type":"configured","id":"hashable-1.4.2.0-9f364f21d03523f32ca22163ac5da2faa0f4cbfda68d9a08c95d216e04119750","pkg-name":"hashable","pkg-version":"1.4.2.0","flags":{"integer-gmp":true,"random-initial-seed":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"585792335d5541dba78fa8dfcb291a89cd5812a281825ff7a44afa296ab5d58a","pkg-src-sha256":"1b4000ea82b81f69d46d0af4152c10c6303873510738e24cfc4767760d30e3f8","depends":["base-4.16.1.0","bytestring-0.11.3.0","containers-0.6.5.1","data-array-byte-0.1.0.1-e7958b903e06231e1e247b429923d80ecc5674ee18a064ad9de8d6edc70e24e5","deepseq-1.4.6.1","filepath-1.4.2.2","ghc-bignum-1.2","ghc-prim-0.8.0","text-1.2.5.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"heaps-0.4-492ad633a7c1fd0990246fbd401f8438db0635c4fa550e36cb43b775527c157f","pkg-name":"heaps","pkg-version":"0.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"66b19fcd813b0e4db3e0bac541bd46606c3b13d3d081d9f9666f4be0f5ff14b8","pkg-src-sha256":"89329df8b95ae99ef272e41e7a2d0fe2f1bb7eacfcc34bc01664414b33067cfd","depends":["base-4.16.1.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-dgtable-0.5.2-bfe5ec294647feda55ba2f90bde0d374568a86efba113bfff8363c9e8f34af37","pkg-name":"js-dgtable","pkg-version":"0.5.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f75cb4fa53c88c65794becdd48eb0d3b2b8abd89a3d5c19e87af91f5225c15e4","pkg-src-sha256":"e28dd65bee8083b17210134e22e01c6349dc33c3b7bd17705973cd014e9f20ac","depends":["base-4.16.1.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-flot-0.8.3-6a01b63899fcd71d3e88646c1d9e81ca1d7937cf03770977570987e81b26d8fe","pkg-name":"js-flot","pkg-version":"0.8.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4c1c447a9a2fba0adba6d30678302a30c32b9dfde9e7aa9e9156483e1545096d","pkg-src-sha256":"1ba2f2a6b8d85da76c41f526c98903cbb107f8642e506c072c1e7e3c20fe5e7a","depends":["base-4.16.1.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-jquery-3.3.1-5d3188cc3ebaa3d2976301605f921eb24ec9ca825b83351e4eeb8eb4b22dd9f3","pkg-name":"js-jquery","pkg-version":"3.3.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"59ab6c79159549ef94b584abce8e6d3b336014c2cce1337b59a8f637e2856df5","pkg-src-sha256":"e0e0681f0da1130ede4e03a051630ea439c458cb97216cdb01771ebdbe44069b","depends":["base-4.16.1.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"mtl-2.2.2","pkg-name":"mtl","pkg-version":"2.2.2","depends":["base-4.16.1.0","transformers-0.5.6.2"]},{"type":"pre-existing","id":"parsec-3.1.15.0","pkg-name":"parsec","pkg-version":"3.1.15.0","depends":["base-4.16.1.0","bytestring-0.11.3.0","mtl-2.2.2","text-1.2.5.0"]},{"type":"pre-existing","id":"pretty-1.1.3.6","pkg-name":"pretty","pkg-version":"1.1.3.6","depends":["base-4.16.1.0","deepseq-1.4.6.1","ghc-prim-0.8.0"]},{"type":"configured","id":"primitive-0.8.0.0-79a029355b4c47f541431a34a60def13110b01ecc59bbb2dd0ae5e832fe524ff","pkg-name":"primitive","pkg-version":"0.8.0.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"826bf2a702a26ef87532a135808abad69d74f70ead39f26c06d034b1f0537a19","pkg-src-sha256":"5553c21b4a789f9b591eed69e598cc58484c274af29250e517b5a8bcc62b995f","depends":["base-4.16.1.0","data-array-byte-0.1.0.1-e7958b903e06231e1e247b429923d80ecc5674ee18a064ad9de8d6edc70e24e5","deepseq-1.4.6.1","template-haskell-2.18.0.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"process-1.6.13.2","pkg-name":"process","pkg-version":"1.6.13.2","depends":["base-4.16.1.0","deepseq-1.4.6.1","directory-1.3.6.2","filepath-1.4.2.2","unix-2.7.2.2"]},{"type":"configured","id":"random-1.2.1.1-1a74f78224fb4b9c0290854a02b095a76191148a477857d7f21dcd68e5c2b4cf","pkg-name":"random","pkg-version":"1.2.1.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"dea1f11e5569332dc6c8efaad1cb301016a5587b6754943a49f9de08ae0e56d9","pkg-src-sha256":"3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76","depends":["base-4.16.1.0","bytestring-0.11.3.0","deepseq-1.4.6.1","mtl-2.2.2","splitmix-0.1.0.4-201c59ac932f856499a47c73ffe84a6be5b6dfd5db9ec6182775fe6b945f369c"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"rts","pkg-name":"rts","pkg-version":"1.0.2","depends":[]},{"type":"configured","id":"shake-0.19.7-4ae8d8886d8f99edbfe8169a6bb88c87e09313ef8011e4b71d3da02dba0d9060","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.16.1.0","binary-0.8.9.0","bytestring-0.11.3.0","deepseq-1.4.6.1","directory-1.3.6.2","extra-1.7.12-2ebaa460133d1ef6e5e06bbfa066f8d302f505e4a67498115edf41ac0ce1b283","filepath-1.4.2.2","filepattern-0.1.3-d9631d8baf926960f6eb6991bc1e7c256a8c1757d9ec9e8cb827d563cf27e3a3","hashable-1.4.2.0-9f364f21d03523f32ca22163ac5da2faa0f4cbfda68d9a08c95d216e04119750","heaps-0.4-492ad633a7c1fd0990246fbd401f8438db0635c4fa550e36cb43b775527c157f","js-dgtable-0.5.2-bfe5ec294647feda55ba2f90bde0d374568a86efba113bfff8363c9e8f34af37","js-flot-0.8.3-6a01b63899fcd71d3e88646c1d9e81ca1d7937cf03770977570987e81b26d8fe","js-jquery-3.3.1-5d3188cc3ebaa3d2976301605f921eb24ec9ca825b83351e4eeb8eb4b22dd9f3","primitive-0.8.0.0-79a029355b4c47f541431a34a60def13110b01ecc59bbb2dd0ae5e832fe524ff","process-1.6.13.2","random-1.2.1.1-1a74f78224fb4b9c0290854a02b095a76191148a477857d7f21dcd68e5c2b4cf","time-1.11.1.1","transformers-0.5.6.2","unix-2.7.2.2","unordered-containers-0.2.19.1-86da5900c10586ba66016cb5b90cb5be35eac7b8f8e5d511594e55990fb9b7e7","utf8-string-1.0.2-3b60297ab3bd0b49e24ff62a4d011e876a1464182bd13b03752e8393de14f237"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"shake-0.19.7-e-shake-dffab5914106a6f7d61bd9c25caad4c6fb10925bc51610993593856eabe755de","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.16.1.0","binary-0.8.9.0","bytestring-0.11.3.0","deepseq-1.4.6.1","directory-1.3.6.2","extra-1.7.12-2ebaa460133d1ef6e5e06bbfa066f8d302f505e4a67498115edf41ac0ce1b283","filepath-1.4.2.2","filepattern-0.1.3-d9631d8baf926960f6eb6991bc1e7c256a8c1757d9ec9e8cb827d563cf27e3a3","hashable-1.4.2.0-9f364f21d03523f32ca22163ac5da2faa0f4cbfda68d9a08c95d216e04119750","heaps-0.4-492ad633a7c1fd0990246fbd401f8438db0635c4fa550e36cb43b775527c157f","js-dgtable-0.5.2-bfe5ec294647feda55ba2f90bde0d374568a86efba113bfff8363c9e8f34af37","js-flot-0.8.3-6a01b63899fcd71d3e88646c1d9e81ca1d7937cf03770977570987e81b26d8fe","js-jquery-3.3.1-5d3188cc3ebaa3d2976301605f921eb24ec9ca825b83351e4eeb8eb4b22dd9f3","primitive-0.8.0.0-79a029355b4c47f541431a34a60def13110b01ecc59bbb2dd0ae5e832fe524ff","process-1.6.13.2","random-1.2.1.1-1a74f78224fb4b9c0290854a02b095a76191148a477857d7f21dcd68e5c2b4cf","time-1.11.1.1","transformers-0.5.6.2","unix-2.7.2.2","unordered-containers-0.2.19.1-86da5900c10586ba66016cb5b90cb5be35eac7b8f8e5d511594e55990fb9b7e7","utf8-string-1.0.2-3b60297ab3bd0b49e24ff62a4d011e876a1464182bd13b03752e8393de14f237"],"exe-depends":[],"component-name":"exe:shake","bin-file":"/home/matt/.cabal/store/ghc-9.2.2/shake-0.19.7-e-shake-dffab5914106a6f7d61bd9c25caad4c6fb10925bc51610993593856eabe755de/bin/shake"},{"type":"configured","id":"splitmix-0.1.0.4-201c59ac932f856499a47c73ffe84a6be5b6dfd5db9ec6182775fe6b945f369c","pkg-name":"splitmix","pkg-version":"0.1.0.4","flags":{"optimised-mixer":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"db25c2e17967aa6b6046ab8b1b96ba3f344ca59a62b60fb6113d51ea305a3d8e","pkg-src-sha256":"6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa","depends":["base-4.16.1.0","deepseq-1.4.6.1"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"template-haskell-2.18.0.0","pkg-name":"template-haskell","pkg-version":"2.18.0.0","depends":["base-4.16.1.0","ghc-boot-th-9.2.2","ghc-prim-0.8.0","pretty-1.1.3.6"]},{"type":"pre-existing","id":"text-1.2.5.0","pkg-name":"text","pkg-version":"1.2.5.0","depends":["array-0.5.4.0","base-4.16.1.0","binary-0.8.9.0","bytestring-0.11.3.0","deepseq-1.4.6.1","ghc-prim-0.8.0","template-haskell-2.18.0.0"]},{"type":"pre-existing","id":"time-1.11.1.1","pkg-name":"time","pkg-version":"1.11.1.1","depends":["base-4.16.1.0","deepseq-1.4.6.1"]},{"type":"pre-existing","id":"transformers-0.5.6.2","pkg-name":"transformers","pkg-version":"0.5.6.2","depends":["base-4.16.1.0"]},{"type":"pre-existing","id":"unix-2.7.2.2","pkg-name":"unix","pkg-version":"2.7.2.2","depends":["base-4.16.1.0","bytestring-0.11.3.0","time-1.11.1.1"]},{"type":"configured","id":"unordered-containers-0.2.19.1-86da5900c10586ba66016cb5b90cb5be35eac7b8f8e5d511594e55990fb9b7e7","pkg-name":"unordered-containers","pkg-version":"0.2.19.1","flags":{"debug":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"9ad8972c2e913c37b1d4f0e1261517fd7a1b8c8a58077e057be69837e3dbaa00","pkg-src-sha256":"1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2","depends":["base-4.16.1.0","deepseq-1.4.6.1","hashable-1.4.2.0-9f364f21d03523f32ca22163ac5da2faa0f4cbfda68d9a08c95d216e04119750","template-haskell-2.18.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"utf8-string-1.0.2-3b60297ab3bd0b49e24ff62a4d011e876a1464182bd13b03752e8393de14f237","pkg-name":"utf8-string","pkg-version":"1.0.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"79416292186feeaf1f60e49ac5a1ffae9bf1b120e040a74bf0e81ca7f1d31d3f","pkg-src-sha256":"ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a","depends":["base-4.16.1.0","bytestring-0.11.3.0"],"exe-depends":[],"component-name":"lib"}]} \ No newline at end of file
diff --git a/hadrian/bootstrap/plan-9_2_3.json b/hadrian/bootstrap/plan-9_2_3.json
index ba4d907bcf..304e13876d 100644
--- a/hadrian/bootstrap/plan-9_2_3.json
+++ b/hadrian/bootstrap/plan-9_2_3.json
@@ -1 +1 @@
-{"cabal-version":"3.8.1.0","cabal-lib-version":"3.8.1.0","compiler-id":"ghc-9.2.3","os":"linux","arch":"x86_64","install-plan":[{"type":"pre-existing","id":"Cabal-3.6.3.0","pkg-name":"Cabal","pkg-version":"3.6.3.0","depends":["array-0.5.4.0","base-4.16.2.0","binary-0.8.9.0","bytestring-0.11.3.1","containers-0.6.5.1","deepseq-1.4.6.1","directory-1.3.6.2","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","pretty-1.1.3.6","process-1.6.13.2","text-1.2.5.0","time-1.11.1.1","transformers-0.5.6.2","unix-2.7.2.2"]},{"type":"configured","id":"QuickCheck-2.14.2-28383ec8c634951270f884fff9301d3d43ed48bb03153402d1ed50f540469641","pkg-name":"QuickCheck","pkg-version":"2.14.2","flags":{"old-random":false,"templatehaskell":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4ce29211223d5e6620ebceba34a3ca9ccf1c10c0cf387d48aea45599222ee5aa","pkg-src-sha256":"d87b6c85696b601175274361fa62217894401e401e150c3c5d4013ac53cd36f3","depends":["base-4.16.2.0","containers-0.6.5.1","deepseq-1.4.6.1","random-1.2.1.1-40759a416704d10d86283d548100f6265a34bcb854377f345fbde64bf698fad0","splitmix-0.1.0.4-f5816d86b79c25a60eb0e68dec4d61b22701a8b4fd7de88550a4b0606cf31730","template-haskell-2.18.0.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"array-0.5.4.0","pkg-name":"array","pkg-version":"0.5.4.0","depends":["base-4.16.2.0"]},{"type":"pre-existing","id":"base-4.16.2.0","pkg-name":"base","pkg-version":"4.16.2.0","depends":["ghc-bignum-1.2","ghc-prim-0.8.0","rts"]},{"type":"pre-existing","id":"binary-0.8.9.0","pkg-name":"binary","pkg-version":"0.8.9.0","depends":["array-0.5.4.0","base-4.16.2.0","bytestring-0.11.3.1","containers-0.6.5.1"]},{"type":"pre-existing","id":"bytestring-0.11.3.1","pkg-name":"bytestring","pkg-version":"0.11.3.1","depends":["base-4.16.2.0","deepseq-1.4.6.1","ghc-prim-0.8.0","template-haskell-2.18.0.0"]},{"type":"configured","id":"clock-0.8.3-137df44468d5edff5f854d1fdd7a1d931405a677f532203f6514e2afb4e770bc","pkg-name":"clock","pkg-version":"0.8.3","flags":{"llvm":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c","pkg-src-sha256":"845ce5db4c98cefd517323e005f87effceff886987305e421c4ef616dc0505d1","depends":["base-4.16.2.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"containers-0.6.5.1","pkg-name":"containers","pkg-version":"0.6.5.1","depends":["array-0.5.4.0","base-4.16.2.0","deepseq-1.4.6.1"]},{"type":"configured","id":"data-array-byte-0.1.0.1-4e207c2b115249dcadfc85271a70e751fcfcae254ff5818252d7353e3d8cb608","pkg-name":"data-array-byte","pkg-version":"0.1.0.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"2ef1bd3511e82ba56f7f23cd793dd2da84338a1e7c2cbea5b151417afe3baada","pkg-src-sha256":"1bb6eca0b3e02d057fe7f4e14c81ef395216f421ab30fdaa1b18017c9c025600","depends":["base-4.16.2.0","deepseq-1.4.6.1","template-haskell-2.18.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"deepseq-1.4.6.1","pkg-name":"deepseq","pkg-version":"1.4.6.1","depends":["array-0.5.4.0","base-4.16.2.0"]},{"type":"pre-existing","id":"directory-1.3.6.2","pkg-name":"directory","pkg-version":"1.3.6.2","depends":["base-4.16.2.0","filepath-1.4.2.2","time-1.11.1.1","unix-2.7.2.2"]},{"type":"configured","id":"extra-1.7.12-03735b64c6d5b3b50ba8f2abe4c1af7c3d5cfe799b9d10ac62086256962a28fa","pkg-name":"extra","pkg-version":"1.7.12","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3ac58d7341976173d1052e7b2837d119212d9afcf911735667c7f1ab67aec25f","pkg-src-sha256":"e571a9ec1d8865f0fbb0e0ba1eb575f783b0365c80db19b54a93600bae43b03c","depends":["base-4.16.2.0","clock-0.8.3-137df44468d5edff5f854d1fdd7a1d931405a677f532203f6514e2afb4e770bc","directory-1.3.6.2","filepath-1.4.2.2","process-1.6.13.2","time-1.11.1.1","unix-2.7.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"filepath-1.4.2.2","pkg-name":"filepath","pkg-version":"1.4.2.2","depends":["base-4.16.2.0"]},{"type":"configured","id":"filepattern-0.1.3-c39c77f00628ef3ce634a34cee62a898b5a2c01b16047d7bfab8cb6aa8c3ed4f","pkg-name":"filepattern","pkg-version":"0.1.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"372c1733d83b90045eb29da9f010fed79bfef8771ce65eb126a1d83ecc54a9a2","pkg-src-sha256":"cc445d439ea2f65cac7604d3578aa2c3a62e5a91dc989f4ce5b3390db9e59636","depends":["base-4.16.2.0","directory-1.3.6.2","extra-1.7.12-03735b64c6d5b3b50ba8f2abe4c1af7c3d5cfe799b9d10ac62086256962a28fa","filepath-1.4.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"ghc-bignum-1.2","pkg-name":"ghc-bignum","pkg-version":"1.2","depends":["ghc-prim-0.8.0"]},{"type":"pre-existing","id":"ghc-boot-th-9.2.3","pkg-name":"ghc-boot-th","pkg-version":"9.2.3","depends":["base-4.16.2.0"]},{"type":"pre-existing","id":"ghc-prim-0.8.0","pkg-name":"ghc-prim","pkg-version":"0.8.0","depends":["rts"]},{"type":"configured","id":"hadrian-0.1.0.0-inplace-hadrian","pkg-name":"hadrian","pkg-version":"0.1.0.0","flags":{"selftest":true,"threaded":true},"style":"local","pkg-src":{"type":"local","path":"/home/matt/ghc-scratch/hadrian/."},"dist-dir":"/home/matt/ghc-scratch/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.2.3/hadrian-0.1.0.0/x/hadrian","build-info":"/home/matt/ghc-scratch/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.2.3/hadrian-0.1.0.0/x/hadrian/build-info.json","depends":["Cabal-3.6.3.0","QuickCheck-2.14.2-28383ec8c634951270f884fff9301d3d43ed48bb03153402d1ed50f540469641","base-4.16.2.0","bytestring-0.11.3.1","containers-0.6.5.1","directory-1.3.6.2","extra-1.7.12-03735b64c6d5b3b50ba8f2abe4c1af7c3d5cfe799b9d10ac62086256962a28fa","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","shake-0.19.7-08211eabf258a36d817195dd1d55c2ad9c41ba74e9e5a2bfb4d5d440a4779cf2","text-1.2.5.0","time-1.11.1.1","transformers-0.5.6.2","unordered-containers-0.2.19.1-a82a624e45af105b88150facc7651e298009a39b844f8bde51b8dd88cf5b4916"],"exe-depends":[],"component-name":"exe:hadrian","bin-file":"/home/matt/ghc-scratch/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.2.3/hadrian-0.1.0.0/x/hadrian/build/hadrian/hadrian"},{"type":"configured","id":"hashable-1.4.2.0-31f8de08b287590549988e434ce1ffc3d917501f7250186aa981d2c108e32b76","pkg-name":"hashable","pkg-version":"1.4.2.0","flags":{"integer-gmp":true,"random-initial-seed":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"585792335d5541dba78fa8dfcb291a89cd5812a281825ff7a44afa296ab5d58a","pkg-src-sha256":"1b4000ea82b81f69d46d0af4152c10c6303873510738e24cfc4767760d30e3f8","depends":["base-4.16.2.0","bytestring-0.11.3.1","containers-0.6.5.1","data-array-byte-0.1.0.1-4e207c2b115249dcadfc85271a70e751fcfcae254ff5818252d7353e3d8cb608","deepseq-1.4.6.1","filepath-1.4.2.2","ghc-bignum-1.2","ghc-prim-0.8.0","text-1.2.5.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"heaps-0.4-d8a49d6a489879d9c4153538b9dce8f05178088f9abe624f0b9b7f1bf9b767bd","pkg-name":"heaps","pkg-version":"0.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"66b19fcd813b0e4db3e0bac541bd46606c3b13d3d081d9f9666f4be0f5ff14b8","pkg-src-sha256":"89329df8b95ae99ef272e41e7a2d0fe2f1bb7eacfcc34bc01664414b33067cfd","depends":["base-4.16.2.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-dgtable-0.5.2-4ccd577f77dcd9aad5f76085357cbca8fac52265b3de9bef5751e8c318bf1092","pkg-name":"js-dgtable","pkg-version":"0.5.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f75cb4fa53c88c65794becdd48eb0d3b2b8abd89a3d5c19e87af91f5225c15e4","pkg-src-sha256":"e28dd65bee8083b17210134e22e01c6349dc33c3b7bd17705973cd014e9f20ac","depends":["base-4.16.2.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-flot-0.8.3-82abb5a93c9421fbaa227436e44b7f8b7ddc9b9978f04fce90b53c8e0012c6a0","pkg-name":"js-flot","pkg-version":"0.8.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4c1c447a9a2fba0adba6d30678302a30c32b9dfde9e7aa9e9156483e1545096d","pkg-src-sha256":"1ba2f2a6b8d85da76c41f526c98903cbb107f8642e506c072c1e7e3c20fe5e7a","depends":["base-4.16.2.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-jquery-3.3.1-3490eb5866089e8998fb0b2aa39a1322039178695f200e12962250c13149e26a","pkg-name":"js-jquery","pkg-version":"3.3.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"59ab6c79159549ef94b584abce8e6d3b336014c2cce1337b59a8f637e2856df5","pkg-src-sha256":"e0e0681f0da1130ede4e03a051630ea439c458cb97216cdb01771ebdbe44069b","depends":["base-4.16.2.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"mtl-2.2.2","pkg-name":"mtl","pkg-version":"2.2.2","depends":["base-4.16.2.0","transformers-0.5.6.2"]},{"type":"pre-existing","id":"parsec-3.1.15.0","pkg-name":"parsec","pkg-version":"3.1.15.0","depends":["base-4.16.2.0","bytestring-0.11.3.1","mtl-2.2.2","text-1.2.5.0"]},{"type":"pre-existing","id":"pretty-1.1.3.6","pkg-name":"pretty","pkg-version":"1.1.3.6","depends":["base-4.16.2.0","deepseq-1.4.6.1","ghc-prim-0.8.0"]},{"type":"configured","id":"primitive-0.8.0.0-b4bd4d9d22d69d55dc4d45ece758a7a938f10a7001e1b9163976d63d2dc558a2","pkg-name":"primitive","pkg-version":"0.8.0.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"826bf2a702a26ef87532a135808abad69d74f70ead39f26c06d034b1f0537a19","pkg-src-sha256":"5553c21b4a789f9b591eed69e598cc58484c274af29250e517b5a8bcc62b995f","depends":["base-4.16.2.0","data-array-byte-0.1.0.1-4e207c2b115249dcadfc85271a70e751fcfcae254ff5818252d7353e3d8cb608","deepseq-1.4.6.1","template-haskell-2.18.0.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"process-1.6.13.2","pkg-name":"process","pkg-version":"1.6.13.2","depends":["base-4.16.2.0","deepseq-1.4.6.1","directory-1.3.6.2","filepath-1.4.2.2","unix-2.7.2.2"]},{"type":"configured","id":"random-1.2.1.1-40759a416704d10d86283d548100f6265a34bcb854377f345fbde64bf698fad0","pkg-name":"random","pkg-version":"1.2.1.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"dea1f11e5569332dc6c8efaad1cb301016a5587b6754943a49f9de08ae0e56d9","pkg-src-sha256":"3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76","depends":["base-4.16.2.0","bytestring-0.11.3.1","deepseq-1.4.6.1","mtl-2.2.2","splitmix-0.1.0.4-f5816d86b79c25a60eb0e68dec4d61b22701a8b4fd7de88550a4b0606cf31730"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"rts","pkg-name":"rts","pkg-version":"1.0.2","depends":[]},{"type":"configured","id":"shake-0.19.7-08211eabf258a36d817195dd1d55c2ad9c41ba74e9e5a2bfb4d5d440a4779cf2","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.16.2.0","binary-0.8.9.0","bytestring-0.11.3.1","deepseq-1.4.6.1","directory-1.3.6.2","extra-1.7.12-03735b64c6d5b3b50ba8f2abe4c1af7c3d5cfe799b9d10ac62086256962a28fa","filepath-1.4.2.2","filepattern-0.1.3-c39c77f00628ef3ce634a34cee62a898b5a2c01b16047d7bfab8cb6aa8c3ed4f","hashable-1.4.2.0-31f8de08b287590549988e434ce1ffc3d917501f7250186aa981d2c108e32b76","heaps-0.4-d8a49d6a489879d9c4153538b9dce8f05178088f9abe624f0b9b7f1bf9b767bd","js-dgtable-0.5.2-4ccd577f77dcd9aad5f76085357cbca8fac52265b3de9bef5751e8c318bf1092","js-flot-0.8.3-82abb5a93c9421fbaa227436e44b7f8b7ddc9b9978f04fce90b53c8e0012c6a0","js-jquery-3.3.1-3490eb5866089e8998fb0b2aa39a1322039178695f200e12962250c13149e26a","primitive-0.8.0.0-b4bd4d9d22d69d55dc4d45ece758a7a938f10a7001e1b9163976d63d2dc558a2","process-1.6.13.2","random-1.2.1.1-40759a416704d10d86283d548100f6265a34bcb854377f345fbde64bf698fad0","time-1.11.1.1","transformers-0.5.6.2","unix-2.7.2.2","unordered-containers-0.2.19.1-a82a624e45af105b88150facc7651e298009a39b844f8bde51b8dd88cf5b4916","utf8-string-1.0.2-118917811093d53a6e91865006ec9fa2038310da3ed3410e4fd66982940e44d0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"shake-0.19.7-e-shake-5c165ed7345c5b65ece21297581f83d9346c178a28a5419b64162a1356501914","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.16.2.0","binary-0.8.9.0","bytestring-0.11.3.1","deepseq-1.4.6.1","directory-1.3.6.2","extra-1.7.12-03735b64c6d5b3b50ba8f2abe4c1af7c3d5cfe799b9d10ac62086256962a28fa","filepath-1.4.2.2","filepattern-0.1.3-c39c77f00628ef3ce634a34cee62a898b5a2c01b16047d7bfab8cb6aa8c3ed4f","hashable-1.4.2.0-31f8de08b287590549988e434ce1ffc3d917501f7250186aa981d2c108e32b76","heaps-0.4-d8a49d6a489879d9c4153538b9dce8f05178088f9abe624f0b9b7f1bf9b767bd","js-dgtable-0.5.2-4ccd577f77dcd9aad5f76085357cbca8fac52265b3de9bef5751e8c318bf1092","js-flot-0.8.3-82abb5a93c9421fbaa227436e44b7f8b7ddc9b9978f04fce90b53c8e0012c6a0","js-jquery-3.3.1-3490eb5866089e8998fb0b2aa39a1322039178695f200e12962250c13149e26a","primitive-0.8.0.0-b4bd4d9d22d69d55dc4d45ece758a7a938f10a7001e1b9163976d63d2dc558a2","process-1.6.13.2","random-1.2.1.1-40759a416704d10d86283d548100f6265a34bcb854377f345fbde64bf698fad0","time-1.11.1.1","transformers-0.5.6.2","unix-2.7.2.2","unordered-containers-0.2.19.1-a82a624e45af105b88150facc7651e298009a39b844f8bde51b8dd88cf5b4916","utf8-string-1.0.2-118917811093d53a6e91865006ec9fa2038310da3ed3410e4fd66982940e44d0"],"exe-depends":[],"component-name":"exe:shake","bin-file":"/home/matt/.cabal/store/ghc-9.2.3/shake-0.19.7-e-shake-5c165ed7345c5b65ece21297581f83d9346c178a28a5419b64162a1356501914/bin/shake"},{"type":"configured","id":"splitmix-0.1.0.4-f5816d86b79c25a60eb0e68dec4d61b22701a8b4fd7de88550a4b0606cf31730","pkg-name":"splitmix","pkg-version":"0.1.0.4","flags":{"optimised-mixer":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"db25c2e17967aa6b6046ab8b1b96ba3f344ca59a62b60fb6113d51ea305a3d8e","pkg-src-sha256":"6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa","depends":["base-4.16.2.0","deepseq-1.4.6.1"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"template-haskell-2.18.0.0","pkg-name":"template-haskell","pkg-version":"2.18.0.0","depends":["base-4.16.2.0","ghc-boot-th-9.2.3","ghc-prim-0.8.0","pretty-1.1.3.6"]},{"type":"pre-existing","id":"text-1.2.5.0","pkg-name":"text","pkg-version":"1.2.5.0","depends":["array-0.5.4.0","base-4.16.2.0","binary-0.8.9.0","bytestring-0.11.3.1","deepseq-1.4.6.1","ghc-prim-0.8.0","template-haskell-2.18.0.0"]},{"type":"pre-existing","id":"time-1.11.1.1","pkg-name":"time","pkg-version":"1.11.1.1","depends":["base-4.16.2.0","deepseq-1.4.6.1"]},{"type":"pre-existing","id":"transformers-0.5.6.2","pkg-name":"transformers","pkg-version":"0.5.6.2","depends":["base-4.16.2.0"]},{"type":"pre-existing","id":"unix-2.7.2.2","pkg-name":"unix","pkg-version":"2.7.2.2","depends":["base-4.16.2.0","bytestring-0.11.3.1","time-1.11.1.1"]},{"type":"configured","id":"unordered-containers-0.2.19.1-a82a624e45af105b88150facc7651e298009a39b844f8bde51b8dd88cf5b4916","pkg-name":"unordered-containers","pkg-version":"0.2.19.1","flags":{"debug":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"9ad8972c2e913c37b1d4f0e1261517fd7a1b8c8a58077e057be69837e3dbaa00","pkg-src-sha256":"1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2","depends":["base-4.16.2.0","deepseq-1.4.6.1","hashable-1.4.2.0-31f8de08b287590549988e434ce1ffc3d917501f7250186aa981d2c108e32b76","template-haskell-2.18.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"utf8-string-1.0.2-118917811093d53a6e91865006ec9fa2038310da3ed3410e4fd66982940e44d0","pkg-name":"utf8-string","pkg-version":"1.0.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"79416292186feeaf1f60e49ac5a1ffae9bf1b120e040a74bf0e81ca7f1d31d3f","pkg-src-sha256":"ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a","depends":["base-4.16.2.0","bytestring-0.11.3.1"],"exe-depends":[],"component-name":"lib"}]} \ No newline at end of file
+{"cabal-version":"3.8.1.0","cabal-lib-version":"3.8.1.0","compiler-id":"ghc-9.2.3","os":"linux","arch":"x86_64","install-plan":[{"type":"pre-existing","id":"Cabal-3.6.3.0","pkg-name":"Cabal","pkg-version":"3.6.3.0","depends":["array-0.5.4.0","base-4.16.2.0","binary-0.8.9.0","bytestring-0.11.3.1","containers-0.6.5.1","deepseq-1.4.6.1","directory-1.3.6.2","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","pretty-1.1.3.6","process-1.6.13.2","text-1.2.5.0","time-1.11.1.1","transformers-0.5.6.2","unix-2.7.2.2"]},{"type":"configured","id":"QuickCheck-2.14.2-28383ec8c634951270f884fff9301d3d43ed48bb03153402d1ed50f540469641","pkg-name":"QuickCheck","pkg-version":"2.14.2","flags":{"old-random":false,"templatehaskell":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4ce29211223d5e6620ebceba34a3ca9ccf1c10c0cf387d48aea45599222ee5aa","pkg-src-sha256":"d87b6c85696b601175274361fa62217894401e401e150c3c5d4013ac53cd36f3","depends":["base-4.16.2.0","containers-0.6.5.1","deepseq-1.4.6.1","random-1.2.1.1-40759a416704d10d86283d548100f6265a34bcb854377f345fbde64bf698fad0","splitmix-0.1.0.4-f5816d86b79c25a60eb0e68dec4d61b22701a8b4fd7de88550a4b0606cf31730","template-haskell-2.18.0.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"array-0.5.4.0","pkg-name":"array","pkg-version":"0.5.4.0","depends":["base-4.16.2.0"]},{"type":"pre-existing","id":"base-4.16.2.0","pkg-name":"base","pkg-version":"4.16.2.0","depends":["ghc-bignum-1.2","ghc-prim-0.8.0","rts"]},{"type":"configured","id":"base16-bytestring-1.0.2.0-416181c2ef0e3198dfb3cfbd7c326ee1bf6356d2990473873537dade94cb81b3","pkg-name":"base16-bytestring","pkg-version":"1.0.2.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"64abad7816ab8cabed8489e29f807b3a6f828e0b2cec0eae404323d69d36df9a","pkg-src-sha256":"1d5a91143ef0e22157536093ec8e59d226a68220ec89378d5dcaeea86472c784","depends":["base-4.16.2.0","bytestring-0.11.3.1"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"binary-0.8.9.0","pkg-name":"binary","pkg-version":"0.8.9.0","depends":["array-0.5.4.0","base-4.16.2.0","bytestring-0.11.3.1","containers-0.6.5.1"]},{"type":"pre-existing","id":"bytestring-0.11.3.1","pkg-name":"bytestring","pkg-version":"0.11.3.1","depends":["base-4.16.2.0","deepseq-1.4.6.1","ghc-prim-0.8.0","template-haskell-2.18.0.0"]},{"type":"configured","id":"clock-0.8.3-137df44468d5edff5f854d1fdd7a1d931405a677f532203f6514e2afb4e770bc","pkg-name":"clock","pkg-version":"0.8.3","flags":{"llvm":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c","pkg-src-sha256":"845ce5db4c98cefd517323e005f87effceff886987305e421c4ef616dc0505d1","depends":["base-4.16.2.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"containers-0.6.5.1","pkg-name":"containers","pkg-version":"0.6.5.1","depends":["array-0.5.4.0","base-4.16.2.0","deepseq-1.4.6.1"]},{"type":"configured","id":"cryptohash-sha256-0.11.102.1-d3fdb48ff5ea6d109a282c25b81369ffa645133c39b66dcf88da5ad16e43b896","pkg-name":"cryptohash-sha256","pkg-version":"0.11.102.1","flags":{"exe":false,"use-cbits":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"72ce9095872eae653addca5f412ac8070d6282d8e1c8578c2237c33f2cbbf4bc","pkg-src-sha256":"73a7dc7163871a80837495039a099967b11f5c4fe70a118277842f7a713c6bf6","depends":["base-4.16.2.0","bytestring-0.11.3.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"data-array-byte-0.1.0.1-4e207c2b115249dcadfc85271a70e751fcfcae254ff5818252d7353e3d8cb608","pkg-name":"data-array-byte","pkg-version":"0.1.0.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"2ef1bd3511e82ba56f7f23cd793dd2da84338a1e7c2cbea5b151417afe3baada","pkg-src-sha256":"1bb6eca0b3e02d057fe7f4e14c81ef395216f421ab30fdaa1b18017c9c025600","depends":["base-4.16.2.0","deepseq-1.4.6.1","template-haskell-2.18.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"deepseq-1.4.6.1","pkg-name":"deepseq","pkg-version":"1.4.6.1","depends":["array-0.5.4.0","base-4.16.2.0"]},{"type":"pre-existing","id":"directory-1.3.6.2","pkg-name":"directory","pkg-version":"1.3.6.2","depends":["base-4.16.2.0","filepath-1.4.2.2","time-1.11.1.1","unix-2.7.2.2"]},{"type":"configured","id":"extra-1.7.12-03735b64c6d5b3b50ba8f2abe4c1af7c3d5cfe799b9d10ac62086256962a28fa","pkg-name":"extra","pkg-version":"1.7.12","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3ac58d7341976173d1052e7b2837d119212d9afcf911735667c7f1ab67aec25f","pkg-src-sha256":"e571a9ec1d8865f0fbb0e0ba1eb575f783b0365c80db19b54a93600bae43b03c","depends":["base-4.16.2.0","clock-0.8.3-137df44468d5edff5f854d1fdd7a1d931405a677f532203f6514e2afb4e770bc","directory-1.3.6.2","filepath-1.4.2.2","process-1.6.13.2","time-1.11.1.1","unix-2.7.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"filepath-1.4.2.2","pkg-name":"filepath","pkg-version":"1.4.2.2","depends":["base-4.16.2.0"]},{"type":"configured","id":"filepattern-0.1.3-c39c77f00628ef3ce634a34cee62a898b5a2c01b16047d7bfab8cb6aa8c3ed4f","pkg-name":"filepattern","pkg-version":"0.1.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"372c1733d83b90045eb29da9f010fed79bfef8771ce65eb126a1d83ecc54a9a2","pkg-src-sha256":"cc445d439ea2f65cac7604d3578aa2c3a62e5a91dc989f4ce5b3390db9e59636","depends":["base-4.16.2.0","directory-1.3.6.2","extra-1.7.12-03735b64c6d5b3b50ba8f2abe4c1af7c3d5cfe799b9d10ac62086256962a28fa","filepath-1.4.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"ghc-bignum-1.2","pkg-name":"ghc-bignum","pkg-version":"1.2","depends":["ghc-prim-0.8.0"]},{"type":"pre-existing","id":"ghc-boot-th-9.2.3","pkg-name":"ghc-boot-th","pkg-version":"9.2.3","depends":["base-4.16.2.0"]},{"type":"pre-existing","id":"ghc-prim-0.8.0","pkg-name":"ghc-prim","pkg-version":"0.8.0","depends":["rts"]},{"type":"configured","id":"hadrian-0.1.0.0-inplace-hadrian","pkg-name":"hadrian","pkg-version":"0.1.0.0","flags":{"selftest":true,"threaded":true},"style":"local","pkg-src":{"type":"local","path":"/home/matt/ghc-rodrigo/hadrian/."},"dist-dir":"/home/matt/ghc-rodrigo/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.2.3/hadrian-0.1.0.0/x/hadrian","build-info":"/home/matt/ghc-rodrigo/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.2.3/hadrian-0.1.0.0/x/hadrian/build-info.json","depends":["Cabal-3.6.3.0","QuickCheck-2.14.2-28383ec8c634951270f884fff9301d3d43ed48bb03153402d1ed50f540469641","base-4.16.2.0","base16-bytestring-1.0.2.0-416181c2ef0e3198dfb3cfbd7c326ee1bf6356d2990473873537dade94cb81b3","bytestring-0.11.3.1","containers-0.6.5.1","cryptohash-sha256-0.11.102.1-d3fdb48ff5ea6d109a282c25b81369ffa645133c39b66dcf88da5ad16e43b896","directory-1.3.6.2","extra-1.7.12-03735b64c6d5b3b50ba8f2abe4c1af7c3d5cfe799b9d10ac62086256962a28fa","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","shake-0.19.7-08211eabf258a36d817195dd1d55c2ad9c41ba74e9e5a2bfb4d5d440a4779cf2","text-1.2.5.0","time-1.11.1.1","transformers-0.5.6.2","unordered-containers-0.2.19.1-a82a624e45af105b88150facc7651e298009a39b844f8bde51b8dd88cf5b4916"],"exe-depends":[],"component-name":"exe:hadrian","bin-file":"/home/matt/ghc-rodrigo/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.2.3/hadrian-0.1.0.0/x/hadrian/build/hadrian/hadrian"},{"type":"configured","id":"hashable-1.4.2.0-31f8de08b287590549988e434ce1ffc3d917501f7250186aa981d2c108e32b76","pkg-name":"hashable","pkg-version":"1.4.2.0","flags":{"integer-gmp":true,"random-initial-seed":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"585792335d5541dba78fa8dfcb291a89cd5812a281825ff7a44afa296ab5d58a","pkg-src-sha256":"1b4000ea82b81f69d46d0af4152c10c6303873510738e24cfc4767760d30e3f8","depends":["base-4.16.2.0","bytestring-0.11.3.1","containers-0.6.5.1","data-array-byte-0.1.0.1-4e207c2b115249dcadfc85271a70e751fcfcae254ff5818252d7353e3d8cb608","deepseq-1.4.6.1","filepath-1.4.2.2","ghc-bignum-1.2","ghc-prim-0.8.0","text-1.2.5.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"heaps-0.4-d8a49d6a489879d9c4153538b9dce8f05178088f9abe624f0b9b7f1bf9b767bd","pkg-name":"heaps","pkg-version":"0.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"66b19fcd813b0e4db3e0bac541bd46606c3b13d3d081d9f9666f4be0f5ff14b8","pkg-src-sha256":"89329df8b95ae99ef272e41e7a2d0fe2f1bb7eacfcc34bc01664414b33067cfd","depends":["base-4.16.2.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-dgtable-0.5.2-4ccd577f77dcd9aad5f76085357cbca8fac52265b3de9bef5751e8c318bf1092","pkg-name":"js-dgtable","pkg-version":"0.5.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f75cb4fa53c88c65794becdd48eb0d3b2b8abd89a3d5c19e87af91f5225c15e4","pkg-src-sha256":"e28dd65bee8083b17210134e22e01c6349dc33c3b7bd17705973cd014e9f20ac","depends":["base-4.16.2.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-flot-0.8.3-82abb5a93c9421fbaa227436e44b7f8b7ddc9b9978f04fce90b53c8e0012c6a0","pkg-name":"js-flot","pkg-version":"0.8.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4c1c447a9a2fba0adba6d30678302a30c32b9dfde9e7aa9e9156483e1545096d","pkg-src-sha256":"1ba2f2a6b8d85da76c41f526c98903cbb107f8642e506c072c1e7e3c20fe5e7a","depends":["base-4.16.2.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-jquery-3.3.1-3490eb5866089e8998fb0b2aa39a1322039178695f200e12962250c13149e26a","pkg-name":"js-jquery","pkg-version":"3.3.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"59ab6c79159549ef94b584abce8e6d3b336014c2cce1337b59a8f637e2856df5","pkg-src-sha256":"e0e0681f0da1130ede4e03a051630ea439c458cb97216cdb01771ebdbe44069b","depends":["base-4.16.2.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"mtl-2.2.2","pkg-name":"mtl","pkg-version":"2.2.2","depends":["base-4.16.2.0","transformers-0.5.6.2"]},{"type":"pre-existing","id":"parsec-3.1.15.0","pkg-name":"parsec","pkg-version":"3.1.15.0","depends":["base-4.16.2.0","bytestring-0.11.3.1","mtl-2.2.2","text-1.2.5.0"]},{"type":"pre-existing","id":"pretty-1.1.3.6","pkg-name":"pretty","pkg-version":"1.1.3.6","depends":["base-4.16.2.0","deepseq-1.4.6.1","ghc-prim-0.8.0"]},{"type":"configured","id":"primitive-0.8.0.0-b4bd4d9d22d69d55dc4d45ece758a7a938f10a7001e1b9163976d63d2dc558a2","pkg-name":"primitive","pkg-version":"0.8.0.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"826bf2a702a26ef87532a135808abad69d74f70ead39f26c06d034b1f0537a19","pkg-src-sha256":"5553c21b4a789f9b591eed69e598cc58484c274af29250e517b5a8bcc62b995f","depends":["base-4.16.2.0","data-array-byte-0.1.0.1-4e207c2b115249dcadfc85271a70e751fcfcae254ff5818252d7353e3d8cb608","deepseq-1.4.6.1","template-haskell-2.18.0.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"process-1.6.13.2","pkg-name":"process","pkg-version":"1.6.13.2","depends":["base-4.16.2.0","deepseq-1.4.6.1","directory-1.3.6.2","filepath-1.4.2.2","unix-2.7.2.2"]},{"type":"configured","id":"random-1.2.1.1-40759a416704d10d86283d548100f6265a34bcb854377f345fbde64bf698fad0","pkg-name":"random","pkg-version":"1.2.1.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"dea1f11e5569332dc6c8efaad1cb301016a5587b6754943a49f9de08ae0e56d9","pkg-src-sha256":"3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76","depends":["base-4.16.2.0","bytestring-0.11.3.1","deepseq-1.4.6.1","mtl-2.2.2","splitmix-0.1.0.4-f5816d86b79c25a60eb0e68dec4d61b22701a8b4fd7de88550a4b0606cf31730"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"rts","pkg-name":"rts","pkg-version":"1.0.2","depends":[]},{"type":"configured","id":"shake-0.19.7-08211eabf258a36d817195dd1d55c2ad9c41ba74e9e5a2bfb4d5d440a4779cf2","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.16.2.0","binary-0.8.9.0","bytestring-0.11.3.1","deepseq-1.4.6.1","directory-1.3.6.2","extra-1.7.12-03735b64c6d5b3b50ba8f2abe4c1af7c3d5cfe799b9d10ac62086256962a28fa","filepath-1.4.2.2","filepattern-0.1.3-c39c77f00628ef3ce634a34cee62a898b5a2c01b16047d7bfab8cb6aa8c3ed4f","hashable-1.4.2.0-31f8de08b287590549988e434ce1ffc3d917501f7250186aa981d2c108e32b76","heaps-0.4-d8a49d6a489879d9c4153538b9dce8f05178088f9abe624f0b9b7f1bf9b767bd","js-dgtable-0.5.2-4ccd577f77dcd9aad5f76085357cbca8fac52265b3de9bef5751e8c318bf1092","js-flot-0.8.3-82abb5a93c9421fbaa227436e44b7f8b7ddc9b9978f04fce90b53c8e0012c6a0","js-jquery-3.3.1-3490eb5866089e8998fb0b2aa39a1322039178695f200e12962250c13149e26a","primitive-0.8.0.0-b4bd4d9d22d69d55dc4d45ece758a7a938f10a7001e1b9163976d63d2dc558a2","process-1.6.13.2","random-1.2.1.1-40759a416704d10d86283d548100f6265a34bcb854377f345fbde64bf698fad0","time-1.11.1.1","transformers-0.5.6.2","unix-2.7.2.2","unordered-containers-0.2.19.1-a82a624e45af105b88150facc7651e298009a39b844f8bde51b8dd88cf5b4916","utf8-string-1.0.2-118917811093d53a6e91865006ec9fa2038310da3ed3410e4fd66982940e44d0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"shake-0.19.7-e-shake-5c165ed7345c5b65ece21297581f83d9346c178a28a5419b64162a1356501914","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.16.2.0","binary-0.8.9.0","bytestring-0.11.3.1","deepseq-1.4.6.1","directory-1.3.6.2","extra-1.7.12-03735b64c6d5b3b50ba8f2abe4c1af7c3d5cfe799b9d10ac62086256962a28fa","filepath-1.4.2.2","filepattern-0.1.3-c39c77f00628ef3ce634a34cee62a898b5a2c01b16047d7bfab8cb6aa8c3ed4f","hashable-1.4.2.0-31f8de08b287590549988e434ce1ffc3d917501f7250186aa981d2c108e32b76","heaps-0.4-d8a49d6a489879d9c4153538b9dce8f05178088f9abe624f0b9b7f1bf9b767bd","js-dgtable-0.5.2-4ccd577f77dcd9aad5f76085357cbca8fac52265b3de9bef5751e8c318bf1092","js-flot-0.8.3-82abb5a93c9421fbaa227436e44b7f8b7ddc9b9978f04fce90b53c8e0012c6a0","js-jquery-3.3.1-3490eb5866089e8998fb0b2aa39a1322039178695f200e12962250c13149e26a","primitive-0.8.0.0-b4bd4d9d22d69d55dc4d45ece758a7a938f10a7001e1b9163976d63d2dc558a2","process-1.6.13.2","random-1.2.1.1-40759a416704d10d86283d548100f6265a34bcb854377f345fbde64bf698fad0","time-1.11.1.1","transformers-0.5.6.2","unix-2.7.2.2","unordered-containers-0.2.19.1-a82a624e45af105b88150facc7651e298009a39b844f8bde51b8dd88cf5b4916","utf8-string-1.0.2-118917811093d53a6e91865006ec9fa2038310da3ed3410e4fd66982940e44d0"],"exe-depends":[],"component-name":"exe:shake","bin-file":"/home/matt/.cabal/store/ghc-9.2.3/shake-0.19.7-e-shake-5c165ed7345c5b65ece21297581f83d9346c178a28a5419b64162a1356501914/bin/shake"},{"type":"configured","id":"splitmix-0.1.0.4-f5816d86b79c25a60eb0e68dec4d61b22701a8b4fd7de88550a4b0606cf31730","pkg-name":"splitmix","pkg-version":"0.1.0.4","flags":{"optimised-mixer":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"db25c2e17967aa6b6046ab8b1b96ba3f344ca59a62b60fb6113d51ea305a3d8e","pkg-src-sha256":"6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa","depends":["base-4.16.2.0","deepseq-1.4.6.1"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"template-haskell-2.18.0.0","pkg-name":"template-haskell","pkg-version":"2.18.0.0","depends":["base-4.16.2.0","ghc-boot-th-9.2.3","ghc-prim-0.8.0","pretty-1.1.3.6"]},{"type":"pre-existing","id":"text-1.2.5.0","pkg-name":"text","pkg-version":"1.2.5.0","depends":["array-0.5.4.0","base-4.16.2.0","binary-0.8.9.0","bytestring-0.11.3.1","deepseq-1.4.6.1","ghc-prim-0.8.0","template-haskell-2.18.0.0"]},{"type":"pre-existing","id":"time-1.11.1.1","pkg-name":"time","pkg-version":"1.11.1.1","depends":["base-4.16.2.0","deepseq-1.4.6.1"]},{"type":"pre-existing","id":"transformers-0.5.6.2","pkg-name":"transformers","pkg-version":"0.5.6.2","depends":["base-4.16.2.0"]},{"type":"pre-existing","id":"unix-2.7.2.2","pkg-name":"unix","pkg-version":"2.7.2.2","depends":["base-4.16.2.0","bytestring-0.11.3.1","time-1.11.1.1"]},{"type":"configured","id":"unordered-containers-0.2.19.1-a82a624e45af105b88150facc7651e298009a39b844f8bde51b8dd88cf5b4916","pkg-name":"unordered-containers","pkg-version":"0.2.19.1","flags":{"debug":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"9ad8972c2e913c37b1d4f0e1261517fd7a1b8c8a58077e057be69837e3dbaa00","pkg-src-sha256":"1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2","depends":["base-4.16.2.0","deepseq-1.4.6.1","hashable-1.4.2.0-31f8de08b287590549988e434ce1ffc3d917501f7250186aa981d2c108e32b76","template-haskell-2.18.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"utf8-string-1.0.2-118917811093d53a6e91865006ec9fa2038310da3ed3410e4fd66982940e44d0","pkg-name":"utf8-string","pkg-version":"1.0.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"79416292186feeaf1f60e49ac5a1ffae9bf1b120e040a74bf0e81ca7f1d31d3f","pkg-src-sha256":"ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a","depends":["base-4.16.2.0","bytestring-0.11.3.1"],"exe-depends":[],"component-name":"lib"}]} \ No newline at end of file
diff --git a/hadrian/bootstrap/plan-9_2_4.json b/hadrian/bootstrap/plan-9_2_4.json
index 4c0e628a8f..e0db6f774d 100644
--- a/hadrian/bootstrap/plan-9_2_4.json
+++ b/hadrian/bootstrap/plan-9_2_4.json
@@ -1 +1 @@
-{"cabal-version":"3.8.1.0","cabal-lib-version":"3.8.1.0","compiler-id":"ghc-9.2.4","os":"linux","arch":"x86_64","install-plan":[{"type":"pre-existing","id":"Cabal-3.6.3.0","pkg-name":"Cabal","pkg-version":"3.6.3.0","depends":["array-0.5.4.0","base-4.16.3.0","binary-0.8.9.0","bytestring-0.11.3.1","containers-0.6.5.1","deepseq-1.4.6.1","directory-1.3.6.2","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","pretty-1.1.3.6","process-1.6.13.2","text-1.2.5.0","time-1.11.1.1","transformers-0.5.6.2","unix-2.7.2.2"]},{"type":"configured","id":"QuickCheck-2.14.2-6d836be05ad916880fe0949228d3c81e9b8f2ca795d2696c492a4c70b5508239","pkg-name":"QuickCheck","pkg-version":"2.14.2","flags":{"old-random":false,"templatehaskell":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4ce29211223d5e6620ebceba34a3ca9ccf1c10c0cf387d48aea45599222ee5aa","pkg-src-sha256":"d87b6c85696b601175274361fa62217894401e401e150c3c5d4013ac53cd36f3","depends":["base-4.16.3.0","containers-0.6.5.1","deepseq-1.4.6.1","random-1.2.1.1-cacc1501582bd05c5eec5dea004194a2d9ff55cb8e30c141ffdbf5e9daaf76af","splitmix-0.1.0.4-c5a30dae3b6eb47ac8ba23a866a9ff6f96961c3b68fcb8f53614067e0454a0ed","template-haskell-2.18.0.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"array-0.5.4.0","pkg-name":"array","pkg-version":"0.5.4.0","depends":["base-4.16.3.0"]},{"type":"pre-existing","id":"base-4.16.3.0","pkg-name":"base","pkg-version":"4.16.3.0","depends":["ghc-bignum-1.2","ghc-prim-0.8.0","rts"]},{"type":"pre-existing","id":"binary-0.8.9.0","pkg-name":"binary","pkg-version":"0.8.9.0","depends":["array-0.5.4.0","base-4.16.3.0","bytestring-0.11.3.1","containers-0.6.5.1"]},{"type":"pre-existing","id":"bytestring-0.11.3.1","pkg-name":"bytestring","pkg-version":"0.11.3.1","depends":["base-4.16.3.0","deepseq-1.4.6.1","ghc-prim-0.8.0","template-haskell-2.18.0.0"]},{"type":"configured","id":"clock-0.8.3-e114f0d147804c0f73def6b7e3e0abc1123ce489f19fe058ee0a85d0c30d88b3","pkg-name":"clock","pkg-version":"0.8.3","flags":{"llvm":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c","pkg-src-sha256":"845ce5db4c98cefd517323e005f87effceff886987305e421c4ef616dc0505d1","depends":["base-4.16.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"containers-0.6.5.1","pkg-name":"containers","pkg-version":"0.6.5.1","depends":["array-0.5.4.0","base-4.16.3.0","deepseq-1.4.6.1"]},{"type":"configured","id":"data-array-byte-0.1.0.1-0817fab8e0aaf64af1a7971c563c38ecb28cc0ab9636107e9ad76dcbeb16da1b","pkg-name":"data-array-byte","pkg-version":"0.1.0.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"2ef1bd3511e82ba56f7f23cd793dd2da84338a1e7c2cbea5b151417afe3baada","pkg-src-sha256":"1bb6eca0b3e02d057fe7f4e14c81ef395216f421ab30fdaa1b18017c9c025600","depends":["base-4.16.3.0","deepseq-1.4.6.1","template-haskell-2.18.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"deepseq-1.4.6.1","pkg-name":"deepseq","pkg-version":"1.4.6.1","depends":["array-0.5.4.0","base-4.16.3.0"]},{"type":"pre-existing","id":"directory-1.3.6.2","pkg-name":"directory","pkg-version":"1.3.6.2","depends":["base-4.16.3.0","filepath-1.4.2.2","time-1.11.1.1","unix-2.7.2.2"]},{"type":"configured","id":"extra-1.7.12-30b204f811b2d9236d3796a4afd55e03a0ebcc236d0936fb48954c001a668d85","pkg-name":"extra","pkg-version":"1.7.12","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3ac58d7341976173d1052e7b2837d119212d9afcf911735667c7f1ab67aec25f","pkg-src-sha256":"e571a9ec1d8865f0fbb0e0ba1eb575f783b0365c80db19b54a93600bae43b03c","depends":["base-4.16.3.0","clock-0.8.3-e114f0d147804c0f73def6b7e3e0abc1123ce489f19fe058ee0a85d0c30d88b3","directory-1.3.6.2","filepath-1.4.2.2","process-1.6.13.2","time-1.11.1.1","unix-2.7.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"filepath-1.4.2.2","pkg-name":"filepath","pkg-version":"1.4.2.2","depends":["base-4.16.3.0"]},{"type":"configured","id":"filepattern-0.1.3-553b0fa2b393f41d7a33e70dc70a212a84b4741694eae595c027e2a0bc506bee","pkg-name":"filepattern","pkg-version":"0.1.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"372c1733d83b90045eb29da9f010fed79bfef8771ce65eb126a1d83ecc54a9a2","pkg-src-sha256":"cc445d439ea2f65cac7604d3578aa2c3a62e5a91dc989f4ce5b3390db9e59636","depends":["base-4.16.3.0","directory-1.3.6.2","extra-1.7.12-30b204f811b2d9236d3796a4afd55e03a0ebcc236d0936fb48954c001a668d85","filepath-1.4.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"ghc-bignum-1.2","pkg-name":"ghc-bignum","pkg-version":"1.2","depends":["ghc-prim-0.8.0"]},{"type":"pre-existing","id":"ghc-boot-th-9.2.4","pkg-name":"ghc-boot-th","pkg-version":"9.2.4","depends":["base-4.16.3.0"]},{"type":"pre-existing","id":"ghc-prim-0.8.0","pkg-name":"ghc-prim","pkg-version":"0.8.0","depends":["rts"]},{"type":"configured","id":"hadrian-0.1.0.0-inplace-hadrian","pkg-name":"hadrian","pkg-version":"0.1.0.0","flags":{"selftest":true,"threaded":true},"style":"local","pkg-src":{"type":"local","path":"/home/matt/ghc-scratch/hadrian/."},"dist-dir":"/home/matt/ghc-scratch/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.2.4/hadrian-0.1.0.0/x/hadrian","build-info":"/home/matt/ghc-scratch/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.2.4/hadrian-0.1.0.0/x/hadrian/build-info.json","depends":["Cabal-3.6.3.0","QuickCheck-2.14.2-6d836be05ad916880fe0949228d3c81e9b8f2ca795d2696c492a4c70b5508239","base-4.16.3.0","bytestring-0.11.3.1","containers-0.6.5.1","directory-1.3.6.2","extra-1.7.12-30b204f811b2d9236d3796a4afd55e03a0ebcc236d0936fb48954c001a668d85","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","shake-0.19.7-c24bb8b0eb33f2b23d3d2e2c00ee442f0331dc02df435ed6f01ecdd5d90e7c16","text-1.2.5.0","time-1.11.1.1","transformers-0.5.6.2","unordered-containers-0.2.19.1-685b2b9941ba1dbca71c41b7b129599fa9e60a37ae0cee284194ab113d2ea671"],"exe-depends":[],"component-name":"exe:hadrian","bin-file":"/home/matt/ghc-scratch/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.2.4/hadrian-0.1.0.0/x/hadrian/build/hadrian/hadrian"},{"type":"configured","id":"hashable-1.4.2.0-1717d4bc84bbd91e502a6a1d0fbbe9b2913f122572feea473d06f64594b446ec","pkg-name":"hashable","pkg-version":"1.4.2.0","flags":{"integer-gmp":true,"random-initial-seed":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"585792335d5541dba78fa8dfcb291a89cd5812a281825ff7a44afa296ab5d58a","pkg-src-sha256":"1b4000ea82b81f69d46d0af4152c10c6303873510738e24cfc4767760d30e3f8","depends":["base-4.16.3.0","bytestring-0.11.3.1","containers-0.6.5.1","data-array-byte-0.1.0.1-0817fab8e0aaf64af1a7971c563c38ecb28cc0ab9636107e9ad76dcbeb16da1b","deepseq-1.4.6.1","filepath-1.4.2.2","ghc-bignum-1.2","ghc-prim-0.8.0","text-1.2.5.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"heaps-0.4-9ef32198cdd1e78830c66145fd58d308d8307d7f9673cf1db51fe0663adea5aa","pkg-name":"heaps","pkg-version":"0.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"66b19fcd813b0e4db3e0bac541bd46606c3b13d3d081d9f9666f4be0f5ff14b8","pkg-src-sha256":"89329df8b95ae99ef272e41e7a2d0fe2f1bb7eacfcc34bc01664414b33067cfd","depends":["base-4.16.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-dgtable-0.5.2-ea71215251f637eb99b420c532ed9d47fc287d0541c7aafb9f4e7e212e22ad28","pkg-name":"js-dgtable","pkg-version":"0.5.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f75cb4fa53c88c65794becdd48eb0d3b2b8abd89a3d5c19e87af91f5225c15e4","pkg-src-sha256":"e28dd65bee8083b17210134e22e01c6349dc33c3b7bd17705973cd014e9f20ac","depends":["base-4.16.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-flot-0.8.3-7863d367d217e7fe0af1683d0b88b641c00cfce9045c088f91bd42dc630b880d","pkg-name":"js-flot","pkg-version":"0.8.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4c1c447a9a2fba0adba6d30678302a30c32b9dfde9e7aa9e9156483e1545096d","pkg-src-sha256":"1ba2f2a6b8d85da76c41f526c98903cbb107f8642e506c072c1e7e3c20fe5e7a","depends":["base-4.16.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-jquery-3.3.1-2a68aa0f8e1547440ea68362a9d21af8f4307038e7d45b7c167ab2cfc9fc74c5","pkg-name":"js-jquery","pkg-version":"3.3.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"59ab6c79159549ef94b584abce8e6d3b336014c2cce1337b59a8f637e2856df5","pkg-src-sha256":"e0e0681f0da1130ede4e03a051630ea439c458cb97216cdb01771ebdbe44069b","depends":["base-4.16.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"mtl-2.2.2","pkg-name":"mtl","pkg-version":"2.2.2","depends":["base-4.16.3.0","transformers-0.5.6.2"]},{"type":"pre-existing","id":"parsec-3.1.15.0","pkg-name":"parsec","pkg-version":"3.1.15.0","depends":["base-4.16.3.0","bytestring-0.11.3.1","mtl-2.2.2","text-1.2.5.0"]},{"type":"pre-existing","id":"pretty-1.1.3.6","pkg-name":"pretty","pkg-version":"1.1.3.6","depends":["base-4.16.3.0","deepseq-1.4.6.1","ghc-prim-0.8.0"]},{"type":"configured","id":"primitive-0.8.0.0-80350fff1c8215a379d63da45891f42ed8c7c56918c3616f5a3d952c9565ccd5","pkg-name":"primitive","pkg-version":"0.8.0.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"826bf2a702a26ef87532a135808abad69d74f70ead39f26c06d034b1f0537a19","pkg-src-sha256":"5553c21b4a789f9b591eed69e598cc58484c274af29250e517b5a8bcc62b995f","depends":["base-4.16.3.0","data-array-byte-0.1.0.1-0817fab8e0aaf64af1a7971c563c38ecb28cc0ab9636107e9ad76dcbeb16da1b","deepseq-1.4.6.1","template-haskell-2.18.0.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"process-1.6.13.2","pkg-name":"process","pkg-version":"1.6.13.2","depends":["base-4.16.3.0","deepseq-1.4.6.1","directory-1.3.6.2","filepath-1.4.2.2","unix-2.7.2.2"]},{"type":"configured","id":"random-1.2.1.1-cacc1501582bd05c5eec5dea004194a2d9ff55cb8e30c141ffdbf5e9daaf76af","pkg-name":"random","pkg-version":"1.2.1.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"dea1f11e5569332dc6c8efaad1cb301016a5587b6754943a49f9de08ae0e56d9","pkg-src-sha256":"3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76","depends":["base-4.16.3.0","bytestring-0.11.3.1","deepseq-1.4.6.1","mtl-2.2.2","splitmix-0.1.0.4-c5a30dae3b6eb47ac8ba23a866a9ff6f96961c3b68fcb8f53614067e0454a0ed"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"rts","pkg-name":"rts","pkg-version":"1.0.2","depends":[]},{"type":"configured","id":"shake-0.19.7-c24bb8b0eb33f2b23d3d2e2c00ee442f0331dc02df435ed6f01ecdd5d90e7c16","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.16.3.0","binary-0.8.9.0","bytestring-0.11.3.1","deepseq-1.4.6.1","directory-1.3.6.2","extra-1.7.12-30b204f811b2d9236d3796a4afd55e03a0ebcc236d0936fb48954c001a668d85","filepath-1.4.2.2","filepattern-0.1.3-553b0fa2b393f41d7a33e70dc70a212a84b4741694eae595c027e2a0bc506bee","hashable-1.4.2.0-1717d4bc84bbd91e502a6a1d0fbbe9b2913f122572feea473d06f64594b446ec","heaps-0.4-9ef32198cdd1e78830c66145fd58d308d8307d7f9673cf1db51fe0663adea5aa","js-dgtable-0.5.2-ea71215251f637eb99b420c532ed9d47fc287d0541c7aafb9f4e7e212e22ad28","js-flot-0.8.3-7863d367d217e7fe0af1683d0b88b641c00cfce9045c088f91bd42dc630b880d","js-jquery-3.3.1-2a68aa0f8e1547440ea68362a9d21af8f4307038e7d45b7c167ab2cfc9fc74c5","primitive-0.8.0.0-80350fff1c8215a379d63da45891f42ed8c7c56918c3616f5a3d952c9565ccd5","process-1.6.13.2","random-1.2.1.1-cacc1501582bd05c5eec5dea004194a2d9ff55cb8e30c141ffdbf5e9daaf76af","time-1.11.1.1","transformers-0.5.6.2","unix-2.7.2.2","unordered-containers-0.2.19.1-685b2b9941ba1dbca71c41b7b129599fa9e60a37ae0cee284194ab113d2ea671","utf8-string-1.0.2-d22b18266988d52549714440c6819d7b11afafcefe4fbf4550bb19de6eaeb0e4"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"shake-0.19.7-e-shake-a14177998667ebf92ef887106b02787b16223d1ae08cbd3e5a9531032831b6ee","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.16.3.0","binary-0.8.9.0","bytestring-0.11.3.1","deepseq-1.4.6.1","directory-1.3.6.2","extra-1.7.12-30b204f811b2d9236d3796a4afd55e03a0ebcc236d0936fb48954c001a668d85","filepath-1.4.2.2","filepattern-0.1.3-553b0fa2b393f41d7a33e70dc70a212a84b4741694eae595c027e2a0bc506bee","hashable-1.4.2.0-1717d4bc84bbd91e502a6a1d0fbbe9b2913f122572feea473d06f64594b446ec","heaps-0.4-9ef32198cdd1e78830c66145fd58d308d8307d7f9673cf1db51fe0663adea5aa","js-dgtable-0.5.2-ea71215251f637eb99b420c532ed9d47fc287d0541c7aafb9f4e7e212e22ad28","js-flot-0.8.3-7863d367d217e7fe0af1683d0b88b641c00cfce9045c088f91bd42dc630b880d","js-jquery-3.3.1-2a68aa0f8e1547440ea68362a9d21af8f4307038e7d45b7c167ab2cfc9fc74c5","primitive-0.8.0.0-80350fff1c8215a379d63da45891f42ed8c7c56918c3616f5a3d952c9565ccd5","process-1.6.13.2","random-1.2.1.1-cacc1501582bd05c5eec5dea004194a2d9ff55cb8e30c141ffdbf5e9daaf76af","time-1.11.1.1","transformers-0.5.6.2","unix-2.7.2.2","unordered-containers-0.2.19.1-685b2b9941ba1dbca71c41b7b129599fa9e60a37ae0cee284194ab113d2ea671","utf8-string-1.0.2-d22b18266988d52549714440c6819d7b11afafcefe4fbf4550bb19de6eaeb0e4"],"exe-depends":[],"component-name":"exe:shake","bin-file":"/home/matt/.cabal/store/ghc-9.2.4/shake-0.19.7-e-shake-a14177998667ebf92ef887106b02787b16223d1ae08cbd3e5a9531032831b6ee/bin/shake"},{"type":"configured","id":"splitmix-0.1.0.4-c5a30dae3b6eb47ac8ba23a866a9ff6f96961c3b68fcb8f53614067e0454a0ed","pkg-name":"splitmix","pkg-version":"0.1.0.4","flags":{"optimised-mixer":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"db25c2e17967aa6b6046ab8b1b96ba3f344ca59a62b60fb6113d51ea305a3d8e","pkg-src-sha256":"6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa","depends":["base-4.16.3.0","deepseq-1.4.6.1"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"template-haskell-2.18.0.0","pkg-name":"template-haskell","pkg-version":"2.18.0.0","depends":["base-4.16.3.0","ghc-boot-th-9.2.4","ghc-prim-0.8.0","pretty-1.1.3.6"]},{"type":"pre-existing","id":"text-1.2.5.0","pkg-name":"text","pkg-version":"1.2.5.0","depends":["array-0.5.4.0","base-4.16.3.0","binary-0.8.9.0","bytestring-0.11.3.1","deepseq-1.4.6.1","ghc-prim-0.8.0","template-haskell-2.18.0.0"]},{"type":"pre-existing","id":"time-1.11.1.1","pkg-name":"time","pkg-version":"1.11.1.1","depends":["base-4.16.3.0","deepseq-1.4.6.1"]},{"type":"pre-existing","id":"transformers-0.5.6.2","pkg-name":"transformers","pkg-version":"0.5.6.2","depends":["base-4.16.3.0"]},{"type":"pre-existing","id":"unix-2.7.2.2","pkg-name":"unix","pkg-version":"2.7.2.2","depends":["base-4.16.3.0","bytestring-0.11.3.1","time-1.11.1.1"]},{"type":"configured","id":"unordered-containers-0.2.19.1-685b2b9941ba1dbca71c41b7b129599fa9e60a37ae0cee284194ab113d2ea671","pkg-name":"unordered-containers","pkg-version":"0.2.19.1","flags":{"debug":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"9ad8972c2e913c37b1d4f0e1261517fd7a1b8c8a58077e057be69837e3dbaa00","pkg-src-sha256":"1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2","depends":["base-4.16.3.0","deepseq-1.4.6.1","hashable-1.4.2.0-1717d4bc84bbd91e502a6a1d0fbbe9b2913f122572feea473d06f64594b446ec","template-haskell-2.18.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"utf8-string-1.0.2-d22b18266988d52549714440c6819d7b11afafcefe4fbf4550bb19de6eaeb0e4","pkg-name":"utf8-string","pkg-version":"1.0.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"79416292186feeaf1f60e49ac5a1ffae9bf1b120e040a74bf0e81ca7f1d31d3f","pkg-src-sha256":"ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a","depends":["base-4.16.3.0","bytestring-0.11.3.1"],"exe-depends":[],"component-name":"lib"}]} \ No newline at end of file
+{"cabal-version":"3.8.1.0","cabal-lib-version":"3.8.1.0","compiler-id":"ghc-9.2.4","os":"linux","arch":"x86_64","install-plan":[{"type":"pre-existing","id":"Cabal-3.6.3.0","pkg-name":"Cabal","pkg-version":"3.6.3.0","depends":["array-0.5.4.0","base-4.16.3.0","binary-0.8.9.0","bytestring-0.11.3.1","containers-0.6.5.1","deepseq-1.4.6.1","directory-1.3.6.2","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","pretty-1.1.3.6","process-1.6.13.2","text-1.2.5.0","time-1.11.1.1","transformers-0.5.6.2","unix-2.7.2.2"]},{"type":"configured","id":"QuickCheck-2.14.2-6d836be05ad916880fe0949228d3c81e9b8f2ca795d2696c492a4c70b5508239","pkg-name":"QuickCheck","pkg-version":"2.14.2","flags":{"old-random":false,"templatehaskell":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4ce29211223d5e6620ebceba34a3ca9ccf1c10c0cf387d48aea45599222ee5aa","pkg-src-sha256":"d87b6c85696b601175274361fa62217894401e401e150c3c5d4013ac53cd36f3","depends":["base-4.16.3.0","containers-0.6.5.1","deepseq-1.4.6.1","random-1.2.1.1-cacc1501582bd05c5eec5dea004194a2d9ff55cb8e30c141ffdbf5e9daaf76af","splitmix-0.1.0.4-c5a30dae3b6eb47ac8ba23a866a9ff6f96961c3b68fcb8f53614067e0454a0ed","template-haskell-2.18.0.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"array-0.5.4.0","pkg-name":"array","pkg-version":"0.5.4.0","depends":["base-4.16.3.0"]},{"type":"pre-existing","id":"base-4.16.3.0","pkg-name":"base","pkg-version":"4.16.3.0","depends":["ghc-bignum-1.2","ghc-prim-0.8.0","rts"]},{"type":"configured","id":"base16-bytestring-1.0.2.0-d2a3a777ac66ab1aa564a0157178c54aa3d081c41c221bcc7641ef827112df8e","pkg-name":"base16-bytestring","pkg-version":"1.0.2.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"64abad7816ab8cabed8489e29f807b3a6f828e0b2cec0eae404323d69d36df9a","pkg-src-sha256":"1d5a91143ef0e22157536093ec8e59d226a68220ec89378d5dcaeea86472c784","depends":["base-4.16.3.0","bytestring-0.11.3.1"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"binary-0.8.9.0","pkg-name":"binary","pkg-version":"0.8.9.0","depends":["array-0.5.4.0","base-4.16.3.0","bytestring-0.11.3.1","containers-0.6.5.1"]},{"type":"pre-existing","id":"bytestring-0.11.3.1","pkg-name":"bytestring","pkg-version":"0.11.3.1","depends":["base-4.16.3.0","deepseq-1.4.6.1","ghc-prim-0.8.0","template-haskell-2.18.0.0"]},{"type":"configured","id":"clock-0.8.3-e114f0d147804c0f73def6b7e3e0abc1123ce489f19fe058ee0a85d0c30d88b3","pkg-name":"clock","pkg-version":"0.8.3","flags":{"llvm":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c","pkg-src-sha256":"845ce5db4c98cefd517323e005f87effceff886987305e421c4ef616dc0505d1","depends":["base-4.16.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"containers-0.6.5.1","pkg-name":"containers","pkg-version":"0.6.5.1","depends":["array-0.5.4.0","base-4.16.3.0","deepseq-1.4.6.1"]},{"type":"configured","id":"cryptohash-sha256-0.11.102.1-e4cde5f01f3cb925513d713200a61fe62165acb4796e3832db49c444783074c0","pkg-name":"cryptohash-sha256","pkg-version":"0.11.102.1","flags":{"exe":false,"use-cbits":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"72ce9095872eae653addca5f412ac8070d6282d8e1c8578c2237c33f2cbbf4bc","pkg-src-sha256":"73a7dc7163871a80837495039a099967b11f5c4fe70a118277842f7a713c6bf6","depends":["base-4.16.3.0","bytestring-0.11.3.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"data-array-byte-0.1.0.1-0817fab8e0aaf64af1a7971c563c38ecb28cc0ab9636107e9ad76dcbeb16da1b","pkg-name":"data-array-byte","pkg-version":"0.1.0.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"2ef1bd3511e82ba56f7f23cd793dd2da84338a1e7c2cbea5b151417afe3baada","pkg-src-sha256":"1bb6eca0b3e02d057fe7f4e14c81ef395216f421ab30fdaa1b18017c9c025600","depends":["base-4.16.3.0","deepseq-1.4.6.1","template-haskell-2.18.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"deepseq-1.4.6.1","pkg-name":"deepseq","pkg-version":"1.4.6.1","depends":["array-0.5.4.0","base-4.16.3.0"]},{"type":"pre-existing","id":"directory-1.3.6.2","pkg-name":"directory","pkg-version":"1.3.6.2","depends":["base-4.16.3.0","filepath-1.4.2.2","time-1.11.1.1","unix-2.7.2.2"]},{"type":"configured","id":"extra-1.7.12-30b204f811b2d9236d3796a4afd55e03a0ebcc236d0936fb48954c001a668d85","pkg-name":"extra","pkg-version":"1.7.12","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3ac58d7341976173d1052e7b2837d119212d9afcf911735667c7f1ab67aec25f","pkg-src-sha256":"e571a9ec1d8865f0fbb0e0ba1eb575f783b0365c80db19b54a93600bae43b03c","depends":["base-4.16.3.0","clock-0.8.3-e114f0d147804c0f73def6b7e3e0abc1123ce489f19fe058ee0a85d0c30d88b3","directory-1.3.6.2","filepath-1.4.2.2","process-1.6.13.2","time-1.11.1.1","unix-2.7.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"filepath-1.4.2.2","pkg-name":"filepath","pkg-version":"1.4.2.2","depends":["base-4.16.3.0"]},{"type":"configured","id":"filepattern-0.1.3-553b0fa2b393f41d7a33e70dc70a212a84b4741694eae595c027e2a0bc506bee","pkg-name":"filepattern","pkg-version":"0.1.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"372c1733d83b90045eb29da9f010fed79bfef8771ce65eb126a1d83ecc54a9a2","pkg-src-sha256":"cc445d439ea2f65cac7604d3578aa2c3a62e5a91dc989f4ce5b3390db9e59636","depends":["base-4.16.3.0","directory-1.3.6.2","extra-1.7.12-30b204f811b2d9236d3796a4afd55e03a0ebcc236d0936fb48954c001a668d85","filepath-1.4.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"ghc-bignum-1.2","pkg-name":"ghc-bignum","pkg-version":"1.2","depends":["ghc-prim-0.8.0"]},{"type":"pre-existing","id":"ghc-boot-th-9.2.4","pkg-name":"ghc-boot-th","pkg-version":"9.2.4","depends":["base-4.16.3.0"]},{"type":"pre-existing","id":"ghc-prim-0.8.0","pkg-name":"ghc-prim","pkg-version":"0.8.0","depends":["rts"]},{"type":"configured","id":"hadrian-0.1.0.0-inplace-hadrian","pkg-name":"hadrian","pkg-version":"0.1.0.0","flags":{"selftest":true,"threaded":true},"style":"local","pkg-src":{"type":"local","path":"/home/matt/ghc-rodrigo/hadrian/."},"dist-dir":"/home/matt/ghc-rodrigo/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.2.4/hadrian-0.1.0.0/x/hadrian","build-info":"/home/matt/ghc-rodrigo/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.2.4/hadrian-0.1.0.0/x/hadrian/build-info.json","depends":["Cabal-3.6.3.0","QuickCheck-2.14.2-6d836be05ad916880fe0949228d3c81e9b8f2ca795d2696c492a4c70b5508239","base-4.16.3.0","base16-bytestring-1.0.2.0-d2a3a777ac66ab1aa564a0157178c54aa3d081c41c221bcc7641ef827112df8e","bytestring-0.11.3.1","containers-0.6.5.1","cryptohash-sha256-0.11.102.1-e4cde5f01f3cb925513d713200a61fe62165acb4796e3832db49c444783074c0","directory-1.3.6.2","extra-1.7.12-30b204f811b2d9236d3796a4afd55e03a0ebcc236d0936fb48954c001a668d85","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","shake-0.19.7-c24bb8b0eb33f2b23d3d2e2c00ee442f0331dc02df435ed6f01ecdd5d90e7c16","text-1.2.5.0","time-1.11.1.1","transformers-0.5.6.2","unordered-containers-0.2.19.1-685b2b9941ba1dbca71c41b7b129599fa9e60a37ae0cee284194ab113d2ea671"],"exe-depends":[],"component-name":"exe:hadrian","bin-file":"/home/matt/ghc-rodrigo/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.2.4/hadrian-0.1.0.0/x/hadrian/build/hadrian/hadrian"},{"type":"configured","id":"hashable-1.4.2.0-1717d4bc84bbd91e502a6a1d0fbbe9b2913f122572feea473d06f64594b446ec","pkg-name":"hashable","pkg-version":"1.4.2.0","flags":{"integer-gmp":true,"random-initial-seed":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"585792335d5541dba78fa8dfcb291a89cd5812a281825ff7a44afa296ab5d58a","pkg-src-sha256":"1b4000ea82b81f69d46d0af4152c10c6303873510738e24cfc4767760d30e3f8","depends":["base-4.16.3.0","bytestring-0.11.3.1","containers-0.6.5.1","data-array-byte-0.1.0.1-0817fab8e0aaf64af1a7971c563c38ecb28cc0ab9636107e9ad76dcbeb16da1b","deepseq-1.4.6.1","filepath-1.4.2.2","ghc-bignum-1.2","ghc-prim-0.8.0","text-1.2.5.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"heaps-0.4-9ef32198cdd1e78830c66145fd58d308d8307d7f9673cf1db51fe0663adea5aa","pkg-name":"heaps","pkg-version":"0.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"66b19fcd813b0e4db3e0bac541bd46606c3b13d3d081d9f9666f4be0f5ff14b8","pkg-src-sha256":"89329df8b95ae99ef272e41e7a2d0fe2f1bb7eacfcc34bc01664414b33067cfd","depends":["base-4.16.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-dgtable-0.5.2-ea71215251f637eb99b420c532ed9d47fc287d0541c7aafb9f4e7e212e22ad28","pkg-name":"js-dgtable","pkg-version":"0.5.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f75cb4fa53c88c65794becdd48eb0d3b2b8abd89a3d5c19e87af91f5225c15e4","pkg-src-sha256":"e28dd65bee8083b17210134e22e01c6349dc33c3b7bd17705973cd014e9f20ac","depends":["base-4.16.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-flot-0.8.3-7863d367d217e7fe0af1683d0b88b641c00cfce9045c088f91bd42dc630b880d","pkg-name":"js-flot","pkg-version":"0.8.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4c1c447a9a2fba0adba6d30678302a30c32b9dfde9e7aa9e9156483e1545096d","pkg-src-sha256":"1ba2f2a6b8d85da76c41f526c98903cbb107f8642e506c072c1e7e3c20fe5e7a","depends":["base-4.16.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-jquery-3.3.1-2a68aa0f8e1547440ea68362a9d21af8f4307038e7d45b7c167ab2cfc9fc74c5","pkg-name":"js-jquery","pkg-version":"3.3.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"59ab6c79159549ef94b584abce8e6d3b336014c2cce1337b59a8f637e2856df5","pkg-src-sha256":"e0e0681f0da1130ede4e03a051630ea439c458cb97216cdb01771ebdbe44069b","depends":["base-4.16.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"mtl-2.2.2","pkg-name":"mtl","pkg-version":"2.2.2","depends":["base-4.16.3.0","transformers-0.5.6.2"]},{"type":"pre-existing","id":"parsec-3.1.15.0","pkg-name":"parsec","pkg-version":"3.1.15.0","depends":["base-4.16.3.0","bytestring-0.11.3.1","mtl-2.2.2","text-1.2.5.0"]},{"type":"pre-existing","id":"pretty-1.1.3.6","pkg-name":"pretty","pkg-version":"1.1.3.6","depends":["base-4.16.3.0","deepseq-1.4.6.1","ghc-prim-0.8.0"]},{"type":"configured","id":"primitive-0.8.0.0-80350fff1c8215a379d63da45891f42ed8c7c56918c3616f5a3d952c9565ccd5","pkg-name":"primitive","pkg-version":"0.8.0.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"826bf2a702a26ef87532a135808abad69d74f70ead39f26c06d034b1f0537a19","pkg-src-sha256":"5553c21b4a789f9b591eed69e598cc58484c274af29250e517b5a8bcc62b995f","depends":["base-4.16.3.0","data-array-byte-0.1.0.1-0817fab8e0aaf64af1a7971c563c38ecb28cc0ab9636107e9ad76dcbeb16da1b","deepseq-1.4.6.1","template-haskell-2.18.0.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"process-1.6.13.2","pkg-name":"process","pkg-version":"1.6.13.2","depends":["base-4.16.3.0","deepseq-1.4.6.1","directory-1.3.6.2","filepath-1.4.2.2","unix-2.7.2.2"]},{"type":"configured","id":"random-1.2.1.1-cacc1501582bd05c5eec5dea004194a2d9ff55cb8e30c141ffdbf5e9daaf76af","pkg-name":"random","pkg-version":"1.2.1.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"dea1f11e5569332dc6c8efaad1cb301016a5587b6754943a49f9de08ae0e56d9","pkg-src-sha256":"3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76","depends":["base-4.16.3.0","bytestring-0.11.3.1","deepseq-1.4.6.1","mtl-2.2.2","splitmix-0.1.0.4-c5a30dae3b6eb47ac8ba23a866a9ff6f96961c3b68fcb8f53614067e0454a0ed"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"rts","pkg-name":"rts","pkg-version":"1.0.2","depends":[]},{"type":"configured","id":"shake-0.19.7-c24bb8b0eb33f2b23d3d2e2c00ee442f0331dc02df435ed6f01ecdd5d90e7c16","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.16.3.0","binary-0.8.9.0","bytestring-0.11.3.1","deepseq-1.4.6.1","directory-1.3.6.2","extra-1.7.12-30b204f811b2d9236d3796a4afd55e03a0ebcc236d0936fb48954c001a668d85","filepath-1.4.2.2","filepattern-0.1.3-553b0fa2b393f41d7a33e70dc70a212a84b4741694eae595c027e2a0bc506bee","hashable-1.4.2.0-1717d4bc84bbd91e502a6a1d0fbbe9b2913f122572feea473d06f64594b446ec","heaps-0.4-9ef32198cdd1e78830c66145fd58d308d8307d7f9673cf1db51fe0663adea5aa","js-dgtable-0.5.2-ea71215251f637eb99b420c532ed9d47fc287d0541c7aafb9f4e7e212e22ad28","js-flot-0.8.3-7863d367d217e7fe0af1683d0b88b641c00cfce9045c088f91bd42dc630b880d","js-jquery-3.3.1-2a68aa0f8e1547440ea68362a9d21af8f4307038e7d45b7c167ab2cfc9fc74c5","primitive-0.8.0.0-80350fff1c8215a379d63da45891f42ed8c7c56918c3616f5a3d952c9565ccd5","process-1.6.13.2","random-1.2.1.1-cacc1501582bd05c5eec5dea004194a2d9ff55cb8e30c141ffdbf5e9daaf76af","time-1.11.1.1","transformers-0.5.6.2","unix-2.7.2.2","unordered-containers-0.2.19.1-685b2b9941ba1dbca71c41b7b129599fa9e60a37ae0cee284194ab113d2ea671","utf8-string-1.0.2-d22b18266988d52549714440c6819d7b11afafcefe4fbf4550bb19de6eaeb0e4"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"shake-0.19.7-e-shake-a14177998667ebf92ef887106b02787b16223d1ae08cbd3e5a9531032831b6ee","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.16.3.0","binary-0.8.9.0","bytestring-0.11.3.1","deepseq-1.4.6.1","directory-1.3.6.2","extra-1.7.12-30b204f811b2d9236d3796a4afd55e03a0ebcc236d0936fb48954c001a668d85","filepath-1.4.2.2","filepattern-0.1.3-553b0fa2b393f41d7a33e70dc70a212a84b4741694eae595c027e2a0bc506bee","hashable-1.4.2.0-1717d4bc84bbd91e502a6a1d0fbbe9b2913f122572feea473d06f64594b446ec","heaps-0.4-9ef32198cdd1e78830c66145fd58d308d8307d7f9673cf1db51fe0663adea5aa","js-dgtable-0.5.2-ea71215251f637eb99b420c532ed9d47fc287d0541c7aafb9f4e7e212e22ad28","js-flot-0.8.3-7863d367d217e7fe0af1683d0b88b641c00cfce9045c088f91bd42dc630b880d","js-jquery-3.3.1-2a68aa0f8e1547440ea68362a9d21af8f4307038e7d45b7c167ab2cfc9fc74c5","primitive-0.8.0.0-80350fff1c8215a379d63da45891f42ed8c7c56918c3616f5a3d952c9565ccd5","process-1.6.13.2","random-1.2.1.1-cacc1501582bd05c5eec5dea004194a2d9ff55cb8e30c141ffdbf5e9daaf76af","time-1.11.1.1","transformers-0.5.6.2","unix-2.7.2.2","unordered-containers-0.2.19.1-685b2b9941ba1dbca71c41b7b129599fa9e60a37ae0cee284194ab113d2ea671","utf8-string-1.0.2-d22b18266988d52549714440c6819d7b11afafcefe4fbf4550bb19de6eaeb0e4"],"exe-depends":[],"component-name":"exe:shake","bin-file":"/home/matt/.cabal/store/ghc-9.2.4/shake-0.19.7-e-shake-a14177998667ebf92ef887106b02787b16223d1ae08cbd3e5a9531032831b6ee/bin/shake"},{"type":"configured","id":"splitmix-0.1.0.4-c5a30dae3b6eb47ac8ba23a866a9ff6f96961c3b68fcb8f53614067e0454a0ed","pkg-name":"splitmix","pkg-version":"0.1.0.4","flags":{"optimised-mixer":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"db25c2e17967aa6b6046ab8b1b96ba3f344ca59a62b60fb6113d51ea305a3d8e","pkg-src-sha256":"6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa","depends":["base-4.16.3.0","deepseq-1.4.6.1"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"template-haskell-2.18.0.0","pkg-name":"template-haskell","pkg-version":"2.18.0.0","depends":["base-4.16.3.0","ghc-boot-th-9.2.4","ghc-prim-0.8.0","pretty-1.1.3.6"]},{"type":"pre-existing","id":"text-1.2.5.0","pkg-name":"text","pkg-version":"1.2.5.0","depends":["array-0.5.4.0","base-4.16.3.0","binary-0.8.9.0","bytestring-0.11.3.1","deepseq-1.4.6.1","ghc-prim-0.8.0","template-haskell-2.18.0.0"]},{"type":"pre-existing","id":"time-1.11.1.1","pkg-name":"time","pkg-version":"1.11.1.1","depends":["base-4.16.3.0","deepseq-1.4.6.1"]},{"type":"pre-existing","id":"transformers-0.5.6.2","pkg-name":"transformers","pkg-version":"0.5.6.2","depends":["base-4.16.3.0"]},{"type":"pre-existing","id":"unix-2.7.2.2","pkg-name":"unix","pkg-version":"2.7.2.2","depends":["base-4.16.3.0","bytestring-0.11.3.1","time-1.11.1.1"]},{"type":"configured","id":"unordered-containers-0.2.19.1-685b2b9941ba1dbca71c41b7b129599fa9e60a37ae0cee284194ab113d2ea671","pkg-name":"unordered-containers","pkg-version":"0.2.19.1","flags":{"debug":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"9ad8972c2e913c37b1d4f0e1261517fd7a1b8c8a58077e057be69837e3dbaa00","pkg-src-sha256":"1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2","depends":["base-4.16.3.0","deepseq-1.4.6.1","hashable-1.4.2.0-1717d4bc84bbd91e502a6a1d0fbbe9b2913f122572feea473d06f64594b446ec","template-haskell-2.18.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"utf8-string-1.0.2-d22b18266988d52549714440c6819d7b11afafcefe4fbf4550bb19de6eaeb0e4","pkg-name":"utf8-string","pkg-version":"1.0.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"79416292186feeaf1f60e49ac5a1ffae9bf1b120e040a74bf0e81ca7f1d31d3f","pkg-src-sha256":"ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a","depends":["base-4.16.3.0","bytestring-0.11.3.1"],"exe-depends":[],"component-name":"lib"}]} \ No newline at end of file
diff --git a/hadrian/bootstrap/plan-9_2_5.json b/hadrian/bootstrap/plan-9_2_5.json
index 1c4aa97473..a7126b4dc3 100644
--- a/hadrian/bootstrap/plan-9_2_5.json
+++ b/hadrian/bootstrap/plan-9_2_5.json
@@ -1 +1 @@
-{"cabal-version":"3.8.1.0","cabal-lib-version":"3.8.1.0","compiler-id":"ghc-9.2.5","os":"linux","arch":"x86_64","install-plan":[{"type":"pre-existing","id":"Cabal-3.6.3.0","pkg-name":"Cabal","pkg-version":"3.6.3.0","depends":["array-0.5.4.0","base-4.16.4.0","binary-0.8.9.0","bytestring-0.11.3.1","containers-0.6.5.1","deepseq-1.4.6.1","directory-1.3.6.2","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","pretty-1.1.3.6","process-1.6.16.0","text-1.2.5.0","time-1.11.1.1","transformers-0.5.6.2","unix-2.7.2.2"]},{"type":"configured","id":"QuickCheck-2.14.2-a60570c1dc670dd11ee37ddb50cca2b8e1507fbfd3533a81c0d15b3e979210d9","pkg-name":"QuickCheck","pkg-version":"2.14.2","flags":{"old-random":false,"templatehaskell":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4ce29211223d5e6620ebceba34a3ca9ccf1c10c0cf387d48aea45599222ee5aa","pkg-src-sha256":"d87b6c85696b601175274361fa62217894401e401e150c3c5d4013ac53cd36f3","depends":["base-4.16.4.0","containers-0.6.5.1","deepseq-1.4.6.1","random-1.2.1.1-885807a6bd9d41e8fc2e75d8dd80c9e20b0ba1730d05301809f964023485f9cd","splitmix-0.1.0.4-05e94c68071a79f6544a1eb40799e77fc0303dc95f5ca42c8c0e018ecfa089b5","template-haskell-2.18.0.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"array-0.5.4.0","pkg-name":"array","pkg-version":"0.5.4.0","depends":["base-4.16.4.0"]},{"type":"pre-existing","id":"base-4.16.4.0","pkg-name":"base","pkg-version":"4.16.4.0","depends":["ghc-bignum-1.2","ghc-prim-0.8.0","rts"]},{"type":"pre-existing","id":"binary-0.8.9.0","pkg-name":"binary","pkg-version":"0.8.9.0","depends":["array-0.5.4.0","base-4.16.4.0","bytestring-0.11.3.1","containers-0.6.5.1"]},{"type":"pre-existing","id":"bytestring-0.11.3.1","pkg-name":"bytestring","pkg-version":"0.11.3.1","depends":["base-4.16.4.0","deepseq-1.4.6.1","ghc-prim-0.8.0","template-haskell-2.18.0.0"]},{"type":"configured","id":"clock-0.8.3-215ec906b409ed911e369445f74ad918e85cd7b8092968f82c1604247e0b0fcd","pkg-name":"clock","pkg-version":"0.8.3","flags":{"llvm":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c","pkg-src-sha256":"845ce5db4c98cefd517323e005f87effceff886987305e421c4ef616dc0505d1","depends":["base-4.16.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"containers-0.6.5.1","pkg-name":"containers","pkg-version":"0.6.5.1","depends":["array-0.5.4.0","base-4.16.4.0","deepseq-1.4.6.1"]},{"type":"configured","id":"data-array-byte-0.1.0.1-d7b8f065d09e7600a2fd18c6f110ad2e9c224dc7abeb08598e439eae971a67a4","pkg-name":"data-array-byte","pkg-version":"0.1.0.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"2ef1bd3511e82ba56f7f23cd793dd2da84338a1e7c2cbea5b151417afe3baada","pkg-src-sha256":"1bb6eca0b3e02d057fe7f4e14c81ef395216f421ab30fdaa1b18017c9c025600","depends":["base-4.16.4.0","deepseq-1.4.6.1","template-haskell-2.18.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"deepseq-1.4.6.1","pkg-name":"deepseq","pkg-version":"1.4.6.1","depends":["array-0.5.4.0","base-4.16.4.0"]},{"type":"pre-existing","id":"directory-1.3.6.2","pkg-name":"directory","pkg-version":"1.3.6.2","depends":["base-4.16.4.0","filepath-1.4.2.2","time-1.11.1.1","unix-2.7.2.2"]},{"type":"configured","id":"extra-1.7.12-0b85ca5767dc2461848ebe03542bc268b1ae5936dc02db50abd46225b9124742","pkg-name":"extra","pkg-version":"1.7.12","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3ac58d7341976173d1052e7b2837d119212d9afcf911735667c7f1ab67aec25f","pkg-src-sha256":"e571a9ec1d8865f0fbb0e0ba1eb575f783b0365c80db19b54a93600bae43b03c","depends":["base-4.16.4.0","clock-0.8.3-215ec906b409ed911e369445f74ad918e85cd7b8092968f82c1604247e0b0fcd","directory-1.3.6.2","filepath-1.4.2.2","process-1.6.16.0","time-1.11.1.1","unix-2.7.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"filepath-1.4.2.2","pkg-name":"filepath","pkg-version":"1.4.2.2","depends":["base-4.16.4.0"]},{"type":"configured","id":"filepattern-0.1.3-9fd7bc2eeb28ea202ee356e42d64124a8d75f39744aba252872ec5069448ff53","pkg-name":"filepattern","pkg-version":"0.1.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"372c1733d83b90045eb29da9f010fed79bfef8771ce65eb126a1d83ecc54a9a2","pkg-src-sha256":"cc445d439ea2f65cac7604d3578aa2c3a62e5a91dc989f4ce5b3390db9e59636","depends":["base-4.16.4.0","directory-1.3.6.2","extra-1.7.12-0b85ca5767dc2461848ebe03542bc268b1ae5936dc02db50abd46225b9124742","filepath-1.4.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"ghc-bignum-1.2","pkg-name":"ghc-bignum","pkg-version":"1.2","depends":["ghc-prim-0.8.0"]},{"type":"pre-existing","id":"ghc-boot-th-9.2.5","pkg-name":"ghc-boot-th","pkg-version":"9.2.5","depends":["base-4.16.4.0"]},{"type":"pre-existing","id":"ghc-prim-0.8.0","pkg-name":"ghc-prim","pkg-version":"0.8.0","depends":["rts"]},{"type":"configured","id":"hadrian-0.1.0.0-inplace-hadrian","pkg-name":"hadrian","pkg-version":"0.1.0.0","flags":{"selftest":true,"threaded":true},"style":"local","pkg-src":{"type":"local","path":"/home/matt/ghc-scratch/hadrian/."},"dist-dir":"/home/matt/ghc-scratch/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.2.5/hadrian-0.1.0.0/x/hadrian","build-info":"/home/matt/ghc-scratch/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.2.5/hadrian-0.1.0.0/x/hadrian/build-info.json","depends":["Cabal-3.6.3.0","QuickCheck-2.14.2-a60570c1dc670dd11ee37ddb50cca2b8e1507fbfd3533a81c0d15b3e979210d9","base-4.16.4.0","bytestring-0.11.3.1","containers-0.6.5.1","directory-1.3.6.2","extra-1.7.12-0b85ca5767dc2461848ebe03542bc268b1ae5936dc02db50abd46225b9124742","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","shake-0.19.7-d5ed83c858bf166c2267f32ca7608d79b8ca2402f05e75acba55d9c6a59cf591","text-1.2.5.0","time-1.11.1.1","transformers-0.5.6.2","unordered-containers-0.2.19.1-e17e4eaa57041cf90fa7c8c76a10acb176295004933e8ee0b6f66d3f5c723587"],"exe-depends":[],"component-name":"exe:hadrian","bin-file":"/home/matt/ghc-scratch/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.2.5/hadrian-0.1.0.0/x/hadrian/build/hadrian/hadrian"},{"type":"configured","id":"hashable-1.4.2.0-cd83efde5acf8903e5c98006b3dc0a9ad0c59df25dc4cfb7a8637e6a72487748","pkg-name":"hashable","pkg-version":"1.4.2.0","flags":{"integer-gmp":true,"random-initial-seed":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"585792335d5541dba78fa8dfcb291a89cd5812a281825ff7a44afa296ab5d58a","pkg-src-sha256":"1b4000ea82b81f69d46d0af4152c10c6303873510738e24cfc4767760d30e3f8","depends":["base-4.16.4.0","bytestring-0.11.3.1","containers-0.6.5.1","data-array-byte-0.1.0.1-d7b8f065d09e7600a2fd18c6f110ad2e9c224dc7abeb08598e439eae971a67a4","deepseq-1.4.6.1","filepath-1.4.2.2","ghc-bignum-1.2","ghc-prim-0.8.0","text-1.2.5.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"heaps-0.4-c5219f46f5acc26739c28a1d2d3173defe4290dc709c72d7420452f4ca3cdb15","pkg-name":"heaps","pkg-version":"0.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"66b19fcd813b0e4db3e0bac541bd46606c3b13d3d081d9f9666f4be0f5ff14b8","pkg-src-sha256":"89329df8b95ae99ef272e41e7a2d0fe2f1bb7eacfcc34bc01664414b33067cfd","depends":["base-4.16.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-dgtable-0.5.2-6717f236827988762b171655a351e0a3db4d4ff00cbba6c248ee24870e49a222","pkg-name":"js-dgtable","pkg-version":"0.5.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f75cb4fa53c88c65794becdd48eb0d3b2b8abd89a3d5c19e87af91f5225c15e4","pkg-src-sha256":"e28dd65bee8083b17210134e22e01c6349dc33c3b7bd17705973cd014e9f20ac","depends":["base-4.16.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-flot-0.8.3-3f91fca8ca3efea1322bbf30309f3f31075f84e270d14a14699fdf5c8af727bc","pkg-name":"js-flot","pkg-version":"0.8.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4c1c447a9a2fba0adba6d30678302a30c32b9dfde9e7aa9e9156483e1545096d","pkg-src-sha256":"1ba2f2a6b8d85da76c41f526c98903cbb107f8642e506c072c1e7e3c20fe5e7a","depends":["base-4.16.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-jquery-3.3.1-b79aaacdca50f9d6c80a5a81cbf0facb6d3babc309abd7c4829e511c58413d5d","pkg-name":"js-jquery","pkg-version":"3.3.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"59ab6c79159549ef94b584abce8e6d3b336014c2cce1337b59a8f637e2856df5","pkg-src-sha256":"e0e0681f0da1130ede4e03a051630ea439c458cb97216cdb01771ebdbe44069b","depends":["base-4.16.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"mtl-2.2.2","pkg-name":"mtl","pkg-version":"2.2.2","depends":["base-4.16.4.0","transformers-0.5.6.2"]},{"type":"pre-existing","id":"parsec-3.1.15.0","pkg-name":"parsec","pkg-version":"3.1.15.0","depends":["base-4.16.4.0","bytestring-0.11.3.1","mtl-2.2.2","text-1.2.5.0"]},{"type":"pre-existing","id":"pretty-1.1.3.6","pkg-name":"pretty","pkg-version":"1.1.3.6","depends":["base-4.16.4.0","deepseq-1.4.6.1","ghc-prim-0.8.0"]},{"type":"configured","id":"primitive-0.8.0.0-653648ffbc2bb5880dce88aae02fcd60a85d12a5e665e103a4604adbc2276599","pkg-name":"primitive","pkg-version":"0.8.0.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"826bf2a702a26ef87532a135808abad69d74f70ead39f26c06d034b1f0537a19","pkg-src-sha256":"5553c21b4a789f9b591eed69e598cc58484c274af29250e517b5a8bcc62b995f","depends":["base-4.16.4.0","data-array-byte-0.1.0.1-d7b8f065d09e7600a2fd18c6f110ad2e9c224dc7abeb08598e439eae971a67a4","deepseq-1.4.6.1","template-haskell-2.18.0.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"process-1.6.16.0","pkg-name":"process","pkg-version":"1.6.16.0","depends":["base-4.16.4.0","deepseq-1.4.6.1","directory-1.3.6.2","filepath-1.4.2.2","unix-2.7.2.2"]},{"type":"configured","id":"random-1.2.1.1-885807a6bd9d41e8fc2e75d8dd80c9e20b0ba1730d05301809f964023485f9cd","pkg-name":"random","pkg-version":"1.2.1.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"dea1f11e5569332dc6c8efaad1cb301016a5587b6754943a49f9de08ae0e56d9","pkg-src-sha256":"3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76","depends":["base-4.16.4.0","bytestring-0.11.3.1","deepseq-1.4.6.1","mtl-2.2.2","splitmix-0.1.0.4-05e94c68071a79f6544a1eb40799e77fc0303dc95f5ca42c8c0e018ecfa089b5"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"rts","pkg-name":"rts","pkg-version":"1.0.2","depends":[]},{"type":"configured","id":"shake-0.19.7-d5ed83c858bf166c2267f32ca7608d79b8ca2402f05e75acba55d9c6a59cf591","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.16.4.0","binary-0.8.9.0","bytestring-0.11.3.1","deepseq-1.4.6.1","directory-1.3.6.2","extra-1.7.12-0b85ca5767dc2461848ebe03542bc268b1ae5936dc02db50abd46225b9124742","filepath-1.4.2.2","filepattern-0.1.3-9fd7bc2eeb28ea202ee356e42d64124a8d75f39744aba252872ec5069448ff53","hashable-1.4.2.0-cd83efde5acf8903e5c98006b3dc0a9ad0c59df25dc4cfb7a8637e6a72487748","heaps-0.4-c5219f46f5acc26739c28a1d2d3173defe4290dc709c72d7420452f4ca3cdb15","js-dgtable-0.5.2-6717f236827988762b171655a351e0a3db4d4ff00cbba6c248ee24870e49a222","js-flot-0.8.3-3f91fca8ca3efea1322bbf30309f3f31075f84e270d14a14699fdf5c8af727bc","js-jquery-3.3.1-b79aaacdca50f9d6c80a5a81cbf0facb6d3babc309abd7c4829e511c58413d5d","primitive-0.8.0.0-653648ffbc2bb5880dce88aae02fcd60a85d12a5e665e103a4604adbc2276599","process-1.6.16.0","random-1.2.1.1-885807a6bd9d41e8fc2e75d8dd80c9e20b0ba1730d05301809f964023485f9cd","time-1.11.1.1","transformers-0.5.6.2","unix-2.7.2.2","unordered-containers-0.2.19.1-e17e4eaa57041cf90fa7c8c76a10acb176295004933e8ee0b6f66d3f5c723587","utf8-string-1.0.2-6da47bc6d69d238101f1e6a89229b2565caafca0fff03fece9abd3304b0d2641"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"shake-0.19.7-e-shake-763e20a0677eb65ee96d570cfde80013759112dca97001cf52844e1a5caf8870","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.16.4.0","binary-0.8.9.0","bytestring-0.11.3.1","deepseq-1.4.6.1","directory-1.3.6.2","extra-1.7.12-0b85ca5767dc2461848ebe03542bc268b1ae5936dc02db50abd46225b9124742","filepath-1.4.2.2","filepattern-0.1.3-9fd7bc2eeb28ea202ee356e42d64124a8d75f39744aba252872ec5069448ff53","hashable-1.4.2.0-cd83efde5acf8903e5c98006b3dc0a9ad0c59df25dc4cfb7a8637e6a72487748","heaps-0.4-c5219f46f5acc26739c28a1d2d3173defe4290dc709c72d7420452f4ca3cdb15","js-dgtable-0.5.2-6717f236827988762b171655a351e0a3db4d4ff00cbba6c248ee24870e49a222","js-flot-0.8.3-3f91fca8ca3efea1322bbf30309f3f31075f84e270d14a14699fdf5c8af727bc","js-jquery-3.3.1-b79aaacdca50f9d6c80a5a81cbf0facb6d3babc309abd7c4829e511c58413d5d","primitive-0.8.0.0-653648ffbc2bb5880dce88aae02fcd60a85d12a5e665e103a4604adbc2276599","process-1.6.16.0","random-1.2.1.1-885807a6bd9d41e8fc2e75d8dd80c9e20b0ba1730d05301809f964023485f9cd","time-1.11.1.1","transformers-0.5.6.2","unix-2.7.2.2","unordered-containers-0.2.19.1-e17e4eaa57041cf90fa7c8c76a10acb176295004933e8ee0b6f66d3f5c723587","utf8-string-1.0.2-6da47bc6d69d238101f1e6a89229b2565caafca0fff03fece9abd3304b0d2641"],"exe-depends":[],"component-name":"exe:shake","bin-file":"/home/matt/.cabal/store/ghc-9.2.5/shake-0.19.7-e-shake-763e20a0677eb65ee96d570cfde80013759112dca97001cf52844e1a5caf8870/bin/shake"},{"type":"configured","id":"splitmix-0.1.0.4-05e94c68071a79f6544a1eb40799e77fc0303dc95f5ca42c8c0e018ecfa089b5","pkg-name":"splitmix","pkg-version":"0.1.0.4","flags":{"optimised-mixer":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"db25c2e17967aa6b6046ab8b1b96ba3f344ca59a62b60fb6113d51ea305a3d8e","pkg-src-sha256":"6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa","depends":["base-4.16.4.0","deepseq-1.4.6.1"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"template-haskell-2.18.0.0","pkg-name":"template-haskell","pkg-version":"2.18.0.0","depends":["base-4.16.4.0","ghc-boot-th-9.2.5","ghc-prim-0.8.0","pretty-1.1.3.6"]},{"type":"pre-existing","id":"text-1.2.5.0","pkg-name":"text","pkg-version":"1.2.5.0","depends":["array-0.5.4.0","base-4.16.4.0","binary-0.8.9.0","bytestring-0.11.3.1","deepseq-1.4.6.1","ghc-prim-0.8.0","template-haskell-2.18.0.0"]},{"type":"pre-existing","id":"time-1.11.1.1","pkg-name":"time","pkg-version":"1.11.1.1","depends":["base-4.16.4.0","deepseq-1.4.6.1"]},{"type":"pre-existing","id":"transformers-0.5.6.2","pkg-name":"transformers","pkg-version":"0.5.6.2","depends":["base-4.16.4.0"]},{"type":"pre-existing","id":"unix-2.7.2.2","pkg-name":"unix","pkg-version":"2.7.2.2","depends":["base-4.16.4.0","bytestring-0.11.3.1","time-1.11.1.1"]},{"type":"configured","id":"unordered-containers-0.2.19.1-e17e4eaa57041cf90fa7c8c76a10acb176295004933e8ee0b6f66d3f5c723587","pkg-name":"unordered-containers","pkg-version":"0.2.19.1","flags":{"debug":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"9ad8972c2e913c37b1d4f0e1261517fd7a1b8c8a58077e057be69837e3dbaa00","pkg-src-sha256":"1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2","depends":["base-4.16.4.0","deepseq-1.4.6.1","hashable-1.4.2.0-cd83efde5acf8903e5c98006b3dc0a9ad0c59df25dc4cfb7a8637e6a72487748","template-haskell-2.18.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"utf8-string-1.0.2-6da47bc6d69d238101f1e6a89229b2565caafca0fff03fece9abd3304b0d2641","pkg-name":"utf8-string","pkg-version":"1.0.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"79416292186feeaf1f60e49ac5a1ffae9bf1b120e040a74bf0e81ca7f1d31d3f","pkg-src-sha256":"ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a","depends":["base-4.16.4.0","bytestring-0.11.3.1"],"exe-depends":[],"component-name":"lib"}]} \ No newline at end of file
+{"cabal-version":"3.8.1.0","cabal-lib-version":"3.8.1.0","compiler-id":"ghc-9.2.5","os":"linux","arch":"x86_64","install-plan":[{"type":"pre-existing","id":"Cabal-3.6.3.0","pkg-name":"Cabal","pkg-version":"3.6.3.0","depends":["array-0.5.4.0","base-4.16.4.0","binary-0.8.9.0","bytestring-0.11.3.1","containers-0.6.5.1","deepseq-1.4.6.1","directory-1.3.6.2","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","pretty-1.1.3.6","process-1.6.16.0","text-1.2.5.0","time-1.11.1.1","transformers-0.5.6.2","unix-2.7.2.2"]},{"type":"configured","id":"QuickCheck-2.14.2-a60570c1dc670dd11ee37ddb50cca2b8e1507fbfd3533a81c0d15b3e979210d9","pkg-name":"QuickCheck","pkg-version":"2.14.2","flags":{"old-random":false,"templatehaskell":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4ce29211223d5e6620ebceba34a3ca9ccf1c10c0cf387d48aea45599222ee5aa","pkg-src-sha256":"d87b6c85696b601175274361fa62217894401e401e150c3c5d4013ac53cd36f3","depends":["base-4.16.4.0","containers-0.6.5.1","deepseq-1.4.6.1","random-1.2.1.1-885807a6bd9d41e8fc2e75d8dd80c9e20b0ba1730d05301809f964023485f9cd","splitmix-0.1.0.4-05e94c68071a79f6544a1eb40799e77fc0303dc95f5ca42c8c0e018ecfa089b5","template-haskell-2.18.0.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"array-0.5.4.0","pkg-name":"array","pkg-version":"0.5.4.0","depends":["base-4.16.4.0"]},{"type":"pre-existing","id":"base-4.16.4.0","pkg-name":"base","pkg-version":"4.16.4.0","depends":["ghc-bignum-1.2","ghc-prim-0.8.0","rts"]},{"type":"configured","id":"base16-bytestring-1.0.2.0-7c01b96bee3990467711e9210569522a67be8600958052b3b662eb864dedb587","pkg-name":"base16-bytestring","pkg-version":"1.0.2.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"64abad7816ab8cabed8489e29f807b3a6f828e0b2cec0eae404323d69d36df9a","pkg-src-sha256":"1d5a91143ef0e22157536093ec8e59d226a68220ec89378d5dcaeea86472c784","depends":["base-4.16.4.0","bytestring-0.11.3.1"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"binary-0.8.9.0","pkg-name":"binary","pkg-version":"0.8.9.0","depends":["array-0.5.4.0","base-4.16.4.0","bytestring-0.11.3.1","containers-0.6.5.1"]},{"type":"pre-existing","id":"bytestring-0.11.3.1","pkg-name":"bytestring","pkg-version":"0.11.3.1","depends":["base-4.16.4.0","deepseq-1.4.6.1","ghc-prim-0.8.0","template-haskell-2.18.0.0"]},{"type":"configured","id":"clock-0.8.3-215ec906b409ed911e369445f74ad918e85cd7b8092968f82c1604247e0b0fcd","pkg-name":"clock","pkg-version":"0.8.3","flags":{"llvm":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c","pkg-src-sha256":"845ce5db4c98cefd517323e005f87effceff886987305e421c4ef616dc0505d1","depends":["base-4.16.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"containers-0.6.5.1","pkg-name":"containers","pkg-version":"0.6.5.1","depends":["array-0.5.4.0","base-4.16.4.0","deepseq-1.4.6.1"]},{"type":"configured","id":"cryptohash-sha256-0.11.102.1-fc2c91005ee6c3bbec04cf608246c372198e6571bd2e0086cd14458e1c64bc91","pkg-name":"cryptohash-sha256","pkg-version":"0.11.102.1","flags":{"exe":false,"use-cbits":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"72ce9095872eae653addca5f412ac8070d6282d8e1c8578c2237c33f2cbbf4bc","pkg-src-sha256":"73a7dc7163871a80837495039a099967b11f5c4fe70a118277842f7a713c6bf6","depends":["base-4.16.4.0","bytestring-0.11.3.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"data-array-byte-0.1.0.1-d7b8f065d09e7600a2fd18c6f110ad2e9c224dc7abeb08598e439eae971a67a4","pkg-name":"data-array-byte","pkg-version":"0.1.0.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"2ef1bd3511e82ba56f7f23cd793dd2da84338a1e7c2cbea5b151417afe3baada","pkg-src-sha256":"1bb6eca0b3e02d057fe7f4e14c81ef395216f421ab30fdaa1b18017c9c025600","depends":["base-4.16.4.0","deepseq-1.4.6.1","template-haskell-2.18.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"deepseq-1.4.6.1","pkg-name":"deepseq","pkg-version":"1.4.6.1","depends":["array-0.5.4.0","base-4.16.4.0"]},{"type":"pre-existing","id":"directory-1.3.6.2","pkg-name":"directory","pkg-version":"1.3.6.2","depends":["base-4.16.4.0","filepath-1.4.2.2","time-1.11.1.1","unix-2.7.2.2"]},{"type":"configured","id":"extra-1.7.12-0b85ca5767dc2461848ebe03542bc268b1ae5936dc02db50abd46225b9124742","pkg-name":"extra","pkg-version":"1.7.12","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3ac58d7341976173d1052e7b2837d119212d9afcf911735667c7f1ab67aec25f","pkg-src-sha256":"e571a9ec1d8865f0fbb0e0ba1eb575f783b0365c80db19b54a93600bae43b03c","depends":["base-4.16.4.0","clock-0.8.3-215ec906b409ed911e369445f74ad918e85cd7b8092968f82c1604247e0b0fcd","directory-1.3.6.2","filepath-1.4.2.2","process-1.6.16.0","time-1.11.1.1","unix-2.7.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"filepath-1.4.2.2","pkg-name":"filepath","pkg-version":"1.4.2.2","depends":["base-4.16.4.0"]},{"type":"configured","id":"filepattern-0.1.3-9fd7bc2eeb28ea202ee356e42d64124a8d75f39744aba252872ec5069448ff53","pkg-name":"filepattern","pkg-version":"0.1.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"372c1733d83b90045eb29da9f010fed79bfef8771ce65eb126a1d83ecc54a9a2","pkg-src-sha256":"cc445d439ea2f65cac7604d3578aa2c3a62e5a91dc989f4ce5b3390db9e59636","depends":["base-4.16.4.0","directory-1.3.6.2","extra-1.7.12-0b85ca5767dc2461848ebe03542bc268b1ae5936dc02db50abd46225b9124742","filepath-1.4.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"ghc-bignum-1.2","pkg-name":"ghc-bignum","pkg-version":"1.2","depends":["ghc-prim-0.8.0"]},{"type":"pre-existing","id":"ghc-boot-th-9.2.5","pkg-name":"ghc-boot-th","pkg-version":"9.2.5","depends":["base-4.16.4.0"]},{"type":"pre-existing","id":"ghc-prim-0.8.0","pkg-name":"ghc-prim","pkg-version":"0.8.0","depends":["rts"]},{"type":"configured","id":"hadrian-0.1.0.0-inplace-hadrian","pkg-name":"hadrian","pkg-version":"0.1.0.0","flags":{"selftest":true,"threaded":true},"style":"local","pkg-src":{"type":"local","path":"/home/matt/ghc-rodrigo/hadrian/."},"dist-dir":"/home/matt/ghc-rodrigo/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.2.5/hadrian-0.1.0.0/x/hadrian","build-info":"/home/matt/ghc-rodrigo/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.2.5/hadrian-0.1.0.0/x/hadrian/build-info.json","depends":["Cabal-3.6.3.0","QuickCheck-2.14.2-a60570c1dc670dd11ee37ddb50cca2b8e1507fbfd3533a81c0d15b3e979210d9","base-4.16.4.0","base16-bytestring-1.0.2.0-7c01b96bee3990467711e9210569522a67be8600958052b3b662eb864dedb587","bytestring-0.11.3.1","containers-0.6.5.1","cryptohash-sha256-0.11.102.1-fc2c91005ee6c3bbec04cf608246c372198e6571bd2e0086cd14458e1c64bc91","directory-1.3.6.2","extra-1.7.12-0b85ca5767dc2461848ebe03542bc268b1ae5936dc02db50abd46225b9124742","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","shake-0.19.7-d5ed83c858bf166c2267f32ca7608d79b8ca2402f05e75acba55d9c6a59cf591","text-1.2.5.0","time-1.11.1.1","transformers-0.5.6.2","unordered-containers-0.2.19.1-e17e4eaa57041cf90fa7c8c76a10acb176295004933e8ee0b6f66d3f5c723587"],"exe-depends":[],"component-name":"exe:hadrian","bin-file":"/home/matt/ghc-rodrigo/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.2.5/hadrian-0.1.0.0/x/hadrian/build/hadrian/hadrian"},{"type":"configured","id":"hashable-1.4.2.0-cd83efde5acf8903e5c98006b3dc0a9ad0c59df25dc4cfb7a8637e6a72487748","pkg-name":"hashable","pkg-version":"1.4.2.0","flags":{"integer-gmp":true,"random-initial-seed":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"585792335d5541dba78fa8dfcb291a89cd5812a281825ff7a44afa296ab5d58a","pkg-src-sha256":"1b4000ea82b81f69d46d0af4152c10c6303873510738e24cfc4767760d30e3f8","depends":["base-4.16.4.0","bytestring-0.11.3.1","containers-0.6.5.1","data-array-byte-0.1.0.1-d7b8f065d09e7600a2fd18c6f110ad2e9c224dc7abeb08598e439eae971a67a4","deepseq-1.4.6.1","filepath-1.4.2.2","ghc-bignum-1.2","ghc-prim-0.8.0","text-1.2.5.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"heaps-0.4-c5219f46f5acc26739c28a1d2d3173defe4290dc709c72d7420452f4ca3cdb15","pkg-name":"heaps","pkg-version":"0.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"66b19fcd813b0e4db3e0bac541bd46606c3b13d3d081d9f9666f4be0f5ff14b8","pkg-src-sha256":"89329df8b95ae99ef272e41e7a2d0fe2f1bb7eacfcc34bc01664414b33067cfd","depends":["base-4.16.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-dgtable-0.5.2-6717f236827988762b171655a351e0a3db4d4ff00cbba6c248ee24870e49a222","pkg-name":"js-dgtable","pkg-version":"0.5.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f75cb4fa53c88c65794becdd48eb0d3b2b8abd89a3d5c19e87af91f5225c15e4","pkg-src-sha256":"e28dd65bee8083b17210134e22e01c6349dc33c3b7bd17705973cd014e9f20ac","depends":["base-4.16.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-flot-0.8.3-3f91fca8ca3efea1322bbf30309f3f31075f84e270d14a14699fdf5c8af727bc","pkg-name":"js-flot","pkg-version":"0.8.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4c1c447a9a2fba0adba6d30678302a30c32b9dfde9e7aa9e9156483e1545096d","pkg-src-sha256":"1ba2f2a6b8d85da76c41f526c98903cbb107f8642e506c072c1e7e3c20fe5e7a","depends":["base-4.16.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-jquery-3.3.1-b79aaacdca50f9d6c80a5a81cbf0facb6d3babc309abd7c4829e511c58413d5d","pkg-name":"js-jquery","pkg-version":"3.3.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"59ab6c79159549ef94b584abce8e6d3b336014c2cce1337b59a8f637e2856df5","pkg-src-sha256":"e0e0681f0da1130ede4e03a051630ea439c458cb97216cdb01771ebdbe44069b","depends":["base-4.16.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"mtl-2.2.2","pkg-name":"mtl","pkg-version":"2.2.2","depends":["base-4.16.4.0","transformers-0.5.6.2"]},{"type":"pre-existing","id":"parsec-3.1.15.0","pkg-name":"parsec","pkg-version":"3.1.15.0","depends":["base-4.16.4.0","bytestring-0.11.3.1","mtl-2.2.2","text-1.2.5.0"]},{"type":"pre-existing","id":"pretty-1.1.3.6","pkg-name":"pretty","pkg-version":"1.1.3.6","depends":["base-4.16.4.0","deepseq-1.4.6.1","ghc-prim-0.8.0"]},{"type":"configured","id":"primitive-0.8.0.0-653648ffbc2bb5880dce88aae02fcd60a85d12a5e665e103a4604adbc2276599","pkg-name":"primitive","pkg-version":"0.8.0.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"826bf2a702a26ef87532a135808abad69d74f70ead39f26c06d034b1f0537a19","pkg-src-sha256":"5553c21b4a789f9b591eed69e598cc58484c274af29250e517b5a8bcc62b995f","depends":["base-4.16.4.0","data-array-byte-0.1.0.1-d7b8f065d09e7600a2fd18c6f110ad2e9c224dc7abeb08598e439eae971a67a4","deepseq-1.4.6.1","template-haskell-2.18.0.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"process-1.6.16.0","pkg-name":"process","pkg-version":"1.6.16.0","depends":["base-4.16.4.0","deepseq-1.4.6.1","directory-1.3.6.2","filepath-1.4.2.2","unix-2.7.2.2"]},{"type":"configured","id":"random-1.2.1.1-885807a6bd9d41e8fc2e75d8dd80c9e20b0ba1730d05301809f964023485f9cd","pkg-name":"random","pkg-version":"1.2.1.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"dea1f11e5569332dc6c8efaad1cb301016a5587b6754943a49f9de08ae0e56d9","pkg-src-sha256":"3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76","depends":["base-4.16.4.0","bytestring-0.11.3.1","deepseq-1.4.6.1","mtl-2.2.2","splitmix-0.1.0.4-05e94c68071a79f6544a1eb40799e77fc0303dc95f5ca42c8c0e018ecfa089b5"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"rts","pkg-name":"rts","pkg-version":"1.0.2","depends":[]},{"type":"configured","id":"shake-0.19.7-d5ed83c858bf166c2267f32ca7608d79b8ca2402f05e75acba55d9c6a59cf591","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.16.4.0","binary-0.8.9.0","bytestring-0.11.3.1","deepseq-1.4.6.1","directory-1.3.6.2","extra-1.7.12-0b85ca5767dc2461848ebe03542bc268b1ae5936dc02db50abd46225b9124742","filepath-1.4.2.2","filepattern-0.1.3-9fd7bc2eeb28ea202ee356e42d64124a8d75f39744aba252872ec5069448ff53","hashable-1.4.2.0-cd83efde5acf8903e5c98006b3dc0a9ad0c59df25dc4cfb7a8637e6a72487748","heaps-0.4-c5219f46f5acc26739c28a1d2d3173defe4290dc709c72d7420452f4ca3cdb15","js-dgtable-0.5.2-6717f236827988762b171655a351e0a3db4d4ff00cbba6c248ee24870e49a222","js-flot-0.8.3-3f91fca8ca3efea1322bbf30309f3f31075f84e270d14a14699fdf5c8af727bc","js-jquery-3.3.1-b79aaacdca50f9d6c80a5a81cbf0facb6d3babc309abd7c4829e511c58413d5d","primitive-0.8.0.0-653648ffbc2bb5880dce88aae02fcd60a85d12a5e665e103a4604adbc2276599","process-1.6.16.0","random-1.2.1.1-885807a6bd9d41e8fc2e75d8dd80c9e20b0ba1730d05301809f964023485f9cd","time-1.11.1.1","transformers-0.5.6.2","unix-2.7.2.2","unordered-containers-0.2.19.1-e17e4eaa57041cf90fa7c8c76a10acb176295004933e8ee0b6f66d3f5c723587","utf8-string-1.0.2-6da47bc6d69d238101f1e6a89229b2565caafca0fff03fece9abd3304b0d2641"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"shake-0.19.7-e-shake-763e20a0677eb65ee96d570cfde80013759112dca97001cf52844e1a5caf8870","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.16.4.0","binary-0.8.9.0","bytestring-0.11.3.1","deepseq-1.4.6.1","directory-1.3.6.2","extra-1.7.12-0b85ca5767dc2461848ebe03542bc268b1ae5936dc02db50abd46225b9124742","filepath-1.4.2.2","filepattern-0.1.3-9fd7bc2eeb28ea202ee356e42d64124a8d75f39744aba252872ec5069448ff53","hashable-1.4.2.0-cd83efde5acf8903e5c98006b3dc0a9ad0c59df25dc4cfb7a8637e6a72487748","heaps-0.4-c5219f46f5acc26739c28a1d2d3173defe4290dc709c72d7420452f4ca3cdb15","js-dgtable-0.5.2-6717f236827988762b171655a351e0a3db4d4ff00cbba6c248ee24870e49a222","js-flot-0.8.3-3f91fca8ca3efea1322bbf30309f3f31075f84e270d14a14699fdf5c8af727bc","js-jquery-3.3.1-b79aaacdca50f9d6c80a5a81cbf0facb6d3babc309abd7c4829e511c58413d5d","primitive-0.8.0.0-653648ffbc2bb5880dce88aae02fcd60a85d12a5e665e103a4604adbc2276599","process-1.6.16.0","random-1.2.1.1-885807a6bd9d41e8fc2e75d8dd80c9e20b0ba1730d05301809f964023485f9cd","time-1.11.1.1","transformers-0.5.6.2","unix-2.7.2.2","unordered-containers-0.2.19.1-e17e4eaa57041cf90fa7c8c76a10acb176295004933e8ee0b6f66d3f5c723587","utf8-string-1.0.2-6da47bc6d69d238101f1e6a89229b2565caafca0fff03fece9abd3304b0d2641"],"exe-depends":[],"component-name":"exe:shake","bin-file":"/home/matt/.cabal/store/ghc-9.2.5/shake-0.19.7-e-shake-763e20a0677eb65ee96d570cfde80013759112dca97001cf52844e1a5caf8870/bin/shake"},{"type":"configured","id":"splitmix-0.1.0.4-05e94c68071a79f6544a1eb40799e77fc0303dc95f5ca42c8c0e018ecfa089b5","pkg-name":"splitmix","pkg-version":"0.1.0.4","flags":{"optimised-mixer":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"db25c2e17967aa6b6046ab8b1b96ba3f344ca59a62b60fb6113d51ea305a3d8e","pkg-src-sha256":"6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa","depends":["base-4.16.4.0","deepseq-1.4.6.1"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"template-haskell-2.18.0.0","pkg-name":"template-haskell","pkg-version":"2.18.0.0","depends":["base-4.16.4.0","ghc-boot-th-9.2.5","ghc-prim-0.8.0","pretty-1.1.3.6"]},{"type":"pre-existing","id":"text-1.2.5.0","pkg-name":"text","pkg-version":"1.2.5.0","depends":["array-0.5.4.0","base-4.16.4.0","binary-0.8.9.0","bytestring-0.11.3.1","deepseq-1.4.6.1","ghc-prim-0.8.0","template-haskell-2.18.0.0"]},{"type":"pre-existing","id":"time-1.11.1.1","pkg-name":"time","pkg-version":"1.11.1.1","depends":["base-4.16.4.0","deepseq-1.4.6.1"]},{"type":"pre-existing","id":"transformers-0.5.6.2","pkg-name":"transformers","pkg-version":"0.5.6.2","depends":["base-4.16.4.0"]},{"type":"pre-existing","id":"unix-2.7.2.2","pkg-name":"unix","pkg-version":"2.7.2.2","depends":["base-4.16.4.0","bytestring-0.11.3.1","time-1.11.1.1"]},{"type":"configured","id":"unordered-containers-0.2.19.1-e17e4eaa57041cf90fa7c8c76a10acb176295004933e8ee0b6f66d3f5c723587","pkg-name":"unordered-containers","pkg-version":"0.2.19.1","flags":{"debug":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"9ad8972c2e913c37b1d4f0e1261517fd7a1b8c8a58077e057be69837e3dbaa00","pkg-src-sha256":"1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2","depends":["base-4.16.4.0","deepseq-1.4.6.1","hashable-1.4.2.0-cd83efde5acf8903e5c98006b3dc0a9ad0c59df25dc4cfb7a8637e6a72487748","template-haskell-2.18.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"utf8-string-1.0.2-6da47bc6d69d238101f1e6a89229b2565caafca0fff03fece9abd3304b0d2641","pkg-name":"utf8-string","pkg-version":"1.0.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"79416292186feeaf1f60e49ac5a1ffae9bf1b120e040a74bf0e81ca7f1d31d3f","pkg-src-sha256":"ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a","depends":["base-4.16.4.0","bytestring-0.11.3.1"],"exe-depends":[],"component-name":"lib"}]} \ No newline at end of file
diff --git a/hadrian/bootstrap/plan-9_2_6.json b/hadrian/bootstrap/plan-9_2_6.json
index 5fc3310091..a75b3f543d 100644
--- a/hadrian/bootstrap/plan-9_2_6.json
+++ b/hadrian/bootstrap/plan-9_2_6.json
@@ -1 +1 @@
-{"cabal-version":"3.8.1.0","cabal-lib-version":"3.8.1.0","compiler-id":"ghc-9.2.6","os":"linux","arch":"x86_64","install-plan":[{"type":"pre-existing","id":"Cabal-3.6.3.0","pkg-name":"Cabal","pkg-version":"3.6.3.0","depends":["array-0.5.4.0","base-4.16.4.0","binary-0.8.9.0","bytestring-0.11.4.0","containers-0.6.5.1","deepseq-1.4.6.1","directory-1.3.6.2","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","pretty-1.1.3.6","process-1.6.16.0","text-1.2.5.0","time-1.11.1.1","transformers-0.5.6.2","unix-2.7.2.2"]},{"type":"configured","id":"QuickCheck-2.14.2-dbf4e30d0f90ef756fef51f4f1bf54e3607173d3481dd3c987da144134a63713","pkg-name":"QuickCheck","pkg-version":"2.14.2","flags":{"old-random":false,"templatehaskell":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4ce29211223d5e6620ebceba34a3ca9ccf1c10c0cf387d48aea45599222ee5aa","pkg-src-sha256":"d87b6c85696b601175274361fa62217894401e401e150c3c5d4013ac53cd36f3","depends":["base-4.16.4.0","containers-0.6.5.1","deepseq-1.4.6.1","random-1.2.1.1-64a40e4c6fddbdba903cad1f5e5ab403dd367c26f0ddd1add672cdd6d81a6f02","splitmix-0.1.0.4-30a75f98727f2d9f7b9de56e43dd113516fbffc60c17373cee8309561b81e7b8","template-haskell-2.18.0.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"array-0.5.4.0","pkg-name":"array","pkg-version":"0.5.4.0","depends":["base-4.16.4.0"]},{"type":"pre-existing","id":"base-4.16.4.0","pkg-name":"base","pkg-version":"4.16.4.0","depends":["ghc-bignum-1.2","ghc-prim-0.8.0","rts"]},{"type":"pre-existing","id":"binary-0.8.9.0","pkg-name":"binary","pkg-version":"0.8.9.0","depends":["array-0.5.4.0","base-4.16.4.0","bytestring-0.11.4.0","containers-0.6.5.1"]},{"type":"pre-existing","id":"bytestring-0.11.4.0","pkg-name":"bytestring","pkg-version":"0.11.4.0","depends":["base-4.16.4.0","deepseq-1.4.6.1","ghc-prim-0.8.0","template-haskell-2.18.0.0"]},{"type":"configured","id":"clock-0.8.3-51184a0b8e3da6909a58729bce876ef04e7fdfb4f068846e068f1f28f5be93d0","pkg-name":"clock","pkg-version":"0.8.3","flags":{"llvm":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c","pkg-src-sha256":"845ce5db4c98cefd517323e005f87effceff886987305e421c4ef616dc0505d1","depends":["base-4.16.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"containers-0.6.5.1","pkg-name":"containers","pkg-version":"0.6.5.1","depends":["array-0.5.4.0","base-4.16.4.0","deepseq-1.4.6.1"]},{"type":"configured","id":"data-array-byte-0.1.0.1-19afe996f4ddff3223a47504ed51afc89f5e0694562791e69a27a9cc24b1588a","pkg-name":"data-array-byte","pkg-version":"0.1.0.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"2ef1bd3511e82ba56f7f23cd793dd2da84338a1e7c2cbea5b151417afe3baada","pkg-src-sha256":"1bb6eca0b3e02d057fe7f4e14c81ef395216f421ab30fdaa1b18017c9c025600","depends":["base-4.16.4.0","deepseq-1.4.6.1","template-haskell-2.18.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"deepseq-1.4.6.1","pkg-name":"deepseq","pkg-version":"1.4.6.1","depends":["array-0.5.4.0","base-4.16.4.0"]},{"type":"pre-existing","id":"directory-1.3.6.2","pkg-name":"directory","pkg-version":"1.3.6.2","depends":["base-4.16.4.0","filepath-1.4.2.2","time-1.11.1.1","unix-2.7.2.2"]},{"type":"configured","id":"extra-1.7.12-ea9c6151e5a3affa242ee8590b18355cc4cdeb870899139465792a4abda08abb","pkg-name":"extra","pkg-version":"1.7.12","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3ac58d7341976173d1052e7b2837d119212d9afcf911735667c7f1ab67aec25f","pkg-src-sha256":"e571a9ec1d8865f0fbb0e0ba1eb575f783b0365c80db19b54a93600bae43b03c","depends":["base-4.16.4.0","clock-0.8.3-51184a0b8e3da6909a58729bce876ef04e7fdfb4f068846e068f1f28f5be93d0","directory-1.3.6.2","filepath-1.4.2.2","process-1.6.16.0","time-1.11.1.1","unix-2.7.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"filepath-1.4.2.2","pkg-name":"filepath","pkg-version":"1.4.2.2","depends":["base-4.16.4.0"]},{"type":"configured","id":"filepattern-0.1.3-88b6a53592df8db19f164cf8de0983223dfff65cbb03c310395452419a9813f4","pkg-name":"filepattern","pkg-version":"0.1.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"372c1733d83b90045eb29da9f010fed79bfef8771ce65eb126a1d83ecc54a9a2","pkg-src-sha256":"cc445d439ea2f65cac7604d3578aa2c3a62e5a91dc989f4ce5b3390db9e59636","depends":["base-4.16.4.0","directory-1.3.6.2","extra-1.7.12-ea9c6151e5a3affa242ee8590b18355cc4cdeb870899139465792a4abda08abb","filepath-1.4.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"ghc-bignum-1.2","pkg-name":"ghc-bignum","pkg-version":"1.2","depends":["ghc-prim-0.8.0"]},{"type":"pre-existing","id":"ghc-boot-th-9.2.6","pkg-name":"ghc-boot-th","pkg-version":"9.2.6","depends":["base-4.16.4.0"]},{"type":"pre-existing","id":"ghc-prim-0.8.0","pkg-name":"ghc-prim","pkg-version":"0.8.0","depends":["rts"]},{"type":"configured","id":"hadrian-0.1.0.0-inplace-hadrian","pkg-name":"hadrian","pkg-version":"0.1.0.0","flags":{"selftest":true,"threaded":true},"style":"local","pkg-src":{"type":"local","path":"/home/matt/ghc-scratch/hadrian/."},"dist-dir":"/home/matt/ghc-scratch/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.2.6/hadrian-0.1.0.0/x/hadrian","build-info":"/home/matt/ghc-scratch/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.2.6/hadrian-0.1.0.0/x/hadrian/build-info.json","depends":["Cabal-3.6.3.0","QuickCheck-2.14.2-dbf4e30d0f90ef756fef51f4f1bf54e3607173d3481dd3c987da144134a63713","base-4.16.4.0","bytestring-0.11.4.0","containers-0.6.5.1","directory-1.3.6.2","extra-1.7.12-ea9c6151e5a3affa242ee8590b18355cc4cdeb870899139465792a4abda08abb","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","shake-0.19.7-19ef30bd9d7b6fcbbe892dd93cb2d28f815b0be7b47977ee7d9816cfdcfcd09a","text-1.2.5.0","time-1.11.1.1","transformers-0.5.6.2","unordered-containers-0.2.19.1-591ed294851193b09a8296073425c72717ca11a2e00fd2b4f1657dcebb64420f"],"exe-depends":[],"component-name":"exe:hadrian","bin-file":"/home/matt/ghc-scratch/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.2.6/hadrian-0.1.0.0/x/hadrian/build/hadrian/hadrian"},{"type":"configured","id":"hashable-1.4.2.0-219a6123a837b28f223d0cb19a87b11bc91fe8ce450c51a52f616cdd71344a6b","pkg-name":"hashable","pkg-version":"1.4.2.0","flags":{"integer-gmp":true,"random-initial-seed":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"585792335d5541dba78fa8dfcb291a89cd5812a281825ff7a44afa296ab5d58a","pkg-src-sha256":"1b4000ea82b81f69d46d0af4152c10c6303873510738e24cfc4767760d30e3f8","depends":["base-4.16.4.0","bytestring-0.11.4.0","containers-0.6.5.1","data-array-byte-0.1.0.1-19afe996f4ddff3223a47504ed51afc89f5e0694562791e69a27a9cc24b1588a","deepseq-1.4.6.1","filepath-1.4.2.2","ghc-bignum-1.2","ghc-prim-0.8.0","text-1.2.5.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"heaps-0.4-f944fb96ddf3968b74669ff011af10699a1ad53f2605e1f2c5cccaa520c95e54","pkg-name":"heaps","pkg-version":"0.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"66b19fcd813b0e4db3e0bac541bd46606c3b13d3d081d9f9666f4be0f5ff14b8","pkg-src-sha256":"89329df8b95ae99ef272e41e7a2d0fe2f1bb7eacfcc34bc01664414b33067cfd","depends":["base-4.16.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-dgtable-0.5.2-b8b104268fe2193cf0705b12d31ab633f8408aa17a120d695b584f4c96fe7d7a","pkg-name":"js-dgtable","pkg-version":"0.5.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f75cb4fa53c88c65794becdd48eb0d3b2b8abd89a3d5c19e87af91f5225c15e4","pkg-src-sha256":"e28dd65bee8083b17210134e22e01c6349dc33c3b7bd17705973cd014e9f20ac","depends":["base-4.16.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-flot-0.8.3-bdd0af7321ae47d17c390fb23407fb78dddefd0c1c5b49450951aa648f1c0e0d","pkg-name":"js-flot","pkg-version":"0.8.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4c1c447a9a2fba0adba6d30678302a30c32b9dfde9e7aa9e9156483e1545096d","pkg-src-sha256":"1ba2f2a6b8d85da76c41f526c98903cbb107f8642e506c072c1e7e3c20fe5e7a","depends":["base-4.16.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-jquery-3.3.1-00fdc81d3faf92a360d7d5fb09dbdbf8059badd5804fbc233475acd8f8938054","pkg-name":"js-jquery","pkg-version":"3.3.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"59ab6c79159549ef94b584abce8e6d3b336014c2cce1337b59a8f637e2856df5","pkg-src-sha256":"e0e0681f0da1130ede4e03a051630ea439c458cb97216cdb01771ebdbe44069b","depends":["base-4.16.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"mtl-2.2.2","pkg-name":"mtl","pkg-version":"2.2.2","depends":["base-4.16.4.0","transformers-0.5.6.2"]},{"type":"pre-existing","id":"parsec-3.1.15.0","pkg-name":"parsec","pkg-version":"3.1.15.0","depends":["base-4.16.4.0","bytestring-0.11.4.0","mtl-2.2.2","text-1.2.5.0"]},{"type":"pre-existing","id":"pretty-1.1.3.6","pkg-name":"pretty","pkg-version":"1.1.3.6","depends":["base-4.16.4.0","deepseq-1.4.6.1","ghc-prim-0.8.0"]},{"type":"configured","id":"primitive-0.8.0.0-1efadc0efc23d362dfd242f77ddb53a0577d151a5e5ec98bb5fbb51317ce4be8","pkg-name":"primitive","pkg-version":"0.8.0.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"826bf2a702a26ef87532a135808abad69d74f70ead39f26c06d034b1f0537a19","pkg-src-sha256":"5553c21b4a789f9b591eed69e598cc58484c274af29250e517b5a8bcc62b995f","depends":["base-4.16.4.0","data-array-byte-0.1.0.1-19afe996f4ddff3223a47504ed51afc89f5e0694562791e69a27a9cc24b1588a","deepseq-1.4.6.1","template-haskell-2.18.0.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"process-1.6.16.0","pkg-name":"process","pkg-version":"1.6.16.0","depends":["base-4.16.4.0","deepseq-1.4.6.1","directory-1.3.6.2","filepath-1.4.2.2","unix-2.7.2.2"]},{"type":"configured","id":"random-1.2.1.1-64a40e4c6fddbdba903cad1f5e5ab403dd367c26f0ddd1add672cdd6d81a6f02","pkg-name":"random","pkg-version":"1.2.1.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"dea1f11e5569332dc6c8efaad1cb301016a5587b6754943a49f9de08ae0e56d9","pkg-src-sha256":"3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76","depends":["base-4.16.4.0","bytestring-0.11.4.0","deepseq-1.4.6.1","mtl-2.2.2","splitmix-0.1.0.4-30a75f98727f2d9f7b9de56e43dd113516fbffc60c17373cee8309561b81e7b8"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"rts","pkg-name":"rts","pkg-version":"1.0.2","depends":[]},{"type":"configured","id":"shake-0.19.7-19ef30bd9d7b6fcbbe892dd93cb2d28f815b0be7b47977ee7d9816cfdcfcd09a","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.16.4.0","binary-0.8.9.0","bytestring-0.11.4.0","deepseq-1.4.6.1","directory-1.3.6.2","extra-1.7.12-ea9c6151e5a3affa242ee8590b18355cc4cdeb870899139465792a4abda08abb","filepath-1.4.2.2","filepattern-0.1.3-88b6a53592df8db19f164cf8de0983223dfff65cbb03c310395452419a9813f4","hashable-1.4.2.0-219a6123a837b28f223d0cb19a87b11bc91fe8ce450c51a52f616cdd71344a6b","heaps-0.4-f944fb96ddf3968b74669ff011af10699a1ad53f2605e1f2c5cccaa520c95e54","js-dgtable-0.5.2-b8b104268fe2193cf0705b12d31ab633f8408aa17a120d695b584f4c96fe7d7a","js-flot-0.8.3-bdd0af7321ae47d17c390fb23407fb78dddefd0c1c5b49450951aa648f1c0e0d","js-jquery-3.3.1-00fdc81d3faf92a360d7d5fb09dbdbf8059badd5804fbc233475acd8f8938054","primitive-0.8.0.0-1efadc0efc23d362dfd242f77ddb53a0577d151a5e5ec98bb5fbb51317ce4be8","process-1.6.16.0","random-1.2.1.1-64a40e4c6fddbdba903cad1f5e5ab403dd367c26f0ddd1add672cdd6d81a6f02","time-1.11.1.1","transformers-0.5.6.2","unix-2.7.2.2","unordered-containers-0.2.19.1-591ed294851193b09a8296073425c72717ca11a2e00fd2b4f1657dcebb64420f","utf8-string-1.0.2-742296c0dfd2738ece0c8a465cb13192f7efda7fe7f44a9e6434aae216745eb9"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"shake-0.19.7-e-shake-5c28b3253611a7e66f56657b8abf418143b5cad9803d07c6ea9adcd168672d99","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.16.4.0","binary-0.8.9.0","bytestring-0.11.4.0","deepseq-1.4.6.1","directory-1.3.6.2","extra-1.7.12-ea9c6151e5a3affa242ee8590b18355cc4cdeb870899139465792a4abda08abb","filepath-1.4.2.2","filepattern-0.1.3-88b6a53592df8db19f164cf8de0983223dfff65cbb03c310395452419a9813f4","hashable-1.4.2.0-219a6123a837b28f223d0cb19a87b11bc91fe8ce450c51a52f616cdd71344a6b","heaps-0.4-f944fb96ddf3968b74669ff011af10699a1ad53f2605e1f2c5cccaa520c95e54","js-dgtable-0.5.2-b8b104268fe2193cf0705b12d31ab633f8408aa17a120d695b584f4c96fe7d7a","js-flot-0.8.3-bdd0af7321ae47d17c390fb23407fb78dddefd0c1c5b49450951aa648f1c0e0d","js-jquery-3.3.1-00fdc81d3faf92a360d7d5fb09dbdbf8059badd5804fbc233475acd8f8938054","primitive-0.8.0.0-1efadc0efc23d362dfd242f77ddb53a0577d151a5e5ec98bb5fbb51317ce4be8","process-1.6.16.0","random-1.2.1.1-64a40e4c6fddbdba903cad1f5e5ab403dd367c26f0ddd1add672cdd6d81a6f02","time-1.11.1.1","transformers-0.5.6.2","unix-2.7.2.2","unordered-containers-0.2.19.1-591ed294851193b09a8296073425c72717ca11a2e00fd2b4f1657dcebb64420f","utf8-string-1.0.2-742296c0dfd2738ece0c8a465cb13192f7efda7fe7f44a9e6434aae216745eb9"],"exe-depends":[],"component-name":"exe:shake","bin-file":"/home/matt/.cabal/store/ghc-9.2.6/shake-0.19.7-e-shake-5c28b3253611a7e66f56657b8abf418143b5cad9803d07c6ea9adcd168672d99/bin/shake"},{"type":"configured","id":"splitmix-0.1.0.4-30a75f98727f2d9f7b9de56e43dd113516fbffc60c17373cee8309561b81e7b8","pkg-name":"splitmix","pkg-version":"0.1.0.4","flags":{"optimised-mixer":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"db25c2e17967aa6b6046ab8b1b96ba3f344ca59a62b60fb6113d51ea305a3d8e","pkg-src-sha256":"6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa","depends":["base-4.16.4.0","deepseq-1.4.6.1"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"template-haskell-2.18.0.0","pkg-name":"template-haskell","pkg-version":"2.18.0.0","depends":["base-4.16.4.0","ghc-boot-th-9.2.6","ghc-prim-0.8.0","pretty-1.1.3.6"]},{"type":"pre-existing","id":"text-1.2.5.0","pkg-name":"text","pkg-version":"1.2.5.0","depends":["array-0.5.4.0","base-4.16.4.0","binary-0.8.9.0","bytestring-0.11.4.0","deepseq-1.4.6.1","ghc-prim-0.8.0","template-haskell-2.18.0.0"]},{"type":"pre-existing","id":"time-1.11.1.1","pkg-name":"time","pkg-version":"1.11.1.1","depends":["base-4.16.4.0","deepseq-1.4.6.1"]},{"type":"pre-existing","id":"transformers-0.5.6.2","pkg-name":"transformers","pkg-version":"0.5.6.2","depends":["base-4.16.4.0"]},{"type":"pre-existing","id":"unix-2.7.2.2","pkg-name":"unix","pkg-version":"2.7.2.2","depends":["base-4.16.4.0","bytestring-0.11.4.0","time-1.11.1.1"]},{"type":"configured","id":"unordered-containers-0.2.19.1-591ed294851193b09a8296073425c72717ca11a2e00fd2b4f1657dcebb64420f","pkg-name":"unordered-containers","pkg-version":"0.2.19.1","flags":{"debug":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"9ad8972c2e913c37b1d4f0e1261517fd7a1b8c8a58077e057be69837e3dbaa00","pkg-src-sha256":"1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2","depends":["base-4.16.4.0","deepseq-1.4.6.1","hashable-1.4.2.0-219a6123a837b28f223d0cb19a87b11bc91fe8ce450c51a52f616cdd71344a6b","template-haskell-2.18.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"utf8-string-1.0.2-742296c0dfd2738ece0c8a465cb13192f7efda7fe7f44a9e6434aae216745eb9","pkg-name":"utf8-string","pkg-version":"1.0.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"79416292186feeaf1f60e49ac5a1ffae9bf1b120e040a74bf0e81ca7f1d31d3f","pkg-src-sha256":"ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a","depends":["base-4.16.4.0","bytestring-0.11.4.0"],"exe-depends":[],"component-name":"lib"}]} \ No newline at end of file
+{"cabal-version":"3.8.1.0","cabal-lib-version":"3.8.1.0","compiler-id":"ghc-9.2.6","os":"linux","arch":"x86_64","install-plan":[{"type":"pre-existing","id":"Cabal-3.6.3.0","pkg-name":"Cabal","pkg-version":"3.6.3.0","depends":["array-0.5.4.0","base-4.16.4.0","binary-0.8.9.0","bytestring-0.11.4.0","containers-0.6.5.1","deepseq-1.4.6.1","directory-1.3.6.2","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","pretty-1.1.3.6","process-1.6.16.0","text-1.2.5.0","time-1.11.1.1","transformers-0.5.6.2","unix-2.7.2.2"]},{"type":"configured","id":"QuickCheck-2.14.2-dbf4e30d0f90ef756fef51f4f1bf54e3607173d3481dd3c987da144134a63713","pkg-name":"QuickCheck","pkg-version":"2.14.2","flags":{"old-random":false,"templatehaskell":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4ce29211223d5e6620ebceba34a3ca9ccf1c10c0cf387d48aea45599222ee5aa","pkg-src-sha256":"d87b6c85696b601175274361fa62217894401e401e150c3c5d4013ac53cd36f3","depends":["base-4.16.4.0","containers-0.6.5.1","deepseq-1.4.6.1","random-1.2.1.1-64a40e4c6fddbdba903cad1f5e5ab403dd367c26f0ddd1add672cdd6d81a6f02","splitmix-0.1.0.4-30a75f98727f2d9f7b9de56e43dd113516fbffc60c17373cee8309561b81e7b8","template-haskell-2.18.0.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"array-0.5.4.0","pkg-name":"array","pkg-version":"0.5.4.0","depends":["base-4.16.4.0"]},{"type":"pre-existing","id":"base-4.16.4.0","pkg-name":"base","pkg-version":"4.16.4.0","depends":["ghc-bignum-1.2","ghc-prim-0.8.0","rts"]},{"type":"configured","id":"base16-bytestring-1.0.2.0-1d1fd135a0eeb482c8dce3fef355d02cb3d02c1f65c92e9c41e3dafc3d059abb","pkg-name":"base16-bytestring","pkg-version":"1.0.2.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"64abad7816ab8cabed8489e29f807b3a6f828e0b2cec0eae404323d69d36df9a","pkg-src-sha256":"1d5a91143ef0e22157536093ec8e59d226a68220ec89378d5dcaeea86472c784","depends":["base-4.16.4.0","bytestring-0.11.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"binary-0.8.9.0","pkg-name":"binary","pkg-version":"0.8.9.0","depends":["array-0.5.4.0","base-4.16.4.0","bytestring-0.11.4.0","containers-0.6.5.1"]},{"type":"pre-existing","id":"bytestring-0.11.4.0","pkg-name":"bytestring","pkg-version":"0.11.4.0","depends":["base-4.16.4.0","deepseq-1.4.6.1","ghc-prim-0.8.0","template-haskell-2.18.0.0"]},{"type":"configured","id":"clock-0.8.3-51184a0b8e3da6909a58729bce876ef04e7fdfb4f068846e068f1f28f5be93d0","pkg-name":"clock","pkg-version":"0.8.3","flags":{"llvm":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c","pkg-src-sha256":"845ce5db4c98cefd517323e005f87effceff886987305e421c4ef616dc0505d1","depends":["base-4.16.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"containers-0.6.5.1","pkg-name":"containers","pkg-version":"0.6.5.1","depends":["array-0.5.4.0","base-4.16.4.0","deepseq-1.4.6.1"]},{"type":"configured","id":"cryptohash-sha256-0.11.102.1-5790921775b531d24a0bbc9d8248feabb687a3fa23f170a8244612b884725ba5","pkg-name":"cryptohash-sha256","pkg-version":"0.11.102.1","flags":{"exe":false,"use-cbits":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"72ce9095872eae653addca5f412ac8070d6282d8e1c8578c2237c33f2cbbf4bc","pkg-src-sha256":"73a7dc7163871a80837495039a099967b11f5c4fe70a118277842f7a713c6bf6","depends":["base-4.16.4.0","bytestring-0.11.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"data-array-byte-0.1.0.1-19afe996f4ddff3223a47504ed51afc89f5e0694562791e69a27a9cc24b1588a","pkg-name":"data-array-byte","pkg-version":"0.1.0.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"2ef1bd3511e82ba56f7f23cd793dd2da84338a1e7c2cbea5b151417afe3baada","pkg-src-sha256":"1bb6eca0b3e02d057fe7f4e14c81ef395216f421ab30fdaa1b18017c9c025600","depends":["base-4.16.4.0","deepseq-1.4.6.1","template-haskell-2.18.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"deepseq-1.4.6.1","pkg-name":"deepseq","pkg-version":"1.4.6.1","depends":["array-0.5.4.0","base-4.16.4.0"]},{"type":"pre-existing","id":"directory-1.3.6.2","pkg-name":"directory","pkg-version":"1.3.6.2","depends":["base-4.16.4.0","filepath-1.4.2.2","time-1.11.1.1","unix-2.7.2.2"]},{"type":"configured","id":"extra-1.7.12-ea9c6151e5a3affa242ee8590b18355cc4cdeb870899139465792a4abda08abb","pkg-name":"extra","pkg-version":"1.7.12","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3ac58d7341976173d1052e7b2837d119212d9afcf911735667c7f1ab67aec25f","pkg-src-sha256":"e571a9ec1d8865f0fbb0e0ba1eb575f783b0365c80db19b54a93600bae43b03c","depends":["base-4.16.4.0","clock-0.8.3-51184a0b8e3da6909a58729bce876ef04e7fdfb4f068846e068f1f28f5be93d0","directory-1.3.6.2","filepath-1.4.2.2","process-1.6.16.0","time-1.11.1.1","unix-2.7.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"filepath-1.4.2.2","pkg-name":"filepath","pkg-version":"1.4.2.2","depends":["base-4.16.4.0"]},{"type":"configured","id":"filepattern-0.1.3-88b6a53592df8db19f164cf8de0983223dfff65cbb03c310395452419a9813f4","pkg-name":"filepattern","pkg-version":"0.1.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"372c1733d83b90045eb29da9f010fed79bfef8771ce65eb126a1d83ecc54a9a2","pkg-src-sha256":"cc445d439ea2f65cac7604d3578aa2c3a62e5a91dc989f4ce5b3390db9e59636","depends":["base-4.16.4.0","directory-1.3.6.2","extra-1.7.12-ea9c6151e5a3affa242ee8590b18355cc4cdeb870899139465792a4abda08abb","filepath-1.4.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"ghc-bignum-1.2","pkg-name":"ghc-bignum","pkg-version":"1.2","depends":["ghc-prim-0.8.0"]},{"type":"pre-existing","id":"ghc-boot-th-9.2.6","pkg-name":"ghc-boot-th","pkg-version":"9.2.6","depends":["base-4.16.4.0"]},{"type":"pre-existing","id":"ghc-prim-0.8.0","pkg-name":"ghc-prim","pkg-version":"0.8.0","depends":["rts"]},{"type":"configured","id":"hadrian-0.1.0.0-inplace-hadrian","pkg-name":"hadrian","pkg-version":"0.1.0.0","flags":{"selftest":true,"threaded":true},"style":"local","pkg-src":{"type":"local","path":"/home/matt/ghc-rodrigo/hadrian/."},"dist-dir":"/home/matt/ghc-rodrigo/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.2.6/hadrian-0.1.0.0/x/hadrian","build-info":"/home/matt/ghc-rodrigo/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.2.6/hadrian-0.1.0.0/x/hadrian/build-info.json","depends":["Cabal-3.6.3.0","QuickCheck-2.14.2-dbf4e30d0f90ef756fef51f4f1bf54e3607173d3481dd3c987da144134a63713","base-4.16.4.0","base16-bytestring-1.0.2.0-1d1fd135a0eeb482c8dce3fef355d02cb3d02c1f65c92e9c41e3dafc3d059abb","bytestring-0.11.4.0","containers-0.6.5.1","cryptohash-sha256-0.11.102.1-5790921775b531d24a0bbc9d8248feabb687a3fa23f170a8244612b884725ba5","directory-1.3.6.2","extra-1.7.12-ea9c6151e5a3affa242ee8590b18355cc4cdeb870899139465792a4abda08abb","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","shake-0.19.7-19ef30bd9d7b6fcbbe892dd93cb2d28f815b0be7b47977ee7d9816cfdcfcd09a","text-1.2.5.0","time-1.11.1.1","transformers-0.5.6.2","unordered-containers-0.2.19.1-591ed294851193b09a8296073425c72717ca11a2e00fd2b4f1657dcebb64420f"],"exe-depends":[],"component-name":"exe:hadrian","bin-file":"/home/matt/ghc-rodrigo/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.2.6/hadrian-0.1.0.0/x/hadrian/build/hadrian/hadrian"},{"type":"configured","id":"hashable-1.4.2.0-219a6123a837b28f223d0cb19a87b11bc91fe8ce450c51a52f616cdd71344a6b","pkg-name":"hashable","pkg-version":"1.4.2.0","flags":{"integer-gmp":true,"random-initial-seed":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"585792335d5541dba78fa8dfcb291a89cd5812a281825ff7a44afa296ab5d58a","pkg-src-sha256":"1b4000ea82b81f69d46d0af4152c10c6303873510738e24cfc4767760d30e3f8","depends":["base-4.16.4.0","bytestring-0.11.4.0","containers-0.6.5.1","data-array-byte-0.1.0.1-19afe996f4ddff3223a47504ed51afc89f5e0694562791e69a27a9cc24b1588a","deepseq-1.4.6.1","filepath-1.4.2.2","ghc-bignum-1.2","ghc-prim-0.8.0","text-1.2.5.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"heaps-0.4-f944fb96ddf3968b74669ff011af10699a1ad53f2605e1f2c5cccaa520c95e54","pkg-name":"heaps","pkg-version":"0.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"66b19fcd813b0e4db3e0bac541bd46606c3b13d3d081d9f9666f4be0f5ff14b8","pkg-src-sha256":"89329df8b95ae99ef272e41e7a2d0fe2f1bb7eacfcc34bc01664414b33067cfd","depends":["base-4.16.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-dgtable-0.5.2-b8b104268fe2193cf0705b12d31ab633f8408aa17a120d695b584f4c96fe7d7a","pkg-name":"js-dgtable","pkg-version":"0.5.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f75cb4fa53c88c65794becdd48eb0d3b2b8abd89a3d5c19e87af91f5225c15e4","pkg-src-sha256":"e28dd65bee8083b17210134e22e01c6349dc33c3b7bd17705973cd014e9f20ac","depends":["base-4.16.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-flot-0.8.3-bdd0af7321ae47d17c390fb23407fb78dddefd0c1c5b49450951aa648f1c0e0d","pkg-name":"js-flot","pkg-version":"0.8.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4c1c447a9a2fba0adba6d30678302a30c32b9dfde9e7aa9e9156483e1545096d","pkg-src-sha256":"1ba2f2a6b8d85da76c41f526c98903cbb107f8642e506c072c1e7e3c20fe5e7a","depends":["base-4.16.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-jquery-3.3.1-00fdc81d3faf92a360d7d5fb09dbdbf8059badd5804fbc233475acd8f8938054","pkg-name":"js-jquery","pkg-version":"3.3.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"59ab6c79159549ef94b584abce8e6d3b336014c2cce1337b59a8f637e2856df5","pkg-src-sha256":"e0e0681f0da1130ede4e03a051630ea439c458cb97216cdb01771ebdbe44069b","depends":["base-4.16.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"mtl-2.2.2","pkg-name":"mtl","pkg-version":"2.2.2","depends":["base-4.16.4.0","transformers-0.5.6.2"]},{"type":"pre-existing","id":"parsec-3.1.15.0","pkg-name":"parsec","pkg-version":"3.1.15.0","depends":["base-4.16.4.0","bytestring-0.11.4.0","mtl-2.2.2","text-1.2.5.0"]},{"type":"pre-existing","id":"pretty-1.1.3.6","pkg-name":"pretty","pkg-version":"1.1.3.6","depends":["base-4.16.4.0","deepseq-1.4.6.1","ghc-prim-0.8.0"]},{"type":"configured","id":"primitive-0.8.0.0-1efadc0efc23d362dfd242f77ddb53a0577d151a5e5ec98bb5fbb51317ce4be8","pkg-name":"primitive","pkg-version":"0.8.0.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"826bf2a702a26ef87532a135808abad69d74f70ead39f26c06d034b1f0537a19","pkg-src-sha256":"5553c21b4a789f9b591eed69e598cc58484c274af29250e517b5a8bcc62b995f","depends":["base-4.16.4.0","data-array-byte-0.1.0.1-19afe996f4ddff3223a47504ed51afc89f5e0694562791e69a27a9cc24b1588a","deepseq-1.4.6.1","template-haskell-2.18.0.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"process-1.6.16.0","pkg-name":"process","pkg-version":"1.6.16.0","depends":["base-4.16.4.0","deepseq-1.4.6.1","directory-1.3.6.2","filepath-1.4.2.2","unix-2.7.2.2"]},{"type":"configured","id":"random-1.2.1.1-64a40e4c6fddbdba903cad1f5e5ab403dd367c26f0ddd1add672cdd6d81a6f02","pkg-name":"random","pkg-version":"1.2.1.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"dea1f11e5569332dc6c8efaad1cb301016a5587b6754943a49f9de08ae0e56d9","pkg-src-sha256":"3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76","depends":["base-4.16.4.0","bytestring-0.11.4.0","deepseq-1.4.6.1","mtl-2.2.2","splitmix-0.1.0.4-30a75f98727f2d9f7b9de56e43dd113516fbffc60c17373cee8309561b81e7b8"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"rts","pkg-name":"rts","pkg-version":"1.0.2","depends":[]},{"type":"configured","id":"shake-0.19.7-19ef30bd9d7b6fcbbe892dd93cb2d28f815b0be7b47977ee7d9816cfdcfcd09a","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.16.4.0","binary-0.8.9.0","bytestring-0.11.4.0","deepseq-1.4.6.1","directory-1.3.6.2","extra-1.7.12-ea9c6151e5a3affa242ee8590b18355cc4cdeb870899139465792a4abda08abb","filepath-1.4.2.2","filepattern-0.1.3-88b6a53592df8db19f164cf8de0983223dfff65cbb03c310395452419a9813f4","hashable-1.4.2.0-219a6123a837b28f223d0cb19a87b11bc91fe8ce450c51a52f616cdd71344a6b","heaps-0.4-f944fb96ddf3968b74669ff011af10699a1ad53f2605e1f2c5cccaa520c95e54","js-dgtable-0.5.2-b8b104268fe2193cf0705b12d31ab633f8408aa17a120d695b584f4c96fe7d7a","js-flot-0.8.3-bdd0af7321ae47d17c390fb23407fb78dddefd0c1c5b49450951aa648f1c0e0d","js-jquery-3.3.1-00fdc81d3faf92a360d7d5fb09dbdbf8059badd5804fbc233475acd8f8938054","primitive-0.8.0.0-1efadc0efc23d362dfd242f77ddb53a0577d151a5e5ec98bb5fbb51317ce4be8","process-1.6.16.0","random-1.2.1.1-64a40e4c6fddbdba903cad1f5e5ab403dd367c26f0ddd1add672cdd6d81a6f02","time-1.11.1.1","transformers-0.5.6.2","unix-2.7.2.2","unordered-containers-0.2.19.1-591ed294851193b09a8296073425c72717ca11a2e00fd2b4f1657dcebb64420f","utf8-string-1.0.2-742296c0dfd2738ece0c8a465cb13192f7efda7fe7f44a9e6434aae216745eb9"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"shake-0.19.7-e-shake-5c28b3253611a7e66f56657b8abf418143b5cad9803d07c6ea9adcd168672d99","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.16.4.0","binary-0.8.9.0","bytestring-0.11.4.0","deepseq-1.4.6.1","directory-1.3.6.2","extra-1.7.12-ea9c6151e5a3affa242ee8590b18355cc4cdeb870899139465792a4abda08abb","filepath-1.4.2.2","filepattern-0.1.3-88b6a53592df8db19f164cf8de0983223dfff65cbb03c310395452419a9813f4","hashable-1.4.2.0-219a6123a837b28f223d0cb19a87b11bc91fe8ce450c51a52f616cdd71344a6b","heaps-0.4-f944fb96ddf3968b74669ff011af10699a1ad53f2605e1f2c5cccaa520c95e54","js-dgtable-0.5.2-b8b104268fe2193cf0705b12d31ab633f8408aa17a120d695b584f4c96fe7d7a","js-flot-0.8.3-bdd0af7321ae47d17c390fb23407fb78dddefd0c1c5b49450951aa648f1c0e0d","js-jquery-3.3.1-00fdc81d3faf92a360d7d5fb09dbdbf8059badd5804fbc233475acd8f8938054","primitive-0.8.0.0-1efadc0efc23d362dfd242f77ddb53a0577d151a5e5ec98bb5fbb51317ce4be8","process-1.6.16.0","random-1.2.1.1-64a40e4c6fddbdba903cad1f5e5ab403dd367c26f0ddd1add672cdd6d81a6f02","time-1.11.1.1","transformers-0.5.6.2","unix-2.7.2.2","unordered-containers-0.2.19.1-591ed294851193b09a8296073425c72717ca11a2e00fd2b4f1657dcebb64420f","utf8-string-1.0.2-742296c0dfd2738ece0c8a465cb13192f7efda7fe7f44a9e6434aae216745eb9"],"exe-depends":[],"component-name":"exe:shake","bin-file":"/home/matt/.cabal/store/ghc-9.2.6/shake-0.19.7-e-shake-5c28b3253611a7e66f56657b8abf418143b5cad9803d07c6ea9adcd168672d99/bin/shake"},{"type":"configured","id":"splitmix-0.1.0.4-30a75f98727f2d9f7b9de56e43dd113516fbffc60c17373cee8309561b81e7b8","pkg-name":"splitmix","pkg-version":"0.1.0.4","flags":{"optimised-mixer":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"db25c2e17967aa6b6046ab8b1b96ba3f344ca59a62b60fb6113d51ea305a3d8e","pkg-src-sha256":"6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa","depends":["base-4.16.4.0","deepseq-1.4.6.1"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"template-haskell-2.18.0.0","pkg-name":"template-haskell","pkg-version":"2.18.0.0","depends":["base-4.16.4.0","ghc-boot-th-9.2.6","ghc-prim-0.8.0","pretty-1.1.3.6"]},{"type":"pre-existing","id":"text-1.2.5.0","pkg-name":"text","pkg-version":"1.2.5.0","depends":["array-0.5.4.0","base-4.16.4.0","binary-0.8.9.0","bytestring-0.11.4.0","deepseq-1.4.6.1","ghc-prim-0.8.0","template-haskell-2.18.0.0"]},{"type":"pre-existing","id":"time-1.11.1.1","pkg-name":"time","pkg-version":"1.11.1.1","depends":["base-4.16.4.0","deepseq-1.4.6.1"]},{"type":"pre-existing","id":"transformers-0.5.6.2","pkg-name":"transformers","pkg-version":"0.5.6.2","depends":["base-4.16.4.0"]},{"type":"pre-existing","id":"unix-2.7.2.2","pkg-name":"unix","pkg-version":"2.7.2.2","depends":["base-4.16.4.0","bytestring-0.11.4.0","time-1.11.1.1"]},{"type":"configured","id":"unordered-containers-0.2.19.1-591ed294851193b09a8296073425c72717ca11a2e00fd2b4f1657dcebb64420f","pkg-name":"unordered-containers","pkg-version":"0.2.19.1","flags":{"debug":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"9ad8972c2e913c37b1d4f0e1261517fd7a1b8c8a58077e057be69837e3dbaa00","pkg-src-sha256":"1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2","depends":["base-4.16.4.0","deepseq-1.4.6.1","hashable-1.4.2.0-219a6123a837b28f223d0cb19a87b11bc91fe8ce450c51a52f616cdd71344a6b","template-haskell-2.18.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"utf8-string-1.0.2-742296c0dfd2738ece0c8a465cb13192f7efda7fe7f44a9e6434aae216745eb9","pkg-name":"utf8-string","pkg-version":"1.0.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"79416292186feeaf1f60e49ac5a1ffae9bf1b120e040a74bf0e81ca7f1d31d3f","pkg-src-sha256":"ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a","depends":["base-4.16.4.0","bytestring-0.11.4.0"],"exe-depends":[],"component-name":"lib"}]} \ No newline at end of file
diff --git a/hadrian/bootstrap/plan-9_2_7.json b/hadrian/bootstrap/plan-9_2_7.json
index 411e915cf9..1960ae623e 100644
--- a/hadrian/bootstrap/plan-9_2_7.json
+++ b/hadrian/bootstrap/plan-9_2_7.json
@@ -1 +1 @@
-{"cabal-version":"3.8.1.0","cabal-lib-version":"3.8.1.0","compiler-id":"ghc-9.2.7","os":"linux","arch":"x86_64","install-plan":[{"type":"pre-existing","id":"Cabal-3.6.3.0","pkg-name":"Cabal","pkg-version":"3.6.3.0","depends":["array-0.5.4.0","base-4.16.4.0","binary-0.8.9.0","bytestring-0.11.4.0","containers-0.6.5.1","deepseq-1.4.6.1","directory-1.3.6.2","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","pretty-1.1.3.6","process-1.6.16.0","text-1.2.5.0","time-1.11.1.1","transformers-0.5.6.2","unix-2.7.2.2"]},{"type":"configured","id":"QuickCheck-2.14.2-c951510023ba6d593af2f7a96eeb7c5bb62f952a5f93c8d764bf7680e88c0b5e","pkg-name":"QuickCheck","pkg-version":"2.14.2","flags":{"old-random":false,"templatehaskell":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4ce29211223d5e6620ebceba34a3ca9ccf1c10c0cf387d48aea45599222ee5aa","pkg-src-sha256":"d87b6c85696b601175274361fa62217894401e401e150c3c5d4013ac53cd36f3","depends":["base-4.16.4.0","containers-0.6.5.1","deepseq-1.4.6.1","random-1.2.1.1-14950f0d57c55eed8fd0701e27e87527c3c7ef42acca95164df8337d2d526ad3","splitmix-0.1.0.4-89a7e5aa79a8ff61d9f9e80b2e831f423d4e7ceacdf327f68373a5c56a67b0cd","template-haskell-2.18.0.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"array-0.5.4.0","pkg-name":"array","pkg-version":"0.5.4.0","depends":["base-4.16.4.0"]},{"type":"pre-existing","id":"base-4.16.4.0","pkg-name":"base","pkg-version":"4.16.4.0","depends":["ghc-bignum-1.2","ghc-prim-0.8.0","rts"]},{"type":"pre-existing","id":"binary-0.8.9.0","pkg-name":"binary","pkg-version":"0.8.9.0","depends":["array-0.5.4.0","base-4.16.4.0","bytestring-0.11.4.0","containers-0.6.5.1"]},{"type":"pre-existing","id":"bytestring-0.11.4.0","pkg-name":"bytestring","pkg-version":"0.11.4.0","depends":["base-4.16.4.0","deepseq-1.4.6.1","ghc-prim-0.8.0","template-haskell-2.18.0.0"]},{"type":"configured","id":"clock-0.8.3-559669949a0ebfcde3bd9a87feee5c5c9af26aa79c4b02d8942d537ecce4d246","pkg-name":"clock","pkg-version":"0.8.3","flags":{"llvm":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c","pkg-src-sha256":"845ce5db4c98cefd517323e005f87effceff886987305e421c4ef616dc0505d1","depends":["base-4.16.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"containers-0.6.5.1","pkg-name":"containers","pkg-version":"0.6.5.1","depends":["array-0.5.4.0","base-4.16.4.0","deepseq-1.4.6.1"]},{"type":"configured","id":"data-array-byte-0.1.0.1-67b4cca141a1cc765879ccbd2e58b0d263d9d1b4b7edd293e7d4d51ffa918964","pkg-name":"data-array-byte","pkg-version":"0.1.0.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"2ef1bd3511e82ba56f7f23cd793dd2da84338a1e7c2cbea5b151417afe3baada","pkg-src-sha256":"1bb6eca0b3e02d057fe7f4e14c81ef395216f421ab30fdaa1b18017c9c025600","depends":["base-4.16.4.0","deepseq-1.4.6.1","template-haskell-2.18.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"deepseq-1.4.6.1","pkg-name":"deepseq","pkg-version":"1.4.6.1","depends":["array-0.5.4.0","base-4.16.4.0"]},{"type":"pre-existing","id":"directory-1.3.6.2","pkg-name":"directory","pkg-version":"1.3.6.2","depends":["base-4.16.4.0","filepath-1.4.2.2","time-1.11.1.1","unix-2.7.2.2"]},{"type":"configured","id":"extra-1.7.12-fcac65eb35e8efac34a88fafea896211a7d089740793764ffc583e77907f5b29","pkg-name":"extra","pkg-version":"1.7.12","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3ac58d7341976173d1052e7b2837d119212d9afcf911735667c7f1ab67aec25f","pkg-src-sha256":"e571a9ec1d8865f0fbb0e0ba1eb575f783b0365c80db19b54a93600bae43b03c","depends":["base-4.16.4.0","clock-0.8.3-559669949a0ebfcde3bd9a87feee5c5c9af26aa79c4b02d8942d537ecce4d246","directory-1.3.6.2","filepath-1.4.2.2","process-1.6.16.0","time-1.11.1.1","unix-2.7.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"filepath-1.4.2.2","pkg-name":"filepath","pkg-version":"1.4.2.2","depends":["base-4.16.4.0"]},{"type":"configured","id":"filepattern-0.1.3-7403bac6d3d46d3a1722c31aa27ff1e8b623ab3f70b34e18d950a8bf38663b27","pkg-name":"filepattern","pkg-version":"0.1.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"372c1733d83b90045eb29da9f010fed79bfef8771ce65eb126a1d83ecc54a9a2","pkg-src-sha256":"cc445d439ea2f65cac7604d3578aa2c3a62e5a91dc989f4ce5b3390db9e59636","depends":["base-4.16.4.0","directory-1.3.6.2","extra-1.7.12-fcac65eb35e8efac34a88fafea896211a7d089740793764ffc583e77907f5b29","filepath-1.4.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"ghc-bignum-1.2","pkg-name":"ghc-bignum","pkg-version":"1.2","depends":["ghc-prim-0.8.0"]},{"type":"pre-existing","id":"ghc-boot-th-9.2.7","pkg-name":"ghc-boot-th","pkg-version":"9.2.7","depends":["base-4.16.4.0"]},{"type":"pre-existing","id":"ghc-prim-0.8.0","pkg-name":"ghc-prim","pkg-version":"0.8.0","depends":["rts"]},{"type":"configured","id":"hadrian-0.1.0.0-inplace-hadrian","pkg-name":"hadrian","pkg-version":"0.1.0.0","flags":{"selftest":true,"threaded":true},"style":"local","pkg-src":{"type":"local","path":"/home/matt/ghc-scratch/hadrian/."},"dist-dir":"/home/matt/ghc-scratch/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.2.7/hadrian-0.1.0.0/x/hadrian","build-info":"/home/matt/ghc-scratch/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.2.7/hadrian-0.1.0.0/x/hadrian/build-info.json","depends":["Cabal-3.6.3.0","QuickCheck-2.14.2-c951510023ba6d593af2f7a96eeb7c5bb62f952a5f93c8d764bf7680e88c0b5e","base-4.16.4.0","bytestring-0.11.4.0","containers-0.6.5.1","directory-1.3.6.2","extra-1.7.12-fcac65eb35e8efac34a88fafea896211a7d089740793764ffc583e77907f5b29","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","shake-0.19.7-fac5227d98425aa87cd5a6ce00dd6ae4112068b311e19bf8a485b8c298a6f004","text-1.2.5.0","time-1.11.1.1","transformers-0.5.6.2","unordered-containers-0.2.19.1-72d06bf7bf8b167e0dbff8d6944ba4e68be2d1f7242823c257b7a3de4095eed3"],"exe-depends":[],"component-name":"exe:hadrian","bin-file":"/home/matt/ghc-scratch/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.2.7/hadrian-0.1.0.0/x/hadrian/build/hadrian/hadrian"},{"type":"configured","id":"hashable-1.4.2.0-3bef0ce9e580df6e573b834c5b23a1f8eedaa657dfda94246c0f593232c2e716","pkg-name":"hashable","pkg-version":"1.4.2.0","flags":{"integer-gmp":true,"random-initial-seed":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"585792335d5541dba78fa8dfcb291a89cd5812a281825ff7a44afa296ab5d58a","pkg-src-sha256":"1b4000ea82b81f69d46d0af4152c10c6303873510738e24cfc4767760d30e3f8","depends":["base-4.16.4.0","bytestring-0.11.4.0","containers-0.6.5.1","data-array-byte-0.1.0.1-67b4cca141a1cc765879ccbd2e58b0d263d9d1b4b7edd293e7d4d51ffa918964","deepseq-1.4.6.1","filepath-1.4.2.2","ghc-bignum-1.2","ghc-prim-0.8.0","text-1.2.5.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"heaps-0.4-e7935e93b9407bb74983a8bb2aecf01a7163b6fa9c2097dcbfbd0206e3e2e3b5","pkg-name":"heaps","pkg-version":"0.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"66b19fcd813b0e4db3e0bac541bd46606c3b13d3d081d9f9666f4be0f5ff14b8","pkg-src-sha256":"89329df8b95ae99ef272e41e7a2d0fe2f1bb7eacfcc34bc01664414b33067cfd","depends":["base-4.16.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-dgtable-0.5.2-af9dd55d69b2ea96e05137850ddd1e6e75e39509f4985edcc4ff8173e82e8dbe","pkg-name":"js-dgtable","pkg-version":"0.5.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f75cb4fa53c88c65794becdd48eb0d3b2b8abd89a3d5c19e87af91f5225c15e4","pkg-src-sha256":"e28dd65bee8083b17210134e22e01c6349dc33c3b7bd17705973cd014e9f20ac","depends":["base-4.16.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-flot-0.8.3-0cc61e91af599f6c568189bb9ccf26c4ba3cc9f12f380a7a5cbbf31b24b249d3","pkg-name":"js-flot","pkg-version":"0.8.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4c1c447a9a2fba0adba6d30678302a30c32b9dfde9e7aa9e9156483e1545096d","pkg-src-sha256":"1ba2f2a6b8d85da76c41f526c98903cbb107f8642e506c072c1e7e3c20fe5e7a","depends":["base-4.16.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-jquery-3.3.1-3f64c9e994a6d8a58b2a43d809f08347b4132f3d51876b60a01bbd50b68a4bd1","pkg-name":"js-jquery","pkg-version":"3.3.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"59ab6c79159549ef94b584abce8e6d3b336014c2cce1337b59a8f637e2856df5","pkg-src-sha256":"e0e0681f0da1130ede4e03a051630ea439c458cb97216cdb01771ebdbe44069b","depends":["base-4.16.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"mtl-2.2.2","pkg-name":"mtl","pkg-version":"2.2.2","depends":["base-4.16.4.0","transformers-0.5.6.2"]},{"type":"pre-existing","id":"parsec-3.1.15.0","pkg-name":"parsec","pkg-version":"3.1.15.0","depends":["base-4.16.4.0","bytestring-0.11.4.0","mtl-2.2.2","text-1.2.5.0"]},{"type":"pre-existing","id":"pretty-1.1.3.6","pkg-name":"pretty","pkg-version":"1.1.3.6","depends":["base-4.16.4.0","deepseq-1.4.6.1","ghc-prim-0.8.0"]},{"type":"configured","id":"primitive-0.8.0.0-08331230b60fd51ba3238ae3eedb6753731dfba5fa7be73699e334be491db804","pkg-name":"primitive","pkg-version":"0.8.0.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"826bf2a702a26ef87532a135808abad69d74f70ead39f26c06d034b1f0537a19","pkg-src-sha256":"5553c21b4a789f9b591eed69e598cc58484c274af29250e517b5a8bcc62b995f","depends":["base-4.16.4.0","data-array-byte-0.1.0.1-67b4cca141a1cc765879ccbd2e58b0d263d9d1b4b7edd293e7d4d51ffa918964","deepseq-1.4.6.1","template-haskell-2.18.0.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"process-1.6.16.0","pkg-name":"process","pkg-version":"1.6.16.0","depends":["base-4.16.4.0","deepseq-1.4.6.1","directory-1.3.6.2","filepath-1.4.2.2","unix-2.7.2.2"]},{"type":"configured","id":"random-1.2.1.1-14950f0d57c55eed8fd0701e27e87527c3c7ef42acca95164df8337d2d526ad3","pkg-name":"random","pkg-version":"1.2.1.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"dea1f11e5569332dc6c8efaad1cb301016a5587b6754943a49f9de08ae0e56d9","pkg-src-sha256":"3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76","depends":["base-4.16.4.0","bytestring-0.11.4.0","deepseq-1.4.6.1","mtl-2.2.2","splitmix-0.1.0.4-89a7e5aa79a8ff61d9f9e80b2e831f423d4e7ceacdf327f68373a5c56a67b0cd"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"rts","pkg-name":"rts","pkg-version":"1.0.2","depends":[]},{"type":"configured","id":"shake-0.19.7-e-shake-1224639973d1e3e16f2231e49d37310e61958fd3a162100370d11b7b9027faea","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.16.4.0","binary-0.8.9.0","bytestring-0.11.4.0","deepseq-1.4.6.1","directory-1.3.6.2","extra-1.7.12-fcac65eb35e8efac34a88fafea896211a7d089740793764ffc583e77907f5b29","filepath-1.4.2.2","filepattern-0.1.3-7403bac6d3d46d3a1722c31aa27ff1e8b623ab3f70b34e18d950a8bf38663b27","hashable-1.4.2.0-3bef0ce9e580df6e573b834c5b23a1f8eedaa657dfda94246c0f593232c2e716","heaps-0.4-e7935e93b9407bb74983a8bb2aecf01a7163b6fa9c2097dcbfbd0206e3e2e3b5","js-dgtable-0.5.2-af9dd55d69b2ea96e05137850ddd1e6e75e39509f4985edcc4ff8173e82e8dbe","js-flot-0.8.3-0cc61e91af599f6c568189bb9ccf26c4ba3cc9f12f380a7a5cbbf31b24b249d3","js-jquery-3.3.1-3f64c9e994a6d8a58b2a43d809f08347b4132f3d51876b60a01bbd50b68a4bd1","primitive-0.8.0.0-08331230b60fd51ba3238ae3eedb6753731dfba5fa7be73699e334be491db804","process-1.6.16.0","random-1.2.1.1-14950f0d57c55eed8fd0701e27e87527c3c7ef42acca95164df8337d2d526ad3","time-1.11.1.1","transformers-0.5.6.2","unix-2.7.2.2","unordered-containers-0.2.19.1-72d06bf7bf8b167e0dbff8d6944ba4e68be2d1f7242823c257b7a3de4095eed3","utf8-string-1.0.2-9298101b281a7775960563b399d1469d84b96ca00e57f02ad0de27a63b6960fb"],"exe-depends":[],"component-name":"exe:shake","bin-file":"/home/matt/.cabal/store/ghc-9.2.7/shake-0.19.7-e-shake-1224639973d1e3e16f2231e49d37310e61958fd3a162100370d11b7b9027faea/bin/shake"},{"type":"configured","id":"shake-0.19.7-fac5227d98425aa87cd5a6ce00dd6ae4112068b311e19bf8a485b8c298a6f004","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.16.4.0","binary-0.8.9.0","bytestring-0.11.4.0","deepseq-1.4.6.1","directory-1.3.6.2","extra-1.7.12-fcac65eb35e8efac34a88fafea896211a7d089740793764ffc583e77907f5b29","filepath-1.4.2.2","filepattern-0.1.3-7403bac6d3d46d3a1722c31aa27ff1e8b623ab3f70b34e18d950a8bf38663b27","hashable-1.4.2.0-3bef0ce9e580df6e573b834c5b23a1f8eedaa657dfda94246c0f593232c2e716","heaps-0.4-e7935e93b9407bb74983a8bb2aecf01a7163b6fa9c2097dcbfbd0206e3e2e3b5","js-dgtable-0.5.2-af9dd55d69b2ea96e05137850ddd1e6e75e39509f4985edcc4ff8173e82e8dbe","js-flot-0.8.3-0cc61e91af599f6c568189bb9ccf26c4ba3cc9f12f380a7a5cbbf31b24b249d3","js-jquery-3.3.1-3f64c9e994a6d8a58b2a43d809f08347b4132f3d51876b60a01bbd50b68a4bd1","primitive-0.8.0.0-08331230b60fd51ba3238ae3eedb6753731dfba5fa7be73699e334be491db804","process-1.6.16.0","random-1.2.1.1-14950f0d57c55eed8fd0701e27e87527c3c7ef42acca95164df8337d2d526ad3","time-1.11.1.1","transformers-0.5.6.2","unix-2.7.2.2","unordered-containers-0.2.19.1-72d06bf7bf8b167e0dbff8d6944ba4e68be2d1f7242823c257b7a3de4095eed3","utf8-string-1.0.2-9298101b281a7775960563b399d1469d84b96ca00e57f02ad0de27a63b6960fb"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"splitmix-0.1.0.4-89a7e5aa79a8ff61d9f9e80b2e831f423d4e7ceacdf327f68373a5c56a67b0cd","pkg-name":"splitmix","pkg-version":"0.1.0.4","flags":{"optimised-mixer":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"db25c2e17967aa6b6046ab8b1b96ba3f344ca59a62b60fb6113d51ea305a3d8e","pkg-src-sha256":"6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa","depends":["base-4.16.4.0","deepseq-1.4.6.1"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"template-haskell-2.18.0.0","pkg-name":"template-haskell","pkg-version":"2.18.0.0","depends":["base-4.16.4.0","ghc-boot-th-9.2.7","ghc-prim-0.8.0","pretty-1.1.3.6"]},{"type":"pre-existing","id":"text-1.2.5.0","pkg-name":"text","pkg-version":"1.2.5.0","depends":["array-0.5.4.0","base-4.16.4.0","binary-0.8.9.0","bytestring-0.11.4.0","deepseq-1.4.6.1","ghc-prim-0.8.0","template-haskell-2.18.0.0"]},{"type":"pre-existing","id":"time-1.11.1.1","pkg-name":"time","pkg-version":"1.11.1.1","depends":["base-4.16.4.0","deepseq-1.4.6.1"]},{"type":"pre-existing","id":"transformers-0.5.6.2","pkg-name":"transformers","pkg-version":"0.5.6.2","depends":["base-4.16.4.0"]},{"type":"pre-existing","id":"unix-2.7.2.2","pkg-name":"unix","pkg-version":"2.7.2.2","depends":["base-4.16.4.0","bytestring-0.11.4.0","time-1.11.1.1"]},{"type":"configured","id":"unordered-containers-0.2.19.1-72d06bf7bf8b167e0dbff8d6944ba4e68be2d1f7242823c257b7a3de4095eed3","pkg-name":"unordered-containers","pkg-version":"0.2.19.1","flags":{"debug":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"9ad8972c2e913c37b1d4f0e1261517fd7a1b8c8a58077e057be69837e3dbaa00","pkg-src-sha256":"1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2","depends":["base-4.16.4.0","deepseq-1.4.6.1","hashable-1.4.2.0-3bef0ce9e580df6e573b834c5b23a1f8eedaa657dfda94246c0f593232c2e716","template-haskell-2.18.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"utf8-string-1.0.2-9298101b281a7775960563b399d1469d84b96ca00e57f02ad0de27a63b6960fb","pkg-name":"utf8-string","pkg-version":"1.0.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"79416292186feeaf1f60e49ac5a1ffae9bf1b120e040a74bf0e81ca7f1d31d3f","pkg-src-sha256":"ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a","depends":["base-4.16.4.0","bytestring-0.11.4.0"],"exe-depends":[],"component-name":"lib"}]} \ No newline at end of file
+{"cabal-version":"3.8.1.0","cabal-lib-version":"3.8.1.0","compiler-id":"ghc-9.2.7","os":"linux","arch":"x86_64","install-plan":[{"type":"pre-existing","id":"Cabal-3.6.3.0","pkg-name":"Cabal","pkg-version":"3.6.3.0","depends":["array-0.5.4.0","base-4.16.4.0","binary-0.8.9.0","bytestring-0.11.4.0","containers-0.6.5.1","deepseq-1.4.6.1","directory-1.3.6.2","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","pretty-1.1.3.6","process-1.6.16.0","text-1.2.5.0","time-1.11.1.1","transformers-0.5.6.2","unix-2.7.2.2"]},{"type":"configured","id":"QuickCheck-2.14.2-c951510023ba6d593af2f7a96eeb7c5bb62f952a5f93c8d764bf7680e88c0b5e","pkg-name":"QuickCheck","pkg-version":"2.14.2","flags":{"old-random":false,"templatehaskell":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4ce29211223d5e6620ebceba34a3ca9ccf1c10c0cf387d48aea45599222ee5aa","pkg-src-sha256":"d87b6c85696b601175274361fa62217894401e401e150c3c5d4013ac53cd36f3","depends":["base-4.16.4.0","containers-0.6.5.1","deepseq-1.4.6.1","random-1.2.1.1-14950f0d57c55eed8fd0701e27e87527c3c7ef42acca95164df8337d2d526ad3","splitmix-0.1.0.4-89a7e5aa79a8ff61d9f9e80b2e831f423d4e7ceacdf327f68373a5c56a67b0cd","template-haskell-2.18.0.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"array-0.5.4.0","pkg-name":"array","pkg-version":"0.5.4.0","depends":["base-4.16.4.0"]},{"type":"pre-existing","id":"base-4.16.4.0","pkg-name":"base","pkg-version":"4.16.4.0","depends":["ghc-bignum-1.2","ghc-prim-0.8.0","rts"]},{"type":"configured","id":"base16-bytestring-1.0.2.0-763dd3f7e62ff68246699e004f5359ed58546f0202050790cc9596e8cc8080a7","pkg-name":"base16-bytestring","pkg-version":"1.0.2.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"64abad7816ab8cabed8489e29f807b3a6f828e0b2cec0eae404323d69d36df9a","pkg-src-sha256":"1d5a91143ef0e22157536093ec8e59d226a68220ec89378d5dcaeea86472c784","depends":["base-4.16.4.0","bytestring-0.11.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"binary-0.8.9.0","pkg-name":"binary","pkg-version":"0.8.9.0","depends":["array-0.5.4.0","base-4.16.4.0","bytestring-0.11.4.0","containers-0.6.5.1"]},{"type":"pre-existing","id":"bytestring-0.11.4.0","pkg-name":"bytestring","pkg-version":"0.11.4.0","depends":["base-4.16.4.0","deepseq-1.4.6.1","ghc-prim-0.8.0","template-haskell-2.18.0.0"]},{"type":"configured","id":"clock-0.8.3-559669949a0ebfcde3bd9a87feee5c5c9af26aa79c4b02d8942d537ecce4d246","pkg-name":"clock","pkg-version":"0.8.3","flags":{"llvm":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c","pkg-src-sha256":"845ce5db4c98cefd517323e005f87effceff886987305e421c4ef616dc0505d1","depends":["base-4.16.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"containers-0.6.5.1","pkg-name":"containers","pkg-version":"0.6.5.1","depends":["array-0.5.4.0","base-4.16.4.0","deepseq-1.4.6.1"]},{"type":"configured","id":"cryptohash-sha256-0.11.102.1-65526283caa2c426e2183837dd7dfa5576bfb29febc30540405f7ec15655662d","pkg-name":"cryptohash-sha256","pkg-version":"0.11.102.1","flags":{"exe":false,"use-cbits":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"72ce9095872eae653addca5f412ac8070d6282d8e1c8578c2237c33f2cbbf4bc","pkg-src-sha256":"73a7dc7163871a80837495039a099967b11f5c4fe70a118277842f7a713c6bf6","depends":["base-4.16.4.0","bytestring-0.11.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"data-array-byte-0.1.0.1-67b4cca141a1cc765879ccbd2e58b0d263d9d1b4b7edd293e7d4d51ffa918964","pkg-name":"data-array-byte","pkg-version":"0.1.0.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"2ef1bd3511e82ba56f7f23cd793dd2da84338a1e7c2cbea5b151417afe3baada","pkg-src-sha256":"1bb6eca0b3e02d057fe7f4e14c81ef395216f421ab30fdaa1b18017c9c025600","depends":["base-4.16.4.0","deepseq-1.4.6.1","template-haskell-2.18.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"deepseq-1.4.6.1","pkg-name":"deepseq","pkg-version":"1.4.6.1","depends":["array-0.5.4.0","base-4.16.4.0"]},{"type":"pre-existing","id":"directory-1.3.6.2","pkg-name":"directory","pkg-version":"1.3.6.2","depends":["base-4.16.4.0","filepath-1.4.2.2","time-1.11.1.1","unix-2.7.2.2"]},{"type":"configured","id":"extra-1.7.12-fcac65eb35e8efac34a88fafea896211a7d089740793764ffc583e77907f5b29","pkg-name":"extra","pkg-version":"1.7.12","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3ac58d7341976173d1052e7b2837d119212d9afcf911735667c7f1ab67aec25f","pkg-src-sha256":"e571a9ec1d8865f0fbb0e0ba1eb575f783b0365c80db19b54a93600bae43b03c","depends":["base-4.16.4.0","clock-0.8.3-559669949a0ebfcde3bd9a87feee5c5c9af26aa79c4b02d8942d537ecce4d246","directory-1.3.6.2","filepath-1.4.2.2","process-1.6.16.0","time-1.11.1.1","unix-2.7.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"filepath-1.4.2.2","pkg-name":"filepath","pkg-version":"1.4.2.2","depends":["base-4.16.4.0"]},{"type":"configured","id":"filepattern-0.1.3-7403bac6d3d46d3a1722c31aa27ff1e8b623ab3f70b34e18d950a8bf38663b27","pkg-name":"filepattern","pkg-version":"0.1.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"372c1733d83b90045eb29da9f010fed79bfef8771ce65eb126a1d83ecc54a9a2","pkg-src-sha256":"cc445d439ea2f65cac7604d3578aa2c3a62e5a91dc989f4ce5b3390db9e59636","depends":["base-4.16.4.0","directory-1.3.6.2","extra-1.7.12-fcac65eb35e8efac34a88fafea896211a7d089740793764ffc583e77907f5b29","filepath-1.4.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"ghc-bignum-1.2","pkg-name":"ghc-bignum","pkg-version":"1.2","depends":["ghc-prim-0.8.0"]},{"type":"pre-existing","id":"ghc-boot-th-9.2.7","pkg-name":"ghc-boot-th","pkg-version":"9.2.7","depends":["base-4.16.4.0"]},{"type":"pre-existing","id":"ghc-prim-0.8.0","pkg-name":"ghc-prim","pkg-version":"0.8.0","depends":["rts"]},{"type":"configured","id":"hadrian-0.1.0.0-inplace-hadrian","pkg-name":"hadrian","pkg-version":"0.1.0.0","flags":{"selftest":true,"threaded":true},"style":"local","pkg-src":{"type":"local","path":"/home/matt/ghc-rodrigo/hadrian/."},"dist-dir":"/home/matt/ghc-rodrigo/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.2.7/hadrian-0.1.0.0/x/hadrian","build-info":"/home/matt/ghc-rodrigo/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.2.7/hadrian-0.1.0.0/x/hadrian/build-info.json","depends":["Cabal-3.6.3.0","QuickCheck-2.14.2-c951510023ba6d593af2f7a96eeb7c5bb62f952a5f93c8d764bf7680e88c0b5e","base-4.16.4.0","base16-bytestring-1.0.2.0-763dd3f7e62ff68246699e004f5359ed58546f0202050790cc9596e8cc8080a7","bytestring-0.11.4.0","containers-0.6.5.1","cryptohash-sha256-0.11.102.1-65526283caa2c426e2183837dd7dfa5576bfb29febc30540405f7ec15655662d","directory-1.3.6.2","extra-1.7.12-fcac65eb35e8efac34a88fafea896211a7d089740793764ffc583e77907f5b29","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","shake-0.19.7-fac5227d98425aa87cd5a6ce00dd6ae4112068b311e19bf8a485b8c298a6f004","text-1.2.5.0","time-1.11.1.1","transformers-0.5.6.2","unordered-containers-0.2.19.1-72d06bf7bf8b167e0dbff8d6944ba4e68be2d1f7242823c257b7a3de4095eed3"],"exe-depends":[],"component-name":"exe:hadrian","bin-file":"/home/matt/ghc-rodrigo/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.2.7/hadrian-0.1.0.0/x/hadrian/build/hadrian/hadrian"},{"type":"configured","id":"hashable-1.4.2.0-3bef0ce9e580df6e573b834c5b23a1f8eedaa657dfda94246c0f593232c2e716","pkg-name":"hashable","pkg-version":"1.4.2.0","flags":{"integer-gmp":true,"random-initial-seed":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"585792335d5541dba78fa8dfcb291a89cd5812a281825ff7a44afa296ab5d58a","pkg-src-sha256":"1b4000ea82b81f69d46d0af4152c10c6303873510738e24cfc4767760d30e3f8","depends":["base-4.16.4.0","bytestring-0.11.4.0","containers-0.6.5.1","data-array-byte-0.1.0.1-67b4cca141a1cc765879ccbd2e58b0d263d9d1b4b7edd293e7d4d51ffa918964","deepseq-1.4.6.1","filepath-1.4.2.2","ghc-bignum-1.2","ghc-prim-0.8.0","text-1.2.5.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"heaps-0.4-e7935e93b9407bb74983a8bb2aecf01a7163b6fa9c2097dcbfbd0206e3e2e3b5","pkg-name":"heaps","pkg-version":"0.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"66b19fcd813b0e4db3e0bac541bd46606c3b13d3d081d9f9666f4be0f5ff14b8","pkg-src-sha256":"89329df8b95ae99ef272e41e7a2d0fe2f1bb7eacfcc34bc01664414b33067cfd","depends":["base-4.16.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-dgtable-0.5.2-af9dd55d69b2ea96e05137850ddd1e6e75e39509f4985edcc4ff8173e82e8dbe","pkg-name":"js-dgtable","pkg-version":"0.5.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f75cb4fa53c88c65794becdd48eb0d3b2b8abd89a3d5c19e87af91f5225c15e4","pkg-src-sha256":"e28dd65bee8083b17210134e22e01c6349dc33c3b7bd17705973cd014e9f20ac","depends":["base-4.16.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-flot-0.8.3-0cc61e91af599f6c568189bb9ccf26c4ba3cc9f12f380a7a5cbbf31b24b249d3","pkg-name":"js-flot","pkg-version":"0.8.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4c1c447a9a2fba0adba6d30678302a30c32b9dfde9e7aa9e9156483e1545096d","pkg-src-sha256":"1ba2f2a6b8d85da76c41f526c98903cbb107f8642e506c072c1e7e3c20fe5e7a","depends":["base-4.16.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-jquery-3.3.1-3f64c9e994a6d8a58b2a43d809f08347b4132f3d51876b60a01bbd50b68a4bd1","pkg-name":"js-jquery","pkg-version":"3.3.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"59ab6c79159549ef94b584abce8e6d3b336014c2cce1337b59a8f637e2856df5","pkg-src-sha256":"e0e0681f0da1130ede4e03a051630ea439c458cb97216cdb01771ebdbe44069b","depends":["base-4.16.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"mtl-2.2.2","pkg-name":"mtl","pkg-version":"2.2.2","depends":["base-4.16.4.0","transformers-0.5.6.2"]},{"type":"pre-existing","id":"parsec-3.1.15.0","pkg-name":"parsec","pkg-version":"3.1.15.0","depends":["base-4.16.4.0","bytestring-0.11.4.0","mtl-2.2.2","text-1.2.5.0"]},{"type":"pre-existing","id":"pretty-1.1.3.6","pkg-name":"pretty","pkg-version":"1.1.3.6","depends":["base-4.16.4.0","deepseq-1.4.6.1","ghc-prim-0.8.0"]},{"type":"configured","id":"primitive-0.8.0.0-08331230b60fd51ba3238ae3eedb6753731dfba5fa7be73699e334be491db804","pkg-name":"primitive","pkg-version":"0.8.0.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"826bf2a702a26ef87532a135808abad69d74f70ead39f26c06d034b1f0537a19","pkg-src-sha256":"5553c21b4a789f9b591eed69e598cc58484c274af29250e517b5a8bcc62b995f","depends":["base-4.16.4.0","data-array-byte-0.1.0.1-67b4cca141a1cc765879ccbd2e58b0d263d9d1b4b7edd293e7d4d51ffa918964","deepseq-1.4.6.1","template-haskell-2.18.0.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"process-1.6.16.0","pkg-name":"process","pkg-version":"1.6.16.0","depends":["base-4.16.4.0","deepseq-1.4.6.1","directory-1.3.6.2","filepath-1.4.2.2","unix-2.7.2.2"]},{"type":"configured","id":"random-1.2.1.1-14950f0d57c55eed8fd0701e27e87527c3c7ef42acca95164df8337d2d526ad3","pkg-name":"random","pkg-version":"1.2.1.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"dea1f11e5569332dc6c8efaad1cb301016a5587b6754943a49f9de08ae0e56d9","pkg-src-sha256":"3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76","depends":["base-4.16.4.0","bytestring-0.11.4.0","deepseq-1.4.6.1","mtl-2.2.2","splitmix-0.1.0.4-89a7e5aa79a8ff61d9f9e80b2e831f423d4e7ceacdf327f68373a5c56a67b0cd"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"rts","pkg-name":"rts","pkg-version":"1.0.2","depends":[]},{"type":"configured","id":"shake-0.19.7-e-shake-1224639973d1e3e16f2231e49d37310e61958fd3a162100370d11b7b9027faea","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.16.4.0","binary-0.8.9.0","bytestring-0.11.4.0","deepseq-1.4.6.1","directory-1.3.6.2","extra-1.7.12-fcac65eb35e8efac34a88fafea896211a7d089740793764ffc583e77907f5b29","filepath-1.4.2.2","filepattern-0.1.3-7403bac6d3d46d3a1722c31aa27ff1e8b623ab3f70b34e18d950a8bf38663b27","hashable-1.4.2.0-3bef0ce9e580df6e573b834c5b23a1f8eedaa657dfda94246c0f593232c2e716","heaps-0.4-e7935e93b9407bb74983a8bb2aecf01a7163b6fa9c2097dcbfbd0206e3e2e3b5","js-dgtable-0.5.2-af9dd55d69b2ea96e05137850ddd1e6e75e39509f4985edcc4ff8173e82e8dbe","js-flot-0.8.3-0cc61e91af599f6c568189bb9ccf26c4ba3cc9f12f380a7a5cbbf31b24b249d3","js-jquery-3.3.1-3f64c9e994a6d8a58b2a43d809f08347b4132f3d51876b60a01bbd50b68a4bd1","primitive-0.8.0.0-08331230b60fd51ba3238ae3eedb6753731dfba5fa7be73699e334be491db804","process-1.6.16.0","random-1.2.1.1-14950f0d57c55eed8fd0701e27e87527c3c7ef42acca95164df8337d2d526ad3","time-1.11.1.1","transformers-0.5.6.2","unix-2.7.2.2","unordered-containers-0.2.19.1-72d06bf7bf8b167e0dbff8d6944ba4e68be2d1f7242823c257b7a3de4095eed3","utf8-string-1.0.2-9298101b281a7775960563b399d1469d84b96ca00e57f02ad0de27a63b6960fb"],"exe-depends":[],"component-name":"exe:shake","bin-file":"/home/matt/.cabal/store/ghc-9.2.7/shake-0.19.7-e-shake-1224639973d1e3e16f2231e49d37310e61958fd3a162100370d11b7b9027faea/bin/shake"},{"type":"configured","id":"shake-0.19.7-fac5227d98425aa87cd5a6ce00dd6ae4112068b311e19bf8a485b8c298a6f004","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.16.4.0","binary-0.8.9.0","bytestring-0.11.4.0","deepseq-1.4.6.1","directory-1.3.6.2","extra-1.7.12-fcac65eb35e8efac34a88fafea896211a7d089740793764ffc583e77907f5b29","filepath-1.4.2.2","filepattern-0.1.3-7403bac6d3d46d3a1722c31aa27ff1e8b623ab3f70b34e18d950a8bf38663b27","hashable-1.4.2.0-3bef0ce9e580df6e573b834c5b23a1f8eedaa657dfda94246c0f593232c2e716","heaps-0.4-e7935e93b9407bb74983a8bb2aecf01a7163b6fa9c2097dcbfbd0206e3e2e3b5","js-dgtable-0.5.2-af9dd55d69b2ea96e05137850ddd1e6e75e39509f4985edcc4ff8173e82e8dbe","js-flot-0.8.3-0cc61e91af599f6c568189bb9ccf26c4ba3cc9f12f380a7a5cbbf31b24b249d3","js-jquery-3.3.1-3f64c9e994a6d8a58b2a43d809f08347b4132f3d51876b60a01bbd50b68a4bd1","primitive-0.8.0.0-08331230b60fd51ba3238ae3eedb6753731dfba5fa7be73699e334be491db804","process-1.6.16.0","random-1.2.1.1-14950f0d57c55eed8fd0701e27e87527c3c7ef42acca95164df8337d2d526ad3","time-1.11.1.1","transformers-0.5.6.2","unix-2.7.2.2","unordered-containers-0.2.19.1-72d06bf7bf8b167e0dbff8d6944ba4e68be2d1f7242823c257b7a3de4095eed3","utf8-string-1.0.2-9298101b281a7775960563b399d1469d84b96ca00e57f02ad0de27a63b6960fb"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"splitmix-0.1.0.4-89a7e5aa79a8ff61d9f9e80b2e831f423d4e7ceacdf327f68373a5c56a67b0cd","pkg-name":"splitmix","pkg-version":"0.1.0.4","flags":{"optimised-mixer":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"db25c2e17967aa6b6046ab8b1b96ba3f344ca59a62b60fb6113d51ea305a3d8e","pkg-src-sha256":"6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa","depends":["base-4.16.4.0","deepseq-1.4.6.1"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"template-haskell-2.18.0.0","pkg-name":"template-haskell","pkg-version":"2.18.0.0","depends":["base-4.16.4.0","ghc-boot-th-9.2.7","ghc-prim-0.8.0","pretty-1.1.3.6"]},{"type":"pre-existing","id":"text-1.2.5.0","pkg-name":"text","pkg-version":"1.2.5.0","depends":["array-0.5.4.0","base-4.16.4.0","binary-0.8.9.0","bytestring-0.11.4.0","deepseq-1.4.6.1","ghc-prim-0.8.0","template-haskell-2.18.0.0"]},{"type":"pre-existing","id":"time-1.11.1.1","pkg-name":"time","pkg-version":"1.11.1.1","depends":["base-4.16.4.0","deepseq-1.4.6.1"]},{"type":"pre-existing","id":"transformers-0.5.6.2","pkg-name":"transformers","pkg-version":"0.5.6.2","depends":["base-4.16.4.0"]},{"type":"pre-existing","id":"unix-2.7.2.2","pkg-name":"unix","pkg-version":"2.7.2.2","depends":["base-4.16.4.0","bytestring-0.11.4.0","time-1.11.1.1"]},{"type":"configured","id":"unordered-containers-0.2.19.1-72d06bf7bf8b167e0dbff8d6944ba4e68be2d1f7242823c257b7a3de4095eed3","pkg-name":"unordered-containers","pkg-version":"0.2.19.1","flags":{"debug":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"9ad8972c2e913c37b1d4f0e1261517fd7a1b8c8a58077e057be69837e3dbaa00","pkg-src-sha256":"1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2","depends":["base-4.16.4.0","deepseq-1.4.6.1","hashable-1.4.2.0-3bef0ce9e580df6e573b834c5b23a1f8eedaa657dfda94246c0f593232c2e716","template-haskell-2.18.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"utf8-string-1.0.2-9298101b281a7775960563b399d1469d84b96ca00e57f02ad0de27a63b6960fb","pkg-name":"utf8-string","pkg-version":"1.0.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"79416292186feeaf1f60e49ac5a1ffae9bf1b120e040a74bf0e81ca7f1d31d3f","pkg-src-sha256":"ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a","depends":["base-4.16.4.0","bytestring-0.11.4.0"],"exe-depends":[],"component-name":"lib"}]} \ No newline at end of file
diff --git a/hadrian/bootstrap/plan-9_4_1.json b/hadrian/bootstrap/plan-9_4_1.json
index b4c39fe854..02d08ecbd4 100644
--- a/hadrian/bootstrap/plan-9_4_1.json
+++ b/hadrian/bootstrap/plan-9_4_1.json
@@ -1 +1 @@
-{"cabal-version":"3.8.1.0","cabal-lib-version":"3.8.1.0","compiler-id":"ghc-9.4.1","os":"linux","arch":"x86_64","install-plan":[{"type":"pre-existing","id":"Cabal-3.8.1.0","pkg-name":"Cabal","pkg-version":"3.8.1.0","depends":["Cabal-syntax-3.8.1.0","array-0.5.4.0","base-4.17.0.0","bytestring-0.11.3.1","containers-0.6.6","deepseq-1.4.8.0","directory-1.3.7.1","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","pretty-1.1.3.6","process-1.6.15.0","text-2.0.1","time-1.12.2","transformers-0.5.6.2","unix-2.7.3"]},{"type":"pre-existing","id":"Cabal-syntax-3.8.1.0","pkg-name":"Cabal-syntax","pkg-version":"3.8.1.0","depends":["array-0.5.4.0","base-4.17.0.0","binary-0.8.9.1","bytestring-0.11.3.1","containers-0.6.6","deepseq-1.4.8.0","directory-1.3.7.1","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","pretty-1.1.3.6","text-2.0.1","time-1.12.2","transformers-0.5.6.2","unix-2.7.3"]},{"type":"configured","id":"QuickCheck-2.14.2-44aec2227e27eddf9f77d5018302a530349bc6f239b48a12da6950ed5bbf27c6","pkg-name":"QuickCheck","pkg-version":"2.14.2","flags":{"old-random":false,"templatehaskell":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4ce29211223d5e6620ebceba34a3ca9ccf1c10c0cf387d48aea45599222ee5aa","pkg-src-sha256":"d87b6c85696b601175274361fa62217894401e401e150c3c5d4013ac53cd36f3","depends":["base-4.17.0.0","containers-0.6.6","deepseq-1.4.8.0","random-1.2.1.1-106248b11573776ddf460b1b18f07785d6ec796405301f531b1205ec94df3e12","splitmix-0.1.0.4-db906bed6d86598d897c981156f45a8b2165bae1ccdb86e3aa835176a54e17bd","template-haskell-2.19.0.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"array-0.5.4.0","pkg-name":"array","pkg-version":"0.5.4.0","depends":["base-4.17.0.0"]},{"type":"pre-existing","id":"base-4.17.0.0","pkg-name":"base","pkg-version":"4.17.0.0","depends":["ghc-bignum-1.3","ghc-prim-0.9.0","rts-1.0.2"]},{"type":"pre-existing","id":"binary-0.8.9.1","pkg-name":"binary","pkg-version":"0.8.9.1","depends":["array-0.5.4.0","base-4.17.0.0","bytestring-0.11.3.1","containers-0.6.6"]},{"type":"pre-existing","id":"bytestring-0.11.3.1","pkg-name":"bytestring","pkg-version":"0.11.3.1","depends":["base-4.17.0.0","deepseq-1.4.8.0","ghc-prim-0.9.0","template-haskell-2.19.0.0"]},{"type":"configured","id":"clock-0.8.3-e675cadb63ad5e90c1cabbe27850d99000d5db86a5062c884ce4164f4a7378d1","pkg-name":"clock","pkg-version":"0.8.3","flags":{"llvm":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c","pkg-src-sha256":"845ce5db4c98cefd517323e005f87effceff886987305e421c4ef616dc0505d1","depends":["base-4.17.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"containers-0.6.6","pkg-name":"containers","pkg-version":"0.6.6","depends":["array-0.5.4.0","base-4.17.0.0","deepseq-1.4.8.0","template-haskell-2.19.0.0"]},{"type":"pre-existing","id":"deepseq-1.4.8.0","pkg-name":"deepseq","pkg-version":"1.4.8.0","depends":["array-0.5.4.0","base-4.17.0.0","ghc-prim-0.9.0"]},{"type":"pre-existing","id":"directory-1.3.7.1","pkg-name":"directory","pkg-version":"1.3.7.1","depends":["base-4.17.0.0","filepath-1.4.2.2","time-1.12.2","unix-2.7.3"]},{"type":"configured","id":"extra-1.7.12-ba1ae6da8d332db535ac32bf5d1361840bf9c054813d92fba0233f72ee4ed8dd","pkg-name":"extra","pkg-version":"1.7.12","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3ac58d7341976173d1052e7b2837d119212d9afcf911735667c7f1ab67aec25f","pkg-src-sha256":"e571a9ec1d8865f0fbb0e0ba1eb575f783b0365c80db19b54a93600bae43b03c","depends":["base-4.17.0.0","clock-0.8.3-e675cadb63ad5e90c1cabbe27850d99000d5db86a5062c884ce4164f4a7378d1","directory-1.3.7.1","filepath-1.4.2.2","process-1.6.15.0","time-1.12.2","unix-2.7.3"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"filepath-1.4.2.2","pkg-name":"filepath","pkg-version":"1.4.2.2","depends":["base-4.17.0.0"]},{"type":"configured","id":"filepattern-0.1.3-002c7183c9aab179816c0672de9fddf0aee1ca80b60510ac8dbe97b45f3925c2","pkg-name":"filepattern","pkg-version":"0.1.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"372c1733d83b90045eb29da9f010fed79bfef8771ce65eb126a1d83ecc54a9a2","pkg-src-sha256":"cc445d439ea2f65cac7604d3578aa2c3a62e5a91dc989f4ce5b3390db9e59636","depends":["base-4.17.0.0","directory-1.3.7.1","extra-1.7.12-ba1ae6da8d332db535ac32bf5d1361840bf9c054813d92fba0233f72ee4ed8dd","filepath-1.4.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"ghc-bignum-1.3","pkg-name":"ghc-bignum","pkg-version":"1.3","depends":["ghc-prim-0.9.0"]},{"type":"pre-existing","id":"ghc-boot-th-9.4.1","pkg-name":"ghc-boot-th","pkg-version":"9.4.1","depends":["base-4.17.0.0"]},{"type":"pre-existing","id":"ghc-prim-0.9.0","pkg-name":"ghc-prim","pkg-version":"0.9.0","depends":["rts-1.0.2"]},{"type":"configured","id":"hadrian-0.1.0.0-inplace-hadrian","pkg-name":"hadrian","pkg-version":"0.1.0.0","flags":{"selftest":true,"threaded":true},"style":"local","pkg-src":{"type":"local","path":"/home/matt/ghc-scratch/hadrian/."},"dist-dir":"/home/matt/ghc-scratch/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.4.1/hadrian-0.1.0.0/x/hadrian","build-info":"/home/matt/ghc-scratch/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.4.1/hadrian-0.1.0.0/x/hadrian/build-info.json","depends":["Cabal-3.8.1.0","QuickCheck-2.14.2-44aec2227e27eddf9f77d5018302a530349bc6f239b48a12da6950ed5bbf27c6","base-4.17.0.0","bytestring-0.11.3.1","containers-0.6.6","directory-1.3.7.1","extra-1.7.12-ba1ae6da8d332db535ac32bf5d1361840bf9c054813d92fba0233f72ee4ed8dd","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","shake-0.19.7-d2fc1dfc6d25adb31e2ca3c13239acbcbadee6c43f4b302967b77dda678899a4","text-2.0.1","time-1.12.2","transformers-0.5.6.2","unordered-containers-0.2.19.1-fd0580db377f6ca69761393a9da6a0c1b74bc039be975b6937b87adeb0d66d84"],"exe-depends":[],"component-name":"exe:hadrian","bin-file":"/home/matt/ghc-scratch/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.4.1/hadrian-0.1.0.0/x/hadrian/build/hadrian/hadrian"},{"type":"configured","id":"hashable-1.4.2.0-1363e3fa0889cf99817775f4b90b379663b405a4c6d8cb3f2d1b34b2ba9038fd","pkg-name":"hashable","pkg-version":"1.4.2.0","flags":{"integer-gmp":true,"random-initial-seed":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"585792335d5541dba78fa8dfcb291a89cd5812a281825ff7a44afa296ab5d58a","pkg-src-sha256":"1b4000ea82b81f69d46d0af4152c10c6303873510738e24cfc4767760d30e3f8","depends":["base-4.17.0.0","bytestring-0.11.3.1","containers-0.6.6","deepseq-1.4.8.0","filepath-1.4.2.2","ghc-bignum-1.3","ghc-prim-0.9.0","text-2.0.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"heaps-0.4-d1d68f7c84e754e5527bfaaf57fe936b7f3b2b13e01ac163bc9a145b2c17fb89","pkg-name":"heaps","pkg-version":"0.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"66b19fcd813b0e4db3e0bac541bd46606c3b13d3d081d9f9666f4be0f5ff14b8","pkg-src-sha256":"89329df8b95ae99ef272e41e7a2d0fe2f1bb7eacfcc34bc01664414b33067cfd","depends":["base-4.17.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-dgtable-0.5.2-7f3616a8d595fe6976ea0cb3b170d51977ab2192394f2cced30c728a1d74f43f","pkg-name":"js-dgtable","pkg-version":"0.5.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f75cb4fa53c88c65794becdd48eb0d3b2b8abd89a3d5c19e87af91f5225c15e4","pkg-src-sha256":"e28dd65bee8083b17210134e22e01c6349dc33c3b7bd17705973cd014e9f20ac","depends":["base-4.17.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-flot-0.8.3-de26baf8fa0904dfce2de4ccf078d2c29c945ae9f648843adff7b2ba89aaf21e","pkg-name":"js-flot","pkg-version":"0.8.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4c1c447a9a2fba0adba6d30678302a30c32b9dfde9e7aa9e9156483e1545096d","pkg-src-sha256":"1ba2f2a6b8d85da76c41f526c98903cbb107f8642e506c072c1e7e3c20fe5e7a","depends":["base-4.17.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-jquery-3.3.1-8a9c7917a9dfc2db75c2a6e4ccbf90329439c9eafb99fef5ab5eaf3d84b7367a","pkg-name":"js-jquery","pkg-version":"3.3.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"59ab6c79159549ef94b584abce8e6d3b336014c2cce1337b59a8f637e2856df5","pkg-src-sha256":"e0e0681f0da1130ede4e03a051630ea439c458cb97216cdb01771ebdbe44069b","depends":["base-4.17.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"mtl-2.2.2","pkg-name":"mtl","pkg-version":"2.2.2","depends":["base-4.17.0.0","transformers-0.5.6.2"]},{"type":"pre-existing","id":"parsec-3.1.15.0","pkg-name":"parsec","pkg-version":"3.1.15.0","depends":["base-4.17.0.0","bytestring-0.11.3.1","mtl-2.2.2","text-2.0.1"]},{"type":"pre-existing","id":"pretty-1.1.3.6","pkg-name":"pretty","pkg-version":"1.1.3.6","depends":["base-4.17.0.0","deepseq-1.4.8.0","ghc-prim-0.9.0"]},{"type":"configured","id":"primitive-0.8.0.0-a07f2cbfdf3613880c3e9948bf6f846af5c8ceff5ece4c0866ecec26372c90ef","pkg-name":"primitive","pkg-version":"0.8.0.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"826bf2a702a26ef87532a135808abad69d74f70ead39f26c06d034b1f0537a19","pkg-src-sha256":"5553c21b4a789f9b591eed69e598cc58484c274af29250e517b5a8bcc62b995f","depends":["base-4.17.0.0","deepseq-1.4.8.0","template-haskell-2.19.0.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"process-1.6.15.0","pkg-name":"process","pkg-version":"1.6.15.0","depends":["base-4.17.0.0","deepseq-1.4.8.0","directory-1.3.7.1","filepath-1.4.2.2","unix-2.7.3"]},{"type":"configured","id":"random-1.2.1.1-106248b11573776ddf460b1b18f07785d6ec796405301f531b1205ec94df3e12","pkg-name":"random","pkg-version":"1.2.1.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"dea1f11e5569332dc6c8efaad1cb301016a5587b6754943a49f9de08ae0e56d9","pkg-src-sha256":"3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76","depends":["base-4.17.0.0","bytestring-0.11.3.1","deepseq-1.4.8.0","mtl-2.2.2","splitmix-0.1.0.4-db906bed6d86598d897c981156f45a8b2165bae1ccdb86e3aa835176a54e17bd"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"rts-1.0.2","pkg-name":"rts","pkg-version":"1.0.2","depends":[]},{"type":"configured","id":"shake-0.19.7-d2fc1dfc6d25adb31e2ca3c13239acbcbadee6c43f4b302967b77dda678899a4","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.17.0.0","binary-0.8.9.1","bytestring-0.11.3.1","deepseq-1.4.8.0","directory-1.3.7.1","extra-1.7.12-ba1ae6da8d332db535ac32bf5d1361840bf9c054813d92fba0233f72ee4ed8dd","filepath-1.4.2.2","filepattern-0.1.3-002c7183c9aab179816c0672de9fddf0aee1ca80b60510ac8dbe97b45f3925c2","hashable-1.4.2.0-1363e3fa0889cf99817775f4b90b379663b405a4c6d8cb3f2d1b34b2ba9038fd","heaps-0.4-d1d68f7c84e754e5527bfaaf57fe936b7f3b2b13e01ac163bc9a145b2c17fb89","js-dgtable-0.5.2-7f3616a8d595fe6976ea0cb3b170d51977ab2192394f2cced30c728a1d74f43f","js-flot-0.8.3-de26baf8fa0904dfce2de4ccf078d2c29c945ae9f648843adff7b2ba89aaf21e","js-jquery-3.3.1-8a9c7917a9dfc2db75c2a6e4ccbf90329439c9eafb99fef5ab5eaf3d84b7367a","primitive-0.8.0.0-a07f2cbfdf3613880c3e9948bf6f846af5c8ceff5ece4c0866ecec26372c90ef","process-1.6.15.0","random-1.2.1.1-106248b11573776ddf460b1b18f07785d6ec796405301f531b1205ec94df3e12","time-1.12.2","transformers-0.5.6.2","unix-2.7.3","unordered-containers-0.2.19.1-fd0580db377f6ca69761393a9da6a0c1b74bc039be975b6937b87adeb0d66d84","utf8-string-1.0.2-8b361b9c94c1703201cb4bc630efe378dcce466e835f8da6034b19636a724526"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"shake-0.19.7-e-shake-62b640d9e5423cbe62368e849a8bc6542054769417e601f88f487fca539d0d6a","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.17.0.0","binary-0.8.9.1","bytestring-0.11.3.1","deepseq-1.4.8.0","directory-1.3.7.1","extra-1.7.12-ba1ae6da8d332db535ac32bf5d1361840bf9c054813d92fba0233f72ee4ed8dd","filepath-1.4.2.2","filepattern-0.1.3-002c7183c9aab179816c0672de9fddf0aee1ca80b60510ac8dbe97b45f3925c2","hashable-1.4.2.0-1363e3fa0889cf99817775f4b90b379663b405a4c6d8cb3f2d1b34b2ba9038fd","heaps-0.4-d1d68f7c84e754e5527bfaaf57fe936b7f3b2b13e01ac163bc9a145b2c17fb89","js-dgtable-0.5.2-7f3616a8d595fe6976ea0cb3b170d51977ab2192394f2cced30c728a1d74f43f","js-flot-0.8.3-de26baf8fa0904dfce2de4ccf078d2c29c945ae9f648843adff7b2ba89aaf21e","js-jquery-3.3.1-8a9c7917a9dfc2db75c2a6e4ccbf90329439c9eafb99fef5ab5eaf3d84b7367a","primitive-0.8.0.0-a07f2cbfdf3613880c3e9948bf6f846af5c8ceff5ece4c0866ecec26372c90ef","process-1.6.15.0","random-1.2.1.1-106248b11573776ddf460b1b18f07785d6ec796405301f531b1205ec94df3e12","time-1.12.2","transformers-0.5.6.2","unix-2.7.3","unordered-containers-0.2.19.1-fd0580db377f6ca69761393a9da6a0c1b74bc039be975b6937b87adeb0d66d84","utf8-string-1.0.2-8b361b9c94c1703201cb4bc630efe378dcce466e835f8da6034b19636a724526"],"exe-depends":[],"component-name":"exe:shake","bin-file":"/home/matt/.cabal/store/ghc-9.4.1/shake-0.19.7-e-shake-62b640d9e5423cbe62368e849a8bc6542054769417e601f88f487fca539d0d6a/bin/shake"},{"type":"configured","id":"splitmix-0.1.0.4-db906bed6d86598d897c981156f45a8b2165bae1ccdb86e3aa835176a54e17bd","pkg-name":"splitmix","pkg-version":"0.1.0.4","flags":{"optimised-mixer":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"db25c2e17967aa6b6046ab8b1b96ba3f344ca59a62b60fb6113d51ea305a3d8e","pkg-src-sha256":"6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa","depends":["base-4.17.0.0","deepseq-1.4.8.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"template-haskell-2.19.0.0","pkg-name":"template-haskell","pkg-version":"2.19.0.0","depends":["base-4.17.0.0","ghc-boot-th-9.4.1","ghc-prim-0.9.0","pretty-1.1.3.6"]},{"type":"pre-existing","id":"text-2.0.1","pkg-name":"text","pkg-version":"2.0.1","depends":["array-0.5.4.0","base-4.17.0.0","binary-0.8.9.1","bytestring-0.11.3.1","deepseq-1.4.8.0","ghc-prim-0.9.0","template-haskell-2.19.0.0"]},{"type":"pre-existing","id":"time-1.12.2","pkg-name":"time","pkg-version":"1.12.2","depends":["base-4.17.0.0","deepseq-1.4.8.0"]},{"type":"pre-existing","id":"transformers-0.5.6.2","pkg-name":"transformers","pkg-version":"0.5.6.2","depends":["base-4.17.0.0"]},{"type":"pre-existing","id":"unix-2.7.3","pkg-name":"unix","pkg-version":"2.7.3","depends":["base-4.17.0.0","bytestring-0.11.3.1","time-1.12.2"]},{"type":"configured","id":"unordered-containers-0.2.19.1-fd0580db377f6ca69761393a9da6a0c1b74bc039be975b6937b87adeb0d66d84","pkg-name":"unordered-containers","pkg-version":"0.2.19.1","flags":{"debug":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"9ad8972c2e913c37b1d4f0e1261517fd7a1b8c8a58077e057be69837e3dbaa00","pkg-src-sha256":"1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2","depends":["base-4.17.0.0","deepseq-1.4.8.0","hashable-1.4.2.0-1363e3fa0889cf99817775f4b90b379663b405a4c6d8cb3f2d1b34b2ba9038fd","template-haskell-2.19.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"utf8-string-1.0.2-8b361b9c94c1703201cb4bc630efe378dcce466e835f8da6034b19636a724526","pkg-name":"utf8-string","pkg-version":"1.0.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"79416292186feeaf1f60e49ac5a1ffae9bf1b120e040a74bf0e81ca7f1d31d3f","pkg-src-sha256":"ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a","depends":["base-4.17.0.0","bytestring-0.11.3.1"],"exe-depends":[],"component-name":"lib"}]} \ No newline at end of file
+{"cabal-version":"3.8.1.0","cabal-lib-version":"3.8.1.0","compiler-id":"ghc-9.4.1","os":"linux","arch":"x86_64","install-plan":[{"type":"pre-existing","id":"Cabal-3.8.1.0","pkg-name":"Cabal","pkg-version":"3.8.1.0","depends":["Cabal-syntax-3.8.1.0","array-0.5.4.0","base-4.17.0.0","bytestring-0.11.3.1","containers-0.6.6","deepseq-1.4.8.0","directory-1.3.7.1","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","pretty-1.1.3.6","process-1.6.15.0","text-2.0.1","time-1.12.2","transformers-0.5.6.2","unix-2.7.3"]},{"type":"pre-existing","id":"Cabal-syntax-3.8.1.0","pkg-name":"Cabal-syntax","pkg-version":"3.8.1.0","depends":["array-0.5.4.0","base-4.17.0.0","binary-0.8.9.1","bytestring-0.11.3.1","containers-0.6.6","deepseq-1.4.8.0","directory-1.3.7.1","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","pretty-1.1.3.6","text-2.0.1","time-1.12.2","transformers-0.5.6.2","unix-2.7.3"]},{"type":"configured","id":"QuickCheck-2.14.2-44aec2227e27eddf9f77d5018302a530349bc6f239b48a12da6950ed5bbf27c6","pkg-name":"QuickCheck","pkg-version":"2.14.2","flags":{"old-random":false,"templatehaskell":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4ce29211223d5e6620ebceba34a3ca9ccf1c10c0cf387d48aea45599222ee5aa","pkg-src-sha256":"d87b6c85696b601175274361fa62217894401e401e150c3c5d4013ac53cd36f3","depends":["base-4.17.0.0","containers-0.6.6","deepseq-1.4.8.0","random-1.2.1.1-106248b11573776ddf460b1b18f07785d6ec796405301f531b1205ec94df3e12","splitmix-0.1.0.4-db906bed6d86598d897c981156f45a8b2165bae1ccdb86e3aa835176a54e17bd","template-haskell-2.19.0.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"array-0.5.4.0","pkg-name":"array","pkg-version":"0.5.4.0","depends":["base-4.17.0.0"]},{"type":"pre-existing","id":"base-4.17.0.0","pkg-name":"base","pkg-version":"4.17.0.0","depends":["ghc-bignum-1.3","ghc-prim-0.9.0","rts-1.0.2"]},{"type":"configured","id":"base16-bytestring-1.0.2.0-1f4d5cfa7c972d59268ad23a58928ca71cb3b0b4d99ecfb3365582489f8d5c7a","pkg-name":"base16-bytestring","pkg-version":"1.0.2.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"64abad7816ab8cabed8489e29f807b3a6f828e0b2cec0eae404323d69d36df9a","pkg-src-sha256":"1d5a91143ef0e22157536093ec8e59d226a68220ec89378d5dcaeea86472c784","depends":["base-4.17.0.0","bytestring-0.11.3.1"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"binary-0.8.9.1","pkg-name":"binary","pkg-version":"0.8.9.1","depends":["array-0.5.4.0","base-4.17.0.0","bytestring-0.11.3.1","containers-0.6.6"]},{"type":"pre-existing","id":"bytestring-0.11.3.1","pkg-name":"bytestring","pkg-version":"0.11.3.1","depends":["base-4.17.0.0","deepseq-1.4.8.0","ghc-prim-0.9.0","template-haskell-2.19.0.0"]},{"type":"configured","id":"clock-0.8.3-e675cadb63ad5e90c1cabbe27850d99000d5db86a5062c884ce4164f4a7378d1","pkg-name":"clock","pkg-version":"0.8.3","flags":{"llvm":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c","pkg-src-sha256":"845ce5db4c98cefd517323e005f87effceff886987305e421c4ef616dc0505d1","depends":["base-4.17.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"containers-0.6.6","pkg-name":"containers","pkg-version":"0.6.6","depends":["array-0.5.4.0","base-4.17.0.0","deepseq-1.4.8.0","template-haskell-2.19.0.0"]},{"type":"configured","id":"cryptohash-sha256-0.11.102.1-803ebe82e336a8fd4af224a090f5332c52868d6c62c4e5b0fb177db5fa3b6e39","pkg-name":"cryptohash-sha256","pkg-version":"0.11.102.1","flags":{"exe":false,"use-cbits":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"72ce9095872eae653addca5f412ac8070d6282d8e1c8578c2237c33f2cbbf4bc","pkg-src-sha256":"73a7dc7163871a80837495039a099967b11f5c4fe70a118277842f7a713c6bf6","depends":["base-4.17.0.0","bytestring-0.11.3.1"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"deepseq-1.4.8.0","pkg-name":"deepseq","pkg-version":"1.4.8.0","depends":["array-0.5.4.0","base-4.17.0.0","ghc-prim-0.9.0"]},{"type":"pre-existing","id":"directory-1.3.7.1","pkg-name":"directory","pkg-version":"1.3.7.1","depends":["base-4.17.0.0","filepath-1.4.2.2","time-1.12.2","unix-2.7.3"]},{"type":"configured","id":"extra-1.7.12-ba1ae6da8d332db535ac32bf5d1361840bf9c054813d92fba0233f72ee4ed8dd","pkg-name":"extra","pkg-version":"1.7.12","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3ac58d7341976173d1052e7b2837d119212d9afcf911735667c7f1ab67aec25f","pkg-src-sha256":"e571a9ec1d8865f0fbb0e0ba1eb575f783b0365c80db19b54a93600bae43b03c","depends":["base-4.17.0.0","clock-0.8.3-e675cadb63ad5e90c1cabbe27850d99000d5db86a5062c884ce4164f4a7378d1","directory-1.3.7.1","filepath-1.4.2.2","process-1.6.15.0","time-1.12.2","unix-2.7.3"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"filepath-1.4.2.2","pkg-name":"filepath","pkg-version":"1.4.2.2","depends":["base-4.17.0.0"]},{"type":"configured","id":"filepattern-0.1.3-002c7183c9aab179816c0672de9fddf0aee1ca80b60510ac8dbe97b45f3925c2","pkg-name":"filepattern","pkg-version":"0.1.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"372c1733d83b90045eb29da9f010fed79bfef8771ce65eb126a1d83ecc54a9a2","pkg-src-sha256":"cc445d439ea2f65cac7604d3578aa2c3a62e5a91dc989f4ce5b3390db9e59636","depends":["base-4.17.0.0","directory-1.3.7.1","extra-1.7.12-ba1ae6da8d332db535ac32bf5d1361840bf9c054813d92fba0233f72ee4ed8dd","filepath-1.4.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"ghc-bignum-1.3","pkg-name":"ghc-bignum","pkg-version":"1.3","depends":["ghc-prim-0.9.0"]},{"type":"pre-existing","id":"ghc-boot-th-9.4.1","pkg-name":"ghc-boot-th","pkg-version":"9.4.1","depends":["base-4.17.0.0"]},{"type":"pre-existing","id":"ghc-prim-0.9.0","pkg-name":"ghc-prim","pkg-version":"0.9.0","depends":["rts-1.0.2"]},{"type":"configured","id":"hadrian-0.1.0.0-inplace-hadrian","pkg-name":"hadrian","pkg-version":"0.1.0.0","flags":{"selftest":true,"threaded":true},"style":"local","pkg-src":{"type":"local","path":"/home/matt/ghc-rodrigo/hadrian/."},"dist-dir":"/home/matt/ghc-rodrigo/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.4.1/hadrian-0.1.0.0/x/hadrian","build-info":"/home/matt/ghc-rodrigo/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.4.1/hadrian-0.1.0.0/x/hadrian/build-info.json","depends":["Cabal-3.8.1.0","QuickCheck-2.14.2-44aec2227e27eddf9f77d5018302a530349bc6f239b48a12da6950ed5bbf27c6","base-4.17.0.0","base16-bytestring-1.0.2.0-1f4d5cfa7c972d59268ad23a58928ca71cb3b0b4d99ecfb3365582489f8d5c7a","bytestring-0.11.3.1","containers-0.6.6","cryptohash-sha256-0.11.102.1-803ebe82e336a8fd4af224a090f5332c52868d6c62c4e5b0fb177db5fa3b6e39","directory-1.3.7.1","extra-1.7.12-ba1ae6da8d332db535ac32bf5d1361840bf9c054813d92fba0233f72ee4ed8dd","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","shake-0.19.7-d2fc1dfc6d25adb31e2ca3c13239acbcbadee6c43f4b302967b77dda678899a4","text-2.0.1","time-1.12.2","transformers-0.5.6.2","unordered-containers-0.2.19.1-fd0580db377f6ca69761393a9da6a0c1b74bc039be975b6937b87adeb0d66d84"],"exe-depends":[],"component-name":"exe:hadrian","bin-file":"/home/matt/ghc-rodrigo/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.4.1/hadrian-0.1.0.0/x/hadrian/build/hadrian/hadrian"},{"type":"configured","id":"hashable-1.4.2.0-1363e3fa0889cf99817775f4b90b379663b405a4c6d8cb3f2d1b34b2ba9038fd","pkg-name":"hashable","pkg-version":"1.4.2.0","flags":{"integer-gmp":true,"random-initial-seed":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"585792335d5541dba78fa8dfcb291a89cd5812a281825ff7a44afa296ab5d58a","pkg-src-sha256":"1b4000ea82b81f69d46d0af4152c10c6303873510738e24cfc4767760d30e3f8","depends":["base-4.17.0.0","bytestring-0.11.3.1","containers-0.6.6","deepseq-1.4.8.0","filepath-1.4.2.2","ghc-bignum-1.3","ghc-prim-0.9.0","text-2.0.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"heaps-0.4-d1d68f7c84e754e5527bfaaf57fe936b7f3b2b13e01ac163bc9a145b2c17fb89","pkg-name":"heaps","pkg-version":"0.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"66b19fcd813b0e4db3e0bac541bd46606c3b13d3d081d9f9666f4be0f5ff14b8","pkg-src-sha256":"89329df8b95ae99ef272e41e7a2d0fe2f1bb7eacfcc34bc01664414b33067cfd","depends":["base-4.17.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-dgtable-0.5.2-7f3616a8d595fe6976ea0cb3b170d51977ab2192394f2cced30c728a1d74f43f","pkg-name":"js-dgtable","pkg-version":"0.5.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f75cb4fa53c88c65794becdd48eb0d3b2b8abd89a3d5c19e87af91f5225c15e4","pkg-src-sha256":"e28dd65bee8083b17210134e22e01c6349dc33c3b7bd17705973cd014e9f20ac","depends":["base-4.17.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-flot-0.8.3-de26baf8fa0904dfce2de4ccf078d2c29c945ae9f648843adff7b2ba89aaf21e","pkg-name":"js-flot","pkg-version":"0.8.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4c1c447a9a2fba0adba6d30678302a30c32b9dfde9e7aa9e9156483e1545096d","pkg-src-sha256":"1ba2f2a6b8d85da76c41f526c98903cbb107f8642e506c072c1e7e3c20fe5e7a","depends":["base-4.17.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-jquery-3.3.1-8a9c7917a9dfc2db75c2a6e4ccbf90329439c9eafb99fef5ab5eaf3d84b7367a","pkg-name":"js-jquery","pkg-version":"3.3.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"59ab6c79159549ef94b584abce8e6d3b336014c2cce1337b59a8f637e2856df5","pkg-src-sha256":"e0e0681f0da1130ede4e03a051630ea439c458cb97216cdb01771ebdbe44069b","depends":["base-4.17.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"mtl-2.2.2","pkg-name":"mtl","pkg-version":"2.2.2","depends":["base-4.17.0.0","transformers-0.5.6.2"]},{"type":"pre-existing","id":"parsec-3.1.15.0","pkg-name":"parsec","pkg-version":"3.1.15.0","depends":["base-4.17.0.0","bytestring-0.11.3.1","mtl-2.2.2","text-2.0.1"]},{"type":"pre-existing","id":"pretty-1.1.3.6","pkg-name":"pretty","pkg-version":"1.1.3.6","depends":["base-4.17.0.0","deepseq-1.4.8.0","ghc-prim-0.9.0"]},{"type":"configured","id":"primitive-0.8.0.0-a07f2cbfdf3613880c3e9948bf6f846af5c8ceff5ece4c0866ecec26372c90ef","pkg-name":"primitive","pkg-version":"0.8.0.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"826bf2a702a26ef87532a135808abad69d74f70ead39f26c06d034b1f0537a19","pkg-src-sha256":"5553c21b4a789f9b591eed69e598cc58484c274af29250e517b5a8bcc62b995f","depends":["base-4.17.0.0","deepseq-1.4.8.0","template-haskell-2.19.0.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"process-1.6.15.0","pkg-name":"process","pkg-version":"1.6.15.0","depends":["base-4.17.0.0","deepseq-1.4.8.0","directory-1.3.7.1","filepath-1.4.2.2","unix-2.7.3"]},{"type":"configured","id":"random-1.2.1.1-106248b11573776ddf460b1b18f07785d6ec796405301f531b1205ec94df3e12","pkg-name":"random","pkg-version":"1.2.1.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"dea1f11e5569332dc6c8efaad1cb301016a5587b6754943a49f9de08ae0e56d9","pkg-src-sha256":"3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76","depends":["base-4.17.0.0","bytestring-0.11.3.1","deepseq-1.4.8.0","mtl-2.2.2","splitmix-0.1.0.4-db906bed6d86598d897c981156f45a8b2165bae1ccdb86e3aa835176a54e17bd"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"rts-1.0.2","pkg-name":"rts","pkg-version":"1.0.2","depends":[]},{"type":"configured","id":"shake-0.19.7-d2fc1dfc6d25adb31e2ca3c13239acbcbadee6c43f4b302967b77dda678899a4","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.17.0.0","binary-0.8.9.1","bytestring-0.11.3.1","deepseq-1.4.8.0","directory-1.3.7.1","extra-1.7.12-ba1ae6da8d332db535ac32bf5d1361840bf9c054813d92fba0233f72ee4ed8dd","filepath-1.4.2.2","filepattern-0.1.3-002c7183c9aab179816c0672de9fddf0aee1ca80b60510ac8dbe97b45f3925c2","hashable-1.4.2.0-1363e3fa0889cf99817775f4b90b379663b405a4c6d8cb3f2d1b34b2ba9038fd","heaps-0.4-d1d68f7c84e754e5527bfaaf57fe936b7f3b2b13e01ac163bc9a145b2c17fb89","js-dgtable-0.5.2-7f3616a8d595fe6976ea0cb3b170d51977ab2192394f2cced30c728a1d74f43f","js-flot-0.8.3-de26baf8fa0904dfce2de4ccf078d2c29c945ae9f648843adff7b2ba89aaf21e","js-jquery-3.3.1-8a9c7917a9dfc2db75c2a6e4ccbf90329439c9eafb99fef5ab5eaf3d84b7367a","primitive-0.8.0.0-a07f2cbfdf3613880c3e9948bf6f846af5c8ceff5ece4c0866ecec26372c90ef","process-1.6.15.0","random-1.2.1.1-106248b11573776ddf460b1b18f07785d6ec796405301f531b1205ec94df3e12","time-1.12.2","transformers-0.5.6.2","unix-2.7.3","unordered-containers-0.2.19.1-fd0580db377f6ca69761393a9da6a0c1b74bc039be975b6937b87adeb0d66d84","utf8-string-1.0.2-8b361b9c94c1703201cb4bc630efe378dcce466e835f8da6034b19636a724526"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"shake-0.19.7-e-shake-62b640d9e5423cbe62368e849a8bc6542054769417e601f88f487fca539d0d6a","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.17.0.0","binary-0.8.9.1","bytestring-0.11.3.1","deepseq-1.4.8.0","directory-1.3.7.1","extra-1.7.12-ba1ae6da8d332db535ac32bf5d1361840bf9c054813d92fba0233f72ee4ed8dd","filepath-1.4.2.2","filepattern-0.1.3-002c7183c9aab179816c0672de9fddf0aee1ca80b60510ac8dbe97b45f3925c2","hashable-1.4.2.0-1363e3fa0889cf99817775f4b90b379663b405a4c6d8cb3f2d1b34b2ba9038fd","heaps-0.4-d1d68f7c84e754e5527bfaaf57fe936b7f3b2b13e01ac163bc9a145b2c17fb89","js-dgtable-0.5.2-7f3616a8d595fe6976ea0cb3b170d51977ab2192394f2cced30c728a1d74f43f","js-flot-0.8.3-de26baf8fa0904dfce2de4ccf078d2c29c945ae9f648843adff7b2ba89aaf21e","js-jquery-3.3.1-8a9c7917a9dfc2db75c2a6e4ccbf90329439c9eafb99fef5ab5eaf3d84b7367a","primitive-0.8.0.0-a07f2cbfdf3613880c3e9948bf6f846af5c8ceff5ece4c0866ecec26372c90ef","process-1.6.15.0","random-1.2.1.1-106248b11573776ddf460b1b18f07785d6ec796405301f531b1205ec94df3e12","time-1.12.2","transformers-0.5.6.2","unix-2.7.3","unordered-containers-0.2.19.1-fd0580db377f6ca69761393a9da6a0c1b74bc039be975b6937b87adeb0d66d84","utf8-string-1.0.2-8b361b9c94c1703201cb4bc630efe378dcce466e835f8da6034b19636a724526"],"exe-depends":[],"component-name":"exe:shake","bin-file":"/home/matt/.cabal/store/ghc-9.4.1/shake-0.19.7-e-shake-62b640d9e5423cbe62368e849a8bc6542054769417e601f88f487fca539d0d6a/bin/shake"},{"type":"configured","id":"splitmix-0.1.0.4-db906bed6d86598d897c981156f45a8b2165bae1ccdb86e3aa835176a54e17bd","pkg-name":"splitmix","pkg-version":"0.1.0.4","flags":{"optimised-mixer":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"db25c2e17967aa6b6046ab8b1b96ba3f344ca59a62b60fb6113d51ea305a3d8e","pkg-src-sha256":"6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa","depends":["base-4.17.0.0","deepseq-1.4.8.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"template-haskell-2.19.0.0","pkg-name":"template-haskell","pkg-version":"2.19.0.0","depends":["base-4.17.0.0","ghc-boot-th-9.4.1","ghc-prim-0.9.0","pretty-1.1.3.6"]},{"type":"pre-existing","id":"text-2.0.1","pkg-name":"text","pkg-version":"2.0.1","depends":["array-0.5.4.0","base-4.17.0.0","binary-0.8.9.1","bytestring-0.11.3.1","deepseq-1.4.8.0","ghc-prim-0.9.0","template-haskell-2.19.0.0"]},{"type":"pre-existing","id":"time-1.12.2","pkg-name":"time","pkg-version":"1.12.2","depends":["base-4.17.0.0","deepseq-1.4.8.0"]},{"type":"pre-existing","id":"transformers-0.5.6.2","pkg-name":"transformers","pkg-version":"0.5.6.2","depends":["base-4.17.0.0"]},{"type":"pre-existing","id":"unix-2.7.3","pkg-name":"unix","pkg-version":"2.7.3","depends":["base-4.17.0.0","bytestring-0.11.3.1","time-1.12.2"]},{"type":"configured","id":"unordered-containers-0.2.19.1-fd0580db377f6ca69761393a9da6a0c1b74bc039be975b6937b87adeb0d66d84","pkg-name":"unordered-containers","pkg-version":"0.2.19.1","flags":{"debug":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"9ad8972c2e913c37b1d4f0e1261517fd7a1b8c8a58077e057be69837e3dbaa00","pkg-src-sha256":"1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2","depends":["base-4.17.0.0","deepseq-1.4.8.0","hashable-1.4.2.0-1363e3fa0889cf99817775f4b90b379663b405a4c6d8cb3f2d1b34b2ba9038fd","template-haskell-2.19.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"utf8-string-1.0.2-8b361b9c94c1703201cb4bc630efe378dcce466e835f8da6034b19636a724526","pkg-name":"utf8-string","pkg-version":"1.0.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"79416292186feeaf1f60e49ac5a1ffae9bf1b120e040a74bf0e81ca7f1d31d3f","pkg-src-sha256":"ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a","depends":["base-4.17.0.0","bytestring-0.11.3.1"],"exe-depends":[],"component-name":"lib"}]} \ No newline at end of file
diff --git a/hadrian/bootstrap/plan-9_4_2.json b/hadrian/bootstrap/plan-9_4_2.json
index 06d6794550..b79b3ba4b6 100644
--- a/hadrian/bootstrap/plan-9_4_2.json
+++ b/hadrian/bootstrap/plan-9_4_2.json
@@ -1 +1 @@
-{"cabal-version":"3.8.1.0","cabal-lib-version":"3.8.1.0","compiler-id":"ghc-9.4.2","os":"linux","arch":"x86_64","install-plan":[{"type":"pre-existing","id":"Cabal-3.8.1.0","pkg-name":"Cabal","pkg-version":"3.8.1.0","depends":["Cabal-syntax-3.8.1.0","array-0.5.4.0","base-4.17.0.0","bytestring-0.11.3.1","containers-0.6.6","deepseq-1.4.8.0","directory-1.3.7.1","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","pretty-1.1.3.6","process-1.6.15.0","text-2.0.1","time-1.12.2","transformers-0.5.6.2","unix-2.7.3"]},{"type":"pre-existing","id":"Cabal-syntax-3.8.1.0","pkg-name":"Cabal-syntax","pkg-version":"3.8.1.0","depends":["array-0.5.4.0","base-4.17.0.0","binary-0.8.9.1","bytestring-0.11.3.1","containers-0.6.6","deepseq-1.4.8.0","directory-1.3.7.1","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","pretty-1.1.3.6","text-2.0.1","time-1.12.2","transformers-0.5.6.2","unix-2.7.3"]},{"type":"configured","id":"QuickCheck-2.14.2-3dda78ffb9c0183413979d4bca4a88aa2dfb8fb922ef115a947bd1bf3458add0","pkg-name":"QuickCheck","pkg-version":"2.14.2","flags":{"old-random":false,"templatehaskell":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4ce29211223d5e6620ebceba34a3ca9ccf1c10c0cf387d48aea45599222ee5aa","pkg-src-sha256":"d87b6c85696b601175274361fa62217894401e401e150c3c5d4013ac53cd36f3","depends":["base-4.17.0.0","containers-0.6.6","deepseq-1.4.8.0","random-1.2.1.1-9993604da3abd0daa207bd669568b3090a5800f579313cdde4e4f2dd1205a948","splitmix-0.1.0.4-038952c2592bf9a18f363fc90951b486b79df30ad213b8f2b39e885e464e4944","template-haskell-2.19.0.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"array-0.5.4.0","pkg-name":"array","pkg-version":"0.5.4.0","depends":["base-4.17.0.0"]},{"type":"pre-existing","id":"base-4.17.0.0","pkg-name":"base","pkg-version":"4.17.0.0","depends":["ghc-bignum-1.3","ghc-prim-0.9.0","rts-1.0.2"]},{"type":"pre-existing","id":"binary-0.8.9.1","pkg-name":"binary","pkg-version":"0.8.9.1","depends":["array-0.5.4.0","base-4.17.0.0","bytestring-0.11.3.1","containers-0.6.6"]},{"type":"pre-existing","id":"bytestring-0.11.3.1","pkg-name":"bytestring","pkg-version":"0.11.3.1","depends":["base-4.17.0.0","deepseq-1.4.8.0","ghc-prim-0.9.0","template-haskell-2.19.0.0"]},{"type":"configured","id":"clock-0.8.3-0129568eebbfa961d0c38a3dcb8b8cd195f8a921fe59eb9ceddfc368d87f7b74","pkg-name":"clock","pkg-version":"0.8.3","flags":{"llvm":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c","pkg-src-sha256":"845ce5db4c98cefd517323e005f87effceff886987305e421c4ef616dc0505d1","depends":["base-4.17.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"containers-0.6.6","pkg-name":"containers","pkg-version":"0.6.6","depends":["array-0.5.4.0","base-4.17.0.0","deepseq-1.4.8.0","template-haskell-2.19.0.0"]},{"type":"pre-existing","id":"deepseq-1.4.8.0","pkg-name":"deepseq","pkg-version":"1.4.8.0","depends":["array-0.5.4.0","base-4.17.0.0","ghc-prim-0.9.0"]},{"type":"pre-existing","id":"directory-1.3.7.1","pkg-name":"directory","pkg-version":"1.3.7.1","depends":["base-4.17.0.0","filepath-1.4.2.2","time-1.12.2","unix-2.7.3"]},{"type":"configured","id":"extra-1.7.12-f9efaf6c8d3c0aff6a2d5790a849d70549163752fac9725bf7139c733763d52d","pkg-name":"extra","pkg-version":"1.7.12","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3ac58d7341976173d1052e7b2837d119212d9afcf911735667c7f1ab67aec25f","pkg-src-sha256":"e571a9ec1d8865f0fbb0e0ba1eb575f783b0365c80db19b54a93600bae43b03c","depends":["base-4.17.0.0","clock-0.8.3-0129568eebbfa961d0c38a3dcb8b8cd195f8a921fe59eb9ceddfc368d87f7b74","directory-1.3.7.1","filepath-1.4.2.2","process-1.6.15.0","time-1.12.2","unix-2.7.3"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"filepath-1.4.2.2","pkg-name":"filepath","pkg-version":"1.4.2.2","depends":["base-4.17.0.0"]},{"type":"configured","id":"filepattern-0.1.3-08a9ec632f1ac6000bb77c2013c1110b63c20c3139ed08f95a22f36da4f3ae2d","pkg-name":"filepattern","pkg-version":"0.1.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"372c1733d83b90045eb29da9f010fed79bfef8771ce65eb126a1d83ecc54a9a2","pkg-src-sha256":"cc445d439ea2f65cac7604d3578aa2c3a62e5a91dc989f4ce5b3390db9e59636","depends":["base-4.17.0.0","directory-1.3.7.1","extra-1.7.12-f9efaf6c8d3c0aff6a2d5790a849d70549163752fac9725bf7139c733763d52d","filepath-1.4.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"ghc-bignum-1.3","pkg-name":"ghc-bignum","pkg-version":"1.3","depends":["ghc-prim-0.9.0"]},{"type":"pre-existing","id":"ghc-boot-th-9.4.2","pkg-name":"ghc-boot-th","pkg-version":"9.4.2","depends":["base-4.17.0.0"]},{"type":"pre-existing","id":"ghc-prim-0.9.0","pkg-name":"ghc-prim","pkg-version":"0.9.0","depends":["rts-1.0.2"]},{"type":"configured","id":"hadrian-0.1.0.0-inplace-hadrian","pkg-name":"hadrian","pkg-version":"0.1.0.0","flags":{"selftest":true,"threaded":true},"style":"local","pkg-src":{"type":"local","path":"/home/matt/ghc-scratch/hadrian/."},"dist-dir":"/home/matt/ghc-scratch/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.4.2/hadrian-0.1.0.0/x/hadrian","build-info":"/home/matt/ghc-scratch/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.4.2/hadrian-0.1.0.0/x/hadrian/build-info.json","depends":["Cabal-3.8.1.0","QuickCheck-2.14.2-3dda78ffb9c0183413979d4bca4a88aa2dfb8fb922ef115a947bd1bf3458add0","base-4.17.0.0","bytestring-0.11.3.1","containers-0.6.6","directory-1.3.7.1","extra-1.7.12-f9efaf6c8d3c0aff6a2d5790a849d70549163752fac9725bf7139c733763d52d","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","shake-0.19.7-e941cd8c6a2384d93b27d15bed9271abdfc1bd3584c51ce36cdfa5ebef75e2d1","text-2.0.1","time-1.12.2","transformers-0.5.6.2","unordered-containers-0.2.19.1-5d479bd67546400df56a0d5936ce154eaf2a515f628e7f7c6a4bdf072f3a7357"],"exe-depends":[],"component-name":"exe:hadrian","bin-file":"/home/matt/ghc-scratch/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.4.2/hadrian-0.1.0.0/x/hadrian/build/hadrian/hadrian"},{"type":"configured","id":"hashable-1.4.2.0-8e31e6b21e417f686c72cda778509198a6d21d5a913ab5887f00511181a1b962","pkg-name":"hashable","pkg-version":"1.4.2.0","flags":{"integer-gmp":true,"random-initial-seed":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"585792335d5541dba78fa8dfcb291a89cd5812a281825ff7a44afa296ab5d58a","pkg-src-sha256":"1b4000ea82b81f69d46d0af4152c10c6303873510738e24cfc4767760d30e3f8","depends":["base-4.17.0.0","bytestring-0.11.3.1","containers-0.6.6","deepseq-1.4.8.0","filepath-1.4.2.2","ghc-bignum-1.3","ghc-prim-0.9.0","text-2.0.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"heaps-0.4-3f9ca831e2a710f80e5a253748a1aa605a7219f998fa88ce43b69c22d0075c73","pkg-name":"heaps","pkg-version":"0.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"66b19fcd813b0e4db3e0bac541bd46606c3b13d3d081d9f9666f4be0f5ff14b8","pkg-src-sha256":"89329df8b95ae99ef272e41e7a2d0fe2f1bb7eacfcc34bc01664414b33067cfd","depends":["base-4.17.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-dgtable-0.5.2-f7a634b948774c98a2be281a9a2244964a18c3b15b559a34248b4d851e8efb1b","pkg-name":"js-dgtable","pkg-version":"0.5.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f75cb4fa53c88c65794becdd48eb0d3b2b8abd89a3d5c19e87af91f5225c15e4","pkg-src-sha256":"e28dd65bee8083b17210134e22e01c6349dc33c3b7bd17705973cd014e9f20ac","depends":["base-4.17.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-flot-0.8.3-b34534f666396e8ad058c9e0cb79b8d2cfe4294fc870aa2daf758c66a4533545","pkg-name":"js-flot","pkg-version":"0.8.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4c1c447a9a2fba0adba6d30678302a30c32b9dfde9e7aa9e9156483e1545096d","pkg-src-sha256":"1ba2f2a6b8d85da76c41f526c98903cbb107f8642e506c072c1e7e3c20fe5e7a","depends":["base-4.17.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-jquery-3.3.1-4a51d1b0e66cd03e445290dde0449cd0ba22dd046bccc10876992c1527bc8a6f","pkg-name":"js-jquery","pkg-version":"3.3.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"59ab6c79159549ef94b584abce8e6d3b336014c2cce1337b59a8f637e2856df5","pkg-src-sha256":"e0e0681f0da1130ede4e03a051630ea439c458cb97216cdb01771ebdbe44069b","depends":["base-4.17.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"mtl-2.2.2","pkg-name":"mtl","pkg-version":"2.2.2","depends":["base-4.17.0.0","transformers-0.5.6.2"]},{"type":"pre-existing","id":"parsec-3.1.15.0","pkg-name":"parsec","pkg-version":"3.1.15.0","depends":["base-4.17.0.0","bytestring-0.11.3.1","mtl-2.2.2","text-2.0.1"]},{"type":"pre-existing","id":"pretty-1.1.3.6","pkg-name":"pretty","pkg-version":"1.1.3.6","depends":["base-4.17.0.0","deepseq-1.4.8.0","ghc-prim-0.9.0"]},{"type":"configured","id":"primitive-0.8.0.0-c149e96dd6c8e609c75b5c29aa28e8cd219c971a12e6e067d5b176788da134c7","pkg-name":"primitive","pkg-version":"0.8.0.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"826bf2a702a26ef87532a135808abad69d74f70ead39f26c06d034b1f0537a19","pkg-src-sha256":"5553c21b4a789f9b591eed69e598cc58484c274af29250e517b5a8bcc62b995f","depends":["base-4.17.0.0","deepseq-1.4.8.0","template-haskell-2.19.0.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"process-1.6.15.0","pkg-name":"process","pkg-version":"1.6.15.0","depends":["base-4.17.0.0","deepseq-1.4.8.0","directory-1.3.7.1","filepath-1.4.2.2","unix-2.7.3"]},{"type":"configured","id":"random-1.2.1.1-9993604da3abd0daa207bd669568b3090a5800f579313cdde4e4f2dd1205a948","pkg-name":"random","pkg-version":"1.2.1.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"dea1f11e5569332dc6c8efaad1cb301016a5587b6754943a49f9de08ae0e56d9","pkg-src-sha256":"3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76","depends":["base-4.17.0.0","bytestring-0.11.3.1","deepseq-1.4.8.0","mtl-2.2.2","splitmix-0.1.0.4-038952c2592bf9a18f363fc90951b486b79df30ad213b8f2b39e885e464e4944"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"rts-1.0.2","pkg-name":"rts","pkg-version":"1.0.2","depends":[]},{"type":"configured","id":"shake-0.19.7-e-shake-93a6abbc9595b6d85ad9802cf629596ab2d5d3c72261d6dce269f07068d1b8aa","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.17.0.0","binary-0.8.9.1","bytestring-0.11.3.1","deepseq-1.4.8.0","directory-1.3.7.1","extra-1.7.12-f9efaf6c8d3c0aff6a2d5790a849d70549163752fac9725bf7139c733763d52d","filepath-1.4.2.2","filepattern-0.1.3-08a9ec632f1ac6000bb77c2013c1110b63c20c3139ed08f95a22f36da4f3ae2d","hashable-1.4.2.0-8e31e6b21e417f686c72cda778509198a6d21d5a913ab5887f00511181a1b962","heaps-0.4-3f9ca831e2a710f80e5a253748a1aa605a7219f998fa88ce43b69c22d0075c73","js-dgtable-0.5.2-f7a634b948774c98a2be281a9a2244964a18c3b15b559a34248b4d851e8efb1b","js-flot-0.8.3-b34534f666396e8ad058c9e0cb79b8d2cfe4294fc870aa2daf758c66a4533545","js-jquery-3.3.1-4a51d1b0e66cd03e445290dde0449cd0ba22dd046bccc10876992c1527bc8a6f","primitive-0.8.0.0-c149e96dd6c8e609c75b5c29aa28e8cd219c971a12e6e067d5b176788da134c7","process-1.6.15.0","random-1.2.1.1-9993604da3abd0daa207bd669568b3090a5800f579313cdde4e4f2dd1205a948","time-1.12.2","transformers-0.5.6.2","unix-2.7.3","unordered-containers-0.2.19.1-5d479bd67546400df56a0d5936ce154eaf2a515f628e7f7c6a4bdf072f3a7357","utf8-string-1.0.2-74175dc1969f6d60b6b78e0f9ae512859446f68011f9742d4519de87229b0554"],"exe-depends":[],"component-name":"exe:shake","bin-file":"/home/matt/.cabal/store/ghc-9.4.2/shake-0.19.7-e-shake-93a6abbc9595b6d85ad9802cf629596ab2d5d3c72261d6dce269f07068d1b8aa/bin/shake"},{"type":"configured","id":"shake-0.19.7-e941cd8c6a2384d93b27d15bed9271abdfc1bd3584c51ce36cdfa5ebef75e2d1","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.17.0.0","binary-0.8.9.1","bytestring-0.11.3.1","deepseq-1.4.8.0","directory-1.3.7.1","extra-1.7.12-f9efaf6c8d3c0aff6a2d5790a849d70549163752fac9725bf7139c733763d52d","filepath-1.4.2.2","filepattern-0.1.3-08a9ec632f1ac6000bb77c2013c1110b63c20c3139ed08f95a22f36da4f3ae2d","hashable-1.4.2.0-8e31e6b21e417f686c72cda778509198a6d21d5a913ab5887f00511181a1b962","heaps-0.4-3f9ca831e2a710f80e5a253748a1aa605a7219f998fa88ce43b69c22d0075c73","js-dgtable-0.5.2-f7a634b948774c98a2be281a9a2244964a18c3b15b559a34248b4d851e8efb1b","js-flot-0.8.3-b34534f666396e8ad058c9e0cb79b8d2cfe4294fc870aa2daf758c66a4533545","js-jquery-3.3.1-4a51d1b0e66cd03e445290dde0449cd0ba22dd046bccc10876992c1527bc8a6f","primitive-0.8.0.0-c149e96dd6c8e609c75b5c29aa28e8cd219c971a12e6e067d5b176788da134c7","process-1.6.15.0","random-1.2.1.1-9993604da3abd0daa207bd669568b3090a5800f579313cdde4e4f2dd1205a948","time-1.12.2","transformers-0.5.6.2","unix-2.7.3","unordered-containers-0.2.19.1-5d479bd67546400df56a0d5936ce154eaf2a515f628e7f7c6a4bdf072f3a7357","utf8-string-1.0.2-74175dc1969f6d60b6b78e0f9ae512859446f68011f9742d4519de87229b0554"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"splitmix-0.1.0.4-038952c2592bf9a18f363fc90951b486b79df30ad213b8f2b39e885e464e4944","pkg-name":"splitmix","pkg-version":"0.1.0.4","flags":{"optimised-mixer":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"db25c2e17967aa6b6046ab8b1b96ba3f344ca59a62b60fb6113d51ea305a3d8e","pkg-src-sha256":"6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa","depends":["base-4.17.0.0","deepseq-1.4.8.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"template-haskell-2.19.0.0","pkg-name":"template-haskell","pkg-version":"2.19.0.0","depends":["base-4.17.0.0","ghc-boot-th-9.4.2","ghc-prim-0.9.0","pretty-1.1.3.6"]},{"type":"pre-existing","id":"text-2.0.1","pkg-name":"text","pkg-version":"2.0.1","depends":["array-0.5.4.0","base-4.17.0.0","binary-0.8.9.1","bytestring-0.11.3.1","deepseq-1.4.8.0","ghc-prim-0.9.0","template-haskell-2.19.0.0"]},{"type":"pre-existing","id":"time-1.12.2","pkg-name":"time","pkg-version":"1.12.2","depends":["base-4.17.0.0","deepseq-1.4.8.0"]},{"type":"pre-existing","id":"transformers-0.5.6.2","pkg-name":"transformers","pkg-version":"0.5.6.2","depends":["base-4.17.0.0"]},{"type":"pre-existing","id":"unix-2.7.3","pkg-name":"unix","pkg-version":"2.7.3","depends":["base-4.17.0.0","bytestring-0.11.3.1","time-1.12.2"]},{"type":"configured","id":"unordered-containers-0.2.19.1-5d479bd67546400df56a0d5936ce154eaf2a515f628e7f7c6a4bdf072f3a7357","pkg-name":"unordered-containers","pkg-version":"0.2.19.1","flags":{"debug":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"9ad8972c2e913c37b1d4f0e1261517fd7a1b8c8a58077e057be69837e3dbaa00","pkg-src-sha256":"1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2","depends":["base-4.17.0.0","deepseq-1.4.8.0","hashable-1.4.2.0-8e31e6b21e417f686c72cda778509198a6d21d5a913ab5887f00511181a1b962","template-haskell-2.19.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"utf8-string-1.0.2-74175dc1969f6d60b6b78e0f9ae512859446f68011f9742d4519de87229b0554","pkg-name":"utf8-string","pkg-version":"1.0.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"79416292186feeaf1f60e49ac5a1ffae9bf1b120e040a74bf0e81ca7f1d31d3f","pkg-src-sha256":"ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a","depends":["base-4.17.0.0","bytestring-0.11.3.1"],"exe-depends":[],"component-name":"lib"}]} \ No newline at end of file
+{"cabal-version":"3.8.1.0","cabal-lib-version":"3.8.1.0","compiler-id":"ghc-9.4.2","os":"linux","arch":"x86_64","install-plan":[{"type":"pre-existing","id":"Cabal-3.8.1.0","pkg-name":"Cabal","pkg-version":"3.8.1.0","depends":["Cabal-syntax-3.8.1.0","array-0.5.4.0","base-4.17.0.0","bytestring-0.11.3.1","containers-0.6.6","deepseq-1.4.8.0","directory-1.3.7.1","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","pretty-1.1.3.6","process-1.6.15.0","text-2.0.1","time-1.12.2","transformers-0.5.6.2","unix-2.7.3"]},{"type":"pre-existing","id":"Cabal-syntax-3.8.1.0","pkg-name":"Cabal-syntax","pkg-version":"3.8.1.0","depends":["array-0.5.4.0","base-4.17.0.0","binary-0.8.9.1","bytestring-0.11.3.1","containers-0.6.6","deepseq-1.4.8.0","directory-1.3.7.1","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","pretty-1.1.3.6","text-2.0.1","time-1.12.2","transformers-0.5.6.2","unix-2.7.3"]},{"type":"configured","id":"QuickCheck-2.14.2-3dda78ffb9c0183413979d4bca4a88aa2dfb8fb922ef115a947bd1bf3458add0","pkg-name":"QuickCheck","pkg-version":"2.14.2","flags":{"old-random":false,"templatehaskell":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4ce29211223d5e6620ebceba34a3ca9ccf1c10c0cf387d48aea45599222ee5aa","pkg-src-sha256":"d87b6c85696b601175274361fa62217894401e401e150c3c5d4013ac53cd36f3","depends":["base-4.17.0.0","containers-0.6.6","deepseq-1.4.8.0","random-1.2.1.1-9993604da3abd0daa207bd669568b3090a5800f579313cdde4e4f2dd1205a948","splitmix-0.1.0.4-038952c2592bf9a18f363fc90951b486b79df30ad213b8f2b39e885e464e4944","template-haskell-2.19.0.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"array-0.5.4.0","pkg-name":"array","pkg-version":"0.5.4.0","depends":["base-4.17.0.0"]},{"type":"pre-existing","id":"base-4.17.0.0","pkg-name":"base","pkg-version":"4.17.0.0","depends":["ghc-bignum-1.3","ghc-prim-0.9.0","rts-1.0.2"]},{"type":"configured","id":"base16-bytestring-1.0.2.0-8845b9b845268782664a9731259247bb8eb1e18dc03a39dadfe77b42101a894d","pkg-name":"base16-bytestring","pkg-version":"1.0.2.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"64abad7816ab8cabed8489e29f807b3a6f828e0b2cec0eae404323d69d36df9a","pkg-src-sha256":"1d5a91143ef0e22157536093ec8e59d226a68220ec89378d5dcaeea86472c784","depends":["base-4.17.0.0","bytestring-0.11.3.1"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"binary-0.8.9.1","pkg-name":"binary","pkg-version":"0.8.9.1","depends":["array-0.5.4.0","base-4.17.0.0","bytestring-0.11.3.1","containers-0.6.6"]},{"type":"pre-existing","id":"bytestring-0.11.3.1","pkg-name":"bytestring","pkg-version":"0.11.3.1","depends":["base-4.17.0.0","deepseq-1.4.8.0","ghc-prim-0.9.0","template-haskell-2.19.0.0"]},{"type":"configured","id":"clock-0.8.3-0129568eebbfa961d0c38a3dcb8b8cd195f8a921fe59eb9ceddfc368d87f7b74","pkg-name":"clock","pkg-version":"0.8.3","flags":{"llvm":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c","pkg-src-sha256":"845ce5db4c98cefd517323e005f87effceff886987305e421c4ef616dc0505d1","depends":["base-4.17.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"containers-0.6.6","pkg-name":"containers","pkg-version":"0.6.6","depends":["array-0.5.4.0","base-4.17.0.0","deepseq-1.4.8.0","template-haskell-2.19.0.0"]},{"type":"configured","id":"cryptohash-sha256-0.11.102.1-e0ecce2a2a105f81f515ad74e9fd132a406a856efa250f47178547d401b9ef87","pkg-name":"cryptohash-sha256","pkg-version":"0.11.102.1","flags":{"exe":false,"use-cbits":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"72ce9095872eae653addca5f412ac8070d6282d8e1c8578c2237c33f2cbbf4bc","pkg-src-sha256":"73a7dc7163871a80837495039a099967b11f5c4fe70a118277842f7a713c6bf6","depends":["base-4.17.0.0","bytestring-0.11.3.1"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"deepseq-1.4.8.0","pkg-name":"deepseq","pkg-version":"1.4.8.0","depends":["array-0.5.4.0","base-4.17.0.0","ghc-prim-0.9.0"]},{"type":"pre-existing","id":"directory-1.3.7.1","pkg-name":"directory","pkg-version":"1.3.7.1","depends":["base-4.17.0.0","filepath-1.4.2.2","time-1.12.2","unix-2.7.3"]},{"type":"configured","id":"extra-1.7.12-f9efaf6c8d3c0aff6a2d5790a849d70549163752fac9725bf7139c733763d52d","pkg-name":"extra","pkg-version":"1.7.12","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3ac58d7341976173d1052e7b2837d119212d9afcf911735667c7f1ab67aec25f","pkg-src-sha256":"e571a9ec1d8865f0fbb0e0ba1eb575f783b0365c80db19b54a93600bae43b03c","depends":["base-4.17.0.0","clock-0.8.3-0129568eebbfa961d0c38a3dcb8b8cd195f8a921fe59eb9ceddfc368d87f7b74","directory-1.3.7.1","filepath-1.4.2.2","process-1.6.15.0","time-1.12.2","unix-2.7.3"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"filepath-1.4.2.2","pkg-name":"filepath","pkg-version":"1.4.2.2","depends":["base-4.17.0.0"]},{"type":"configured","id":"filepattern-0.1.3-08a9ec632f1ac6000bb77c2013c1110b63c20c3139ed08f95a22f36da4f3ae2d","pkg-name":"filepattern","pkg-version":"0.1.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"372c1733d83b90045eb29da9f010fed79bfef8771ce65eb126a1d83ecc54a9a2","pkg-src-sha256":"cc445d439ea2f65cac7604d3578aa2c3a62e5a91dc989f4ce5b3390db9e59636","depends":["base-4.17.0.0","directory-1.3.7.1","extra-1.7.12-f9efaf6c8d3c0aff6a2d5790a849d70549163752fac9725bf7139c733763d52d","filepath-1.4.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"ghc-bignum-1.3","pkg-name":"ghc-bignum","pkg-version":"1.3","depends":["ghc-prim-0.9.0"]},{"type":"pre-existing","id":"ghc-boot-th-9.4.2","pkg-name":"ghc-boot-th","pkg-version":"9.4.2","depends":["base-4.17.0.0"]},{"type":"pre-existing","id":"ghc-prim-0.9.0","pkg-name":"ghc-prim","pkg-version":"0.9.0","depends":["rts-1.0.2"]},{"type":"configured","id":"hadrian-0.1.0.0-inplace-hadrian","pkg-name":"hadrian","pkg-version":"0.1.0.0","flags":{"selftest":true,"threaded":true},"style":"local","pkg-src":{"type":"local","path":"/home/matt/ghc-rodrigo/hadrian/."},"dist-dir":"/home/matt/ghc-rodrigo/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.4.2/hadrian-0.1.0.0/x/hadrian","build-info":"/home/matt/ghc-rodrigo/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.4.2/hadrian-0.1.0.0/x/hadrian/build-info.json","depends":["Cabal-3.8.1.0","QuickCheck-2.14.2-3dda78ffb9c0183413979d4bca4a88aa2dfb8fb922ef115a947bd1bf3458add0","base-4.17.0.0","base16-bytestring-1.0.2.0-8845b9b845268782664a9731259247bb8eb1e18dc03a39dadfe77b42101a894d","bytestring-0.11.3.1","containers-0.6.6","cryptohash-sha256-0.11.102.1-e0ecce2a2a105f81f515ad74e9fd132a406a856efa250f47178547d401b9ef87","directory-1.3.7.1","extra-1.7.12-f9efaf6c8d3c0aff6a2d5790a849d70549163752fac9725bf7139c733763d52d","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","shake-0.19.7-e941cd8c6a2384d93b27d15bed9271abdfc1bd3584c51ce36cdfa5ebef75e2d1","text-2.0.1","time-1.12.2","transformers-0.5.6.2","unordered-containers-0.2.19.1-5d479bd67546400df56a0d5936ce154eaf2a515f628e7f7c6a4bdf072f3a7357"],"exe-depends":[],"component-name":"exe:hadrian","bin-file":"/home/matt/ghc-rodrigo/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.4.2/hadrian-0.1.0.0/x/hadrian/build/hadrian/hadrian"},{"type":"configured","id":"hashable-1.4.2.0-8e31e6b21e417f686c72cda778509198a6d21d5a913ab5887f00511181a1b962","pkg-name":"hashable","pkg-version":"1.4.2.0","flags":{"integer-gmp":true,"random-initial-seed":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"585792335d5541dba78fa8dfcb291a89cd5812a281825ff7a44afa296ab5d58a","pkg-src-sha256":"1b4000ea82b81f69d46d0af4152c10c6303873510738e24cfc4767760d30e3f8","depends":["base-4.17.0.0","bytestring-0.11.3.1","containers-0.6.6","deepseq-1.4.8.0","filepath-1.4.2.2","ghc-bignum-1.3","ghc-prim-0.9.0","text-2.0.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"heaps-0.4-3f9ca831e2a710f80e5a253748a1aa605a7219f998fa88ce43b69c22d0075c73","pkg-name":"heaps","pkg-version":"0.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"66b19fcd813b0e4db3e0bac541bd46606c3b13d3d081d9f9666f4be0f5ff14b8","pkg-src-sha256":"89329df8b95ae99ef272e41e7a2d0fe2f1bb7eacfcc34bc01664414b33067cfd","depends":["base-4.17.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-dgtable-0.5.2-f7a634b948774c98a2be281a9a2244964a18c3b15b559a34248b4d851e8efb1b","pkg-name":"js-dgtable","pkg-version":"0.5.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f75cb4fa53c88c65794becdd48eb0d3b2b8abd89a3d5c19e87af91f5225c15e4","pkg-src-sha256":"e28dd65bee8083b17210134e22e01c6349dc33c3b7bd17705973cd014e9f20ac","depends":["base-4.17.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-flot-0.8.3-b34534f666396e8ad058c9e0cb79b8d2cfe4294fc870aa2daf758c66a4533545","pkg-name":"js-flot","pkg-version":"0.8.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4c1c447a9a2fba0adba6d30678302a30c32b9dfde9e7aa9e9156483e1545096d","pkg-src-sha256":"1ba2f2a6b8d85da76c41f526c98903cbb107f8642e506c072c1e7e3c20fe5e7a","depends":["base-4.17.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-jquery-3.3.1-4a51d1b0e66cd03e445290dde0449cd0ba22dd046bccc10876992c1527bc8a6f","pkg-name":"js-jquery","pkg-version":"3.3.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"59ab6c79159549ef94b584abce8e6d3b336014c2cce1337b59a8f637e2856df5","pkg-src-sha256":"e0e0681f0da1130ede4e03a051630ea439c458cb97216cdb01771ebdbe44069b","depends":["base-4.17.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"mtl-2.2.2","pkg-name":"mtl","pkg-version":"2.2.2","depends":["base-4.17.0.0","transformers-0.5.6.2"]},{"type":"pre-existing","id":"parsec-3.1.15.0","pkg-name":"parsec","pkg-version":"3.1.15.0","depends":["base-4.17.0.0","bytestring-0.11.3.1","mtl-2.2.2","text-2.0.1"]},{"type":"pre-existing","id":"pretty-1.1.3.6","pkg-name":"pretty","pkg-version":"1.1.3.6","depends":["base-4.17.0.0","deepseq-1.4.8.0","ghc-prim-0.9.0"]},{"type":"configured","id":"primitive-0.8.0.0-c149e96dd6c8e609c75b5c29aa28e8cd219c971a12e6e067d5b176788da134c7","pkg-name":"primitive","pkg-version":"0.8.0.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"826bf2a702a26ef87532a135808abad69d74f70ead39f26c06d034b1f0537a19","pkg-src-sha256":"5553c21b4a789f9b591eed69e598cc58484c274af29250e517b5a8bcc62b995f","depends":["base-4.17.0.0","deepseq-1.4.8.0","template-haskell-2.19.0.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"process-1.6.15.0","pkg-name":"process","pkg-version":"1.6.15.0","depends":["base-4.17.0.0","deepseq-1.4.8.0","directory-1.3.7.1","filepath-1.4.2.2","unix-2.7.3"]},{"type":"configured","id":"random-1.2.1.1-9993604da3abd0daa207bd669568b3090a5800f579313cdde4e4f2dd1205a948","pkg-name":"random","pkg-version":"1.2.1.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"dea1f11e5569332dc6c8efaad1cb301016a5587b6754943a49f9de08ae0e56d9","pkg-src-sha256":"3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76","depends":["base-4.17.0.0","bytestring-0.11.3.1","deepseq-1.4.8.0","mtl-2.2.2","splitmix-0.1.0.4-038952c2592bf9a18f363fc90951b486b79df30ad213b8f2b39e885e464e4944"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"rts-1.0.2","pkg-name":"rts","pkg-version":"1.0.2","depends":[]},{"type":"configured","id":"shake-0.19.7-e-shake-93a6abbc9595b6d85ad9802cf629596ab2d5d3c72261d6dce269f07068d1b8aa","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.17.0.0","binary-0.8.9.1","bytestring-0.11.3.1","deepseq-1.4.8.0","directory-1.3.7.1","extra-1.7.12-f9efaf6c8d3c0aff6a2d5790a849d70549163752fac9725bf7139c733763d52d","filepath-1.4.2.2","filepattern-0.1.3-08a9ec632f1ac6000bb77c2013c1110b63c20c3139ed08f95a22f36da4f3ae2d","hashable-1.4.2.0-8e31e6b21e417f686c72cda778509198a6d21d5a913ab5887f00511181a1b962","heaps-0.4-3f9ca831e2a710f80e5a253748a1aa605a7219f998fa88ce43b69c22d0075c73","js-dgtable-0.5.2-f7a634b948774c98a2be281a9a2244964a18c3b15b559a34248b4d851e8efb1b","js-flot-0.8.3-b34534f666396e8ad058c9e0cb79b8d2cfe4294fc870aa2daf758c66a4533545","js-jquery-3.3.1-4a51d1b0e66cd03e445290dde0449cd0ba22dd046bccc10876992c1527bc8a6f","primitive-0.8.0.0-c149e96dd6c8e609c75b5c29aa28e8cd219c971a12e6e067d5b176788da134c7","process-1.6.15.0","random-1.2.1.1-9993604da3abd0daa207bd669568b3090a5800f579313cdde4e4f2dd1205a948","time-1.12.2","transformers-0.5.6.2","unix-2.7.3","unordered-containers-0.2.19.1-5d479bd67546400df56a0d5936ce154eaf2a515f628e7f7c6a4bdf072f3a7357","utf8-string-1.0.2-74175dc1969f6d60b6b78e0f9ae512859446f68011f9742d4519de87229b0554"],"exe-depends":[],"component-name":"exe:shake","bin-file":"/home/matt/.cabal/store/ghc-9.4.2/shake-0.19.7-e-shake-93a6abbc9595b6d85ad9802cf629596ab2d5d3c72261d6dce269f07068d1b8aa/bin/shake"},{"type":"configured","id":"shake-0.19.7-e941cd8c6a2384d93b27d15bed9271abdfc1bd3584c51ce36cdfa5ebef75e2d1","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.17.0.0","binary-0.8.9.1","bytestring-0.11.3.1","deepseq-1.4.8.0","directory-1.3.7.1","extra-1.7.12-f9efaf6c8d3c0aff6a2d5790a849d70549163752fac9725bf7139c733763d52d","filepath-1.4.2.2","filepattern-0.1.3-08a9ec632f1ac6000bb77c2013c1110b63c20c3139ed08f95a22f36da4f3ae2d","hashable-1.4.2.0-8e31e6b21e417f686c72cda778509198a6d21d5a913ab5887f00511181a1b962","heaps-0.4-3f9ca831e2a710f80e5a253748a1aa605a7219f998fa88ce43b69c22d0075c73","js-dgtable-0.5.2-f7a634b948774c98a2be281a9a2244964a18c3b15b559a34248b4d851e8efb1b","js-flot-0.8.3-b34534f666396e8ad058c9e0cb79b8d2cfe4294fc870aa2daf758c66a4533545","js-jquery-3.3.1-4a51d1b0e66cd03e445290dde0449cd0ba22dd046bccc10876992c1527bc8a6f","primitive-0.8.0.0-c149e96dd6c8e609c75b5c29aa28e8cd219c971a12e6e067d5b176788da134c7","process-1.6.15.0","random-1.2.1.1-9993604da3abd0daa207bd669568b3090a5800f579313cdde4e4f2dd1205a948","time-1.12.2","transformers-0.5.6.2","unix-2.7.3","unordered-containers-0.2.19.1-5d479bd67546400df56a0d5936ce154eaf2a515f628e7f7c6a4bdf072f3a7357","utf8-string-1.0.2-74175dc1969f6d60b6b78e0f9ae512859446f68011f9742d4519de87229b0554"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"splitmix-0.1.0.4-038952c2592bf9a18f363fc90951b486b79df30ad213b8f2b39e885e464e4944","pkg-name":"splitmix","pkg-version":"0.1.0.4","flags":{"optimised-mixer":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"db25c2e17967aa6b6046ab8b1b96ba3f344ca59a62b60fb6113d51ea305a3d8e","pkg-src-sha256":"6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa","depends":["base-4.17.0.0","deepseq-1.4.8.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"template-haskell-2.19.0.0","pkg-name":"template-haskell","pkg-version":"2.19.0.0","depends":["base-4.17.0.0","ghc-boot-th-9.4.2","ghc-prim-0.9.0","pretty-1.1.3.6"]},{"type":"pre-existing","id":"text-2.0.1","pkg-name":"text","pkg-version":"2.0.1","depends":["array-0.5.4.0","base-4.17.0.0","binary-0.8.9.1","bytestring-0.11.3.1","deepseq-1.4.8.0","ghc-prim-0.9.0","template-haskell-2.19.0.0"]},{"type":"pre-existing","id":"time-1.12.2","pkg-name":"time","pkg-version":"1.12.2","depends":["base-4.17.0.0","deepseq-1.4.8.0"]},{"type":"pre-existing","id":"transformers-0.5.6.2","pkg-name":"transformers","pkg-version":"0.5.6.2","depends":["base-4.17.0.0"]},{"type":"pre-existing","id":"unix-2.7.3","pkg-name":"unix","pkg-version":"2.7.3","depends":["base-4.17.0.0","bytestring-0.11.3.1","time-1.12.2"]},{"type":"configured","id":"unordered-containers-0.2.19.1-5d479bd67546400df56a0d5936ce154eaf2a515f628e7f7c6a4bdf072f3a7357","pkg-name":"unordered-containers","pkg-version":"0.2.19.1","flags":{"debug":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"9ad8972c2e913c37b1d4f0e1261517fd7a1b8c8a58077e057be69837e3dbaa00","pkg-src-sha256":"1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2","depends":["base-4.17.0.0","deepseq-1.4.8.0","hashable-1.4.2.0-8e31e6b21e417f686c72cda778509198a6d21d5a913ab5887f00511181a1b962","template-haskell-2.19.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"utf8-string-1.0.2-74175dc1969f6d60b6b78e0f9ae512859446f68011f9742d4519de87229b0554","pkg-name":"utf8-string","pkg-version":"1.0.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"79416292186feeaf1f60e49ac5a1ffae9bf1b120e040a74bf0e81ca7f1d31d3f","pkg-src-sha256":"ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a","depends":["base-4.17.0.0","bytestring-0.11.3.1"],"exe-depends":[],"component-name":"lib"}]} \ No newline at end of file
diff --git a/hadrian/bootstrap/plan-9_4_3.json b/hadrian/bootstrap/plan-9_4_3.json
index 0db57e8dc9..23c7724ae3 100644
--- a/hadrian/bootstrap/plan-9_4_3.json
+++ b/hadrian/bootstrap/plan-9_4_3.json
@@ -1 +1 @@
-{"cabal-version":"3.8.1.0","cabal-lib-version":"3.8.1.0","compiler-id":"ghc-9.4.3","os":"linux","arch":"x86_64","install-plan":[{"type":"pre-existing","id":"Cabal-3.8.1.0","pkg-name":"Cabal","pkg-version":"3.8.1.0","depends":["Cabal-syntax-3.8.1.0","array-0.5.4.0","base-4.17.0.0","bytestring-0.11.3.1","containers-0.6.6","deepseq-1.4.8.0","directory-1.3.7.1","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","pretty-1.1.3.6","process-1.6.16.0","text-2.0.1","time-1.12.2","transformers-0.5.6.2","unix-2.7.3"]},{"type":"pre-existing","id":"Cabal-syntax-3.8.1.0","pkg-name":"Cabal-syntax","pkg-version":"3.8.1.0","depends":["array-0.5.4.0","base-4.17.0.0","binary-0.8.9.1","bytestring-0.11.3.1","containers-0.6.6","deepseq-1.4.8.0","directory-1.3.7.1","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","pretty-1.1.3.6","text-2.0.1","time-1.12.2","transformers-0.5.6.2","unix-2.7.3"]},{"type":"configured","id":"QuickCheck-2.14.2-bd36ed45f2f36a278bda4324fa38bb3bd6d2e4bde8819b78a239a5417138b368","pkg-name":"QuickCheck","pkg-version":"2.14.2","flags":{"old-random":false,"templatehaskell":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4ce29211223d5e6620ebceba34a3ca9ccf1c10c0cf387d48aea45599222ee5aa","pkg-src-sha256":"d87b6c85696b601175274361fa62217894401e401e150c3c5d4013ac53cd36f3","depends":["base-4.17.0.0","containers-0.6.6","deepseq-1.4.8.0","random-1.2.1.1-d9d024ad839cf59e080833d3160f414c51e3c921a07e4605644d3a24096423af","splitmix-0.1.0.4-710f6aef842a6d0debca56a044407f2910ce264a4b0602d9d4de9ddecf46e668","template-haskell-2.19.0.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"array-0.5.4.0","pkg-name":"array","pkg-version":"0.5.4.0","depends":["base-4.17.0.0"]},{"type":"pre-existing","id":"base-4.17.0.0","pkg-name":"base","pkg-version":"4.17.0.0","depends":["ghc-bignum-1.3","ghc-prim-0.9.0","rts-1.0.2"]},{"type":"pre-existing","id":"binary-0.8.9.1","pkg-name":"binary","pkg-version":"0.8.9.1","depends":["array-0.5.4.0","base-4.17.0.0","bytestring-0.11.3.1","containers-0.6.6"]},{"type":"pre-existing","id":"bytestring-0.11.3.1","pkg-name":"bytestring","pkg-version":"0.11.3.1","depends":["base-4.17.0.0","deepseq-1.4.8.0","ghc-prim-0.9.0","template-haskell-2.19.0.0"]},{"type":"configured","id":"clock-0.8.3-27cb5e33ec1e869f298606d596f82ca84fe82486f8033c732d01ac07350ac528","pkg-name":"clock","pkg-version":"0.8.3","flags":{"llvm":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c","pkg-src-sha256":"845ce5db4c98cefd517323e005f87effceff886987305e421c4ef616dc0505d1","depends":["base-4.17.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"containers-0.6.6","pkg-name":"containers","pkg-version":"0.6.6","depends":["array-0.5.4.0","base-4.17.0.0","deepseq-1.4.8.0","template-haskell-2.19.0.0"]},{"type":"pre-existing","id":"deepseq-1.4.8.0","pkg-name":"deepseq","pkg-version":"1.4.8.0","depends":["array-0.5.4.0","base-4.17.0.0","ghc-prim-0.9.0"]},{"type":"pre-existing","id":"directory-1.3.7.1","pkg-name":"directory","pkg-version":"1.3.7.1","depends":["base-4.17.0.0","filepath-1.4.2.2","time-1.12.2","unix-2.7.3"]},{"type":"configured","id":"extra-1.7.12-2f461c53f9b08e5408efea172f9149bfec383edafad68aa7599176c16a13dede","pkg-name":"extra","pkg-version":"1.7.12","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3ac58d7341976173d1052e7b2837d119212d9afcf911735667c7f1ab67aec25f","pkg-src-sha256":"e571a9ec1d8865f0fbb0e0ba1eb575f783b0365c80db19b54a93600bae43b03c","depends":["base-4.17.0.0","clock-0.8.3-27cb5e33ec1e869f298606d596f82ca84fe82486f8033c732d01ac07350ac528","directory-1.3.7.1","filepath-1.4.2.2","process-1.6.16.0","time-1.12.2","unix-2.7.3"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"filepath-1.4.2.2","pkg-name":"filepath","pkg-version":"1.4.2.2","depends":["base-4.17.0.0"]},{"type":"configured","id":"filepattern-0.1.3-23d7f8ede2c552ae35fa6871e68c09d5495fe0ac277049b6b325cc6f11259b80","pkg-name":"filepattern","pkg-version":"0.1.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"372c1733d83b90045eb29da9f010fed79bfef8771ce65eb126a1d83ecc54a9a2","pkg-src-sha256":"cc445d439ea2f65cac7604d3578aa2c3a62e5a91dc989f4ce5b3390db9e59636","depends":["base-4.17.0.0","directory-1.3.7.1","extra-1.7.12-2f461c53f9b08e5408efea172f9149bfec383edafad68aa7599176c16a13dede","filepath-1.4.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"ghc-bignum-1.3","pkg-name":"ghc-bignum","pkg-version":"1.3","depends":["ghc-prim-0.9.0"]},{"type":"pre-existing","id":"ghc-boot-th-9.4.3","pkg-name":"ghc-boot-th","pkg-version":"9.4.3","depends":["base-4.17.0.0"]},{"type":"pre-existing","id":"ghc-prim-0.9.0","pkg-name":"ghc-prim","pkg-version":"0.9.0","depends":["rts-1.0.2"]},{"type":"configured","id":"hadrian-0.1.0.0-inplace-hadrian","pkg-name":"hadrian","pkg-version":"0.1.0.0","flags":{"selftest":true,"threaded":true},"style":"local","pkg-src":{"type":"local","path":"/home/matt/ghc-scratch/hadrian/."},"dist-dir":"/home/matt/ghc-scratch/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.4.3/hadrian-0.1.0.0/x/hadrian","build-info":"/home/matt/ghc-scratch/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.4.3/hadrian-0.1.0.0/x/hadrian/build-info.json","depends":["Cabal-3.8.1.0","QuickCheck-2.14.2-bd36ed45f2f36a278bda4324fa38bb3bd6d2e4bde8819b78a239a5417138b368","base-4.17.0.0","bytestring-0.11.3.1","containers-0.6.6","directory-1.3.7.1","extra-1.7.12-2f461c53f9b08e5408efea172f9149bfec383edafad68aa7599176c16a13dede","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","shake-0.19.7-210fc1cbce69aed26102707e3a1f9a8d35afdb700b5ceb2aa5cba89db1cc9fcb","text-2.0.1","time-1.12.2","transformers-0.5.6.2","unordered-containers-0.2.19.1-4baf378c8835b0cfb97fec3caca371cf946bd377598acf69fe0ab8ec8ac9b457"],"exe-depends":[],"component-name":"exe:hadrian","bin-file":"/home/matt/ghc-scratch/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.4.3/hadrian-0.1.0.0/x/hadrian/build/hadrian/hadrian"},{"type":"configured","id":"hashable-1.4.2.0-3cc3eba008bad2dfed3e74ddd12307b1c49fc43da236521d46b3d1b9df8cfd73","pkg-name":"hashable","pkg-version":"1.4.2.0","flags":{"integer-gmp":true,"random-initial-seed":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"585792335d5541dba78fa8dfcb291a89cd5812a281825ff7a44afa296ab5d58a","pkg-src-sha256":"1b4000ea82b81f69d46d0af4152c10c6303873510738e24cfc4767760d30e3f8","depends":["base-4.17.0.0","bytestring-0.11.3.1","containers-0.6.6","deepseq-1.4.8.0","filepath-1.4.2.2","ghc-bignum-1.3","ghc-prim-0.9.0","text-2.0.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"heaps-0.4-144db1859f80e348dd364b0344727f2186256658a0f2bd2a1aad9c4c1db630a6","pkg-name":"heaps","pkg-version":"0.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"66b19fcd813b0e4db3e0bac541bd46606c3b13d3d081d9f9666f4be0f5ff14b8","pkg-src-sha256":"89329df8b95ae99ef272e41e7a2d0fe2f1bb7eacfcc34bc01664414b33067cfd","depends":["base-4.17.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-dgtable-0.5.2-ce51504654bf180c4ea9d29cda6d8256812da1ea6d2e631267db1cb30cae915d","pkg-name":"js-dgtable","pkg-version":"0.5.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f75cb4fa53c88c65794becdd48eb0d3b2b8abd89a3d5c19e87af91f5225c15e4","pkg-src-sha256":"e28dd65bee8083b17210134e22e01c6349dc33c3b7bd17705973cd014e9f20ac","depends":["base-4.17.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-flot-0.8.3-006c070aea66f942992ff19703d82059efcfd6ae82854bcfeb4083431bc579aa","pkg-name":"js-flot","pkg-version":"0.8.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4c1c447a9a2fba0adba6d30678302a30c32b9dfde9e7aa9e9156483e1545096d","pkg-src-sha256":"1ba2f2a6b8d85da76c41f526c98903cbb107f8642e506c072c1e7e3c20fe5e7a","depends":["base-4.17.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-jquery-3.3.1-257058014593a08cf3c7160e6a2fbf8b955f738e214c1dbc3ce0042b6a57ae6f","pkg-name":"js-jquery","pkg-version":"3.3.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"59ab6c79159549ef94b584abce8e6d3b336014c2cce1337b59a8f637e2856df5","pkg-src-sha256":"e0e0681f0da1130ede4e03a051630ea439c458cb97216cdb01771ebdbe44069b","depends":["base-4.17.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"mtl-2.2.2","pkg-name":"mtl","pkg-version":"2.2.2","depends":["base-4.17.0.0","transformers-0.5.6.2"]},{"type":"pre-existing","id":"parsec-3.1.15.0","pkg-name":"parsec","pkg-version":"3.1.15.0","depends":["base-4.17.0.0","bytestring-0.11.3.1","mtl-2.2.2","text-2.0.1"]},{"type":"pre-existing","id":"pretty-1.1.3.6","pkg-name":"pretty","pkg-version":"1.1.3.6","depends":["base-4.17.0.0","deepseq-1.4.8.0","ghc-prim-0.9.0"]},{"type":"configured","id":"primitive-0.8.0.0-becede3b475b090bfee201276f175b6bdf41386aaea8c881d4d96b97d3787531","pkg-name":"primitive","pkg-version":"0.8.0.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"826bf2a702a26ef87532a135808abad69d74f70ead39f26c06d034b1f0537a19","pkg-src-sha256":"5553c21b4a789f9b591eed69e598cc58484c274af29250e517b5a8bcc62b995f","depends":["base-4.17.0.0","deepseq-1.4.8.0","template-haskell-2.19.0.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"process-1.6.16.0","pkg-name":"process","pkg-version":"1.6.16.0","depends":["base-4.17.0.0","deepseq-1.4.8.0","directory-1.3.7.1","filepath-1.4.2.2","unix-2.7.3"]},{"type":"configured","id":"random-1.2.1.1-d9d024ad839cf59e080833d3160f414c51e3c921a07e4605644d3a24096423af","pkg-name":"random","pkg-version":"1.2.1.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"dea1f11e5569332dc6c8efaad1cb301016a5587b6754943a49f9de08ae0e56d9","pkg-src-sha256":"3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76","depends":["base-4.17.0.0","bytestring-0.11.3.1","deepseq-1.4.8.0","mtl-2.2.2","splitmix-0.1.0.4-710f6aef842a6d0debca56a044407f2910ce264a4b0602d9d4de9ddecf46e668"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"rts-1.0.2","pkg-name":"rts","pkg-version":"1.0.2","depends":[]},{"type":"configured","id":"shake-0.19.7-210fc1cbce69aed26102707e3a1f9a8d35afdb700b5ceb2aa5cba89db1cc9fcb","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.17.0.0","binary-0.8.9.1","bytestring-0.11.3.1","deepseq-1.4.8.0","directory-1.3.7.1","extra-1.7.12-2f461c53f9b08e5408efea172f9149bfec383edafad68aa7599176c16a13dede","filepath-1.4.2.2","filepattern-0.1.3-23d7f8ede2c552ae35fa6871e68c09d5495fe0ac277049b6b325cc6f11259b80","hashable-1.4.2.0-3cc3eba008bad2dfed3e74ddd12307b1c49fc43da236521d46b3d1b9df8cfd73","heaps-0.4-144db1859f80e348dd364b0344727f2186256658a0f2bd2a1aad9c4c1db630a6","js-dgtable-0.5.2-ce51504654bf180c4ea9d29cda6d8256812da1ea6d2e631267db1cb30cae915d","js-flot-0.8.3-006c070aea66f942992ff19703d82059efcfd6ae82854bcfeb4083431bc579aa","js-jquery-3.3.1-257058014593a08cf3c7160e6a2fbf8b955f738e214c1dbc3ce0042b6a57ae6f","primitive-0.8.0.0-becede3b475b090bfee201276f175b6bdf41386aaea8c881d4d96b97d3787531","process-1.6.16.0","random-1.2.1.1-d9d024ad839cf59e080833d3160f414c51e3c921a07e4605644d3a24096423af","time-1.12.2","transformers-0.5.6.2","unix-2.7.3","unordered-containers-0.2.19.1-4baf378c8835b0cfb97fec3caca371cf946bd377598acf69fe0ab8ec8ac9b457","utf8-string-1.0.2-b80856b75fa2fd6a3479749a275df202f796046854b0d6f9da80ab1b4390f939"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"shake-0.19.7-e-shake-67e15cde7c1cb49bcea296a54aa439315e66dfa316723d77c5efedbe480561be","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.17.0.0","binary-0.8.9.1","bytestring-0.11.3.1","deepseq-1.4.8.0","directory-1.3.7.1","extra-1.7.12-2f461c53f9b08e5408efea172f9149bfec383edafad68aa7599176c16a13dede","filepath-1.4.2.2","filepattern-0.1.3-23d7f8ede2c552ae35fa6871e68c09d5495fe0ac277049b6b325cc6f11259b80","hashable-1.4.2.0-3cc3eba008bad2dfed3e74ddd12307b1c49fc43da236521d46b3d1b9df8cfd73","heaps-0.4-144db1859f80e348dd364b0344727f2186256658a0f2bd2a1aad9c4c1db630a6","js-dgtable-0.5.2-ce51504654bf180c4ea9d29cda6d8256812da1ea6d2e631267db1cb30cae915d","js-flot-0.8.3-006c070aea66f942992ff19703d82059efcfd6ae82854bcfeb4083431bc579aa","js-jquery-3.3.1-257058014593a08cf3c7160e6a2fbf8b955f738e214c1dbc3ce0042b6a57ae6f","primitive-0.8.0.0-becede3b475b090bfee201276f175b6bdf41386aaea8c881d4d96b97d3787531","process-1.6.16.0","random-1.2.1.1-d9d024ad839cf59e080833d3160f414c51e3c921a07e4605644d3a24096423af","time-1.12.2","transformers-0.5.6.2","unix-2.7.3","unordered-containers-0.2.19.1-4baf378c8835b0cfb97fec3caca371cf946bd377598acf69fe0ab8ec8ac9b457","utf8-string-1.0.2-b80856b75fa2fd6a3479749a275df202f796046854b0d6f9da80ab1b4390f939"],"exe-depends":[],"component-name":"exe:shake","bin-file":"/home/matt/.cabal/store/ghc-9.4.3/shake-0.19.7-e-shake-67e15cde7c1cb49bcea296a54aa439315e66dfa316723d77c5efedbe480561be/bin/shake"},{"type":"configured","id":"splitmix-0.1.0.4-710f6aef842a6d0debca56a044407f2910ce264a4b0602d9d4de9ddecf46e668","pkg-name":"splitmix","pkg-version":"0.1.0.4","flags":{"optimised-mixer":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"db25c2e17967aa6b6046ab8b1b96ba3f344ca59a62b60fb6113d51ea305a3d8e","pkg-src-sha256":"6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa","depends":["base-4.17.0.0","deepseq-1.4.8.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"template-haskell-2.19.0.0","pkg-name":"template-haskell","pkg-version":"2.19.0.0","depends":["base-4.17.0.0","ghc-boot-th-9.4.3","ghc-prim-0.9.0","pretty-1.1.3.6"]},{"type":"pre-existing","id":"text-2.0.1","pkg-name":"text","pkg-version":"2.0.1","depends":["array-0.5.4.0","base-4.17.0.0","binary-0.8.9.1","bytestring-0.11.3.1","deepseq-1.4.8.0","ghc-prim-0.9.0","template-haskell-2.19.0.0"]},{"type":"pre-existing","id":"time-1.12.2","pkg-name":"time","pkg-version":"1.12.2","depends":["base-4.17.0.0","deepseq-1.4.8.0"]},{"type":"pre-existing","id":"transformers-0.5.6.2","pkg-name":"transformers","pkg-version":"0.5.6.2","depends":["base-4.17.0.0"]},{"type":"pre-existing","id":"unix-2.7.3","pkg-name":"unix","pkg-version":"2.7.3","depends":["base-4.17.0.0","bytestring-0.11.3.1","time-1.12.2"]},{"type":"configured","id":"unordered-containers-0.2.19.1-4baf378c8835b0cfb97fec3caca371cf946bd377598acf69fe0ab8ec8ac9b457","pkg-name":"unordered-containers","pkg-version":"0.2.19.1","flags":{"debug":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"9ad8972c2e913c37b1d4f0e1261517fd7a1b8c8a58077e057be69837e3dbaa00","pkg-src-sha256":"1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2","depends":["base-4.17.0.0","deepseq-1.4.8.0","hashable-1.4.2.0-3cc3eba008bad2dfed3e74ddd12307b1c49fc43da236521d46b3d1b9df8cfd73","template-haskell-2.19.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"utf8-string-1.0.2-b80856b75fa2fd6a3479749a275df202f796046854b0d6f9da80ab1b4390f939","pkg-name":"utf8-string","pkg-version":"1.0.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"79416292186feeaf1f60e49ac5a1ffae9bf1b120e040a74bf0e81ca7f1d31d3f","pkg-src-sha256":"ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a","depends":["base-4.17.0.0","bytestring-0.11.3.1"],"exe-depends":[],"component-name":"lib"}]} \ No newline at end of file
+{"cabal-version":"3.8.1.0","cabal-lib-version":"3.8.1.0","compiler-id":"ghc-9.4.3","os":"linux","arch":"x86_64","install-plan":[{"type":"pre-existing","id":"Cabal-3.8.1.0","pkg-name":"Cabal","pkg-version":"3.8.1.0","depends":["Cabal-syntax-3.8.1.0","array-0.5.4.0","base-4.17.0.0","bytestring-0.11.3.1","containers-0.6.6","deepseq-1.4.8.0","directory-1.3.7.1","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","pretty-1.1.3.6","process-1.6.16.0","text-2.0.1","time-1.12.2","transformers-0.5.6.2","unix-2.7.3"]},{"type":"pre-existing","id":"Cabal-syntax-3.8.1.0","pkg-name":"Cabal-syntax","pkg-version":"3.8.1.0","depends":["array-0.5.4.0","base-4.17.0.0","binary-0.8.9.1","bytestring-0.11.3.1","containers-0.6.6","deepseq-1.4.8.0","directory-1.3.7.1","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","pretty-1.1.3.6","text-2.0.1","time-1.12.2","transformers-0.5.6.2","unix-2.7.3"]},{"type":"configured","id":"QuickCheck-2.14.2-bd36ed45f2f36a278bda4324fa38bb3bd6d2e4bde8819b78a239a5417138b368","pkg-name":"QuickCheck","pkg-version":"2.14.2","flags":{"old-random":false,"templatehaskell":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4ce29211223d5e6620ebceba34a3ca9ccf1c10c0cf387d48aea45599222ee5aa","pkg-src-sha256":"d87b6c85696b601175274361fa62217894401e401e150c3c5d4013ac53cd36f3","depends":["base-4.17.0.0","containers-0.6.6","deepseq-1.4.8.0","random-1.2.1.1-d9d024ad839cf59e080833d3160f414c51e3c921a07e4605644d3a24096423af","splitmix-0.1.0.4-710f6aef842a6d0debca56a044407f2910ce264a4b0602d9d4de9ddecf46e668","template-haskell-2.19.0.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"array-0.5.4.0","pkg-name":"array","pkg-version":"0.5.4.0","depends":["base-4.17.0.0"]},{"type":"pre-existing","id":"base-4.17.0.0","pkg-name":"base","pkg-version":"4.17.0.0","depends":["ghc-bignum-1.3","ghc-prim-0.9.0","rts-1.0.2"]},{"type":"configured","id":"base16-bytestring-1.0.2.0-022be67a0e4d2e8bed3248f110a529e722a677692e78084e184611e934a069d4","pkg-name":"base16-bytestring","pkg-version":"1.0.2.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"64abad7816ab8cabed8489e29f807b3a6f828e0b2cec0eae404323d69d36df9a","pkg-src-sha256":"1d5a91143ef0e22157536093ec8e59d226a68220ec89378d5dcaeea86472c784","depends":["base-4.17.0.0","bytestring-0.11.3.1"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"binary-0.8.9.1","pkg-name":"binary","pkg-version":"0.8.9.1","depends":["array-0.5.4.0","base-4.17.0.0","bytestring-0.11.3.1","containers-0.6.6"]},{"type":"pre-existing","id":"bytestring-0.11.3.1","pkg-name":"bytestring","pkg-version":"0.11.3.1","depends":["base-4.17.0.0","deepseq-1.4.8.0","ghc-prim-0.9.0","template-haskell-2.19.0.0"]},{"type":"configured","id":"clock-0.8.3-27cb5e33ec1e869f298606d596f82ca84fe82486f8033c732d01ac07350ac528","pkg-name":"clock","pkg-version":"0.8.3","flags":{"llvm":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c","pkg-src-sha256":"845ce5db4c98cefd517323e005f87effceff886987305e421c4ef616dc0505d1","depends":["base-4.17.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"containers-0.6.6","pkg-name":"containers","pkg-version":"0.6.6","depends":["array-0.5.4.0","base-4.17.0.0","deepseq-1.4.8.0","template-haskell-2.19.0.0"]},{"type":"configured","id":"cryptohash-sha256-0.11.102.1-e68c05e71af300ee0140f7ecda5ed0439a27ba54936b05cd7b35b19a275e2b94","pkg-name":"cryptohash-sha256","pkg-version":"0.11.102.1","flags":{"exe":false,"use-cbits":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"72ce9095872eae653addca5f412ac8070d6282d8e1c8578c2237c33f2cbbf4bc","pkg-src-sha256":"73a7dc7163871a80837495039a099967b11f5c4fe70a118277842f7a713c6bf6","depends":["base-4.17.0.0","bytestring-0.11.3.1"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"deepseq-1.4.8.0","pkg-name":"deepseq","pkg-version":"1.4.8.0","depends":["array-0.5.4.0","base-4.17.0.0","ghc-prim-0.9.0"]},{"type":"pre-existing","id":"directory-1.3.7.1","pkg-name":"directory","pkg-version":"1.3.7.1","depends":["base-4.17.0.0","filepath-1.4.2.2","time-1.12.2","unix-2.7.3"]},{"type":"configured","id":"extra-1.7.12-2f461c53f9b08e5408efea172f9149bfec383edafad68aa7599176c16a13dede","pkg-name":"extra","pkg-version":"1.7.12","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3ac58d7341976173d1052e7b2837d119212d9afcf911735667c7f1ab67aec25f","pkg-src-sha256":"e571a9ec1d8865f0fbb0e0ba1eb575f783b0365c80db19b54a93600bae43b03c","depends":["base-4.17.0.0","clock-0.8.3-27cb5e33ec1e869f298606d596f82ca84fe82486f8033c732d01ac07350ac528","directory-1.3.7.1","filepath-1.4.2.2","process-1.6.16.0","time-1.12.2","unix-2.7.3"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"filepath-1.4.2.2","pkg-name":"filepath","pkg-version":"1.4.2.2","depends":["base-4.17.0.0"]},{"type":"configured","id":"filepattern-0.1.3-23d7f8ede2c552ae35fa6871e68c09d5495fe0ac277049b6b325cc6f11259b80","pkg-name":"filepattern","pkg-version":"0.1.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"372c1733d83b90045eb29da9f010fed79bfef8771ce65eb126a1d83ecc54a9a2","pkg-src-sha256":"cc445d439ea2f65cac7604d3578aa2c3a62e5a91dc989f4ce5b3390db9e59636","depends":["base-4.17.0.0","directory-1.3.7.1","extra-1.7.12-2f461c53f9b08e5408efea172f9149bfec383edafad68aa7599176c16a13dede","filepath-1.4.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"ghc-bignum-1.3","pkg-name":"ghc-bignum","pkg-version":"1.3","depends":["ghc-prim-0.9.0"]},{"type":"pre-existing","id":"ghc-boot-th-9.4.3","pkg-name":"ghc-boot-th","pkg-version":"9.4.3","depends":["base-4.17.0.0"]},{"type":"pre-existing","id":"ghc-prim-0.9.0","pkg-name":"ghc-prim","pkg-version":"0.9.0","depends":["rts-1.0.2"]},{"type":"configured","id":"hadrian-0.1.0.0-inplace-hadrian","pkg-name":"hadrian","pkg-version":"0.1.0.0","flags":{"selftest":true,"threaded":true},"style":"local","pkg-src":{"type":"local","path":"/home/matt/ghc-rodrigo/hadrian/."},"dist-dir":"/home/matt/ghc-rodrigo/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.4.3/hadrian-0.1.0.0/x/hadrian","build-info":"/home/matt/ghc-rodrigo/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.4.3/hadrian-0.1.0.0/x/hadrian/build-info.json","depends":["Cabal-3.8.1.0","QuickCheck-2.14.2-bd36ed45f2f36a278bda4324fa38bb3bd6d2e4bde8819b78a239a5417138b368","base-4.17.0.0","base16-bytestring-1.0.2.0-022be67a0e4d2e8bed3248f110a529e722a677692e78084e184611e934a069d4","bytestring-0.11.3.1","containers-0.6.6","cryptohash-sha256-0.11.102.1-e68c05e71af300ee0140f7ecda5ed0439a27ba54936b05cd7b35b19a275e2b94","directory-1.3.7.1","extra-1.7.12-2f461c53f9b08e5408efea172f9149bfec383edafad68aa7599176c16a13dede","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","shake-0.19.7-210fc1cbce69aed26102707e3a1f9a8d35afdb700b5ceb2aa5cba89db1cc9fcb","text-2.0.1","time-1.12.2","transformers-0.5.6.2","unordered-containers-0.2.19.1-4baf378c8835b0cfb97fec3caca371cf946bd377598acf69fe0ab8ec8ac9b457"],"exe-depends":[],"component-name":"exe:hadrian","bin-file":"/home/matt/ghc-rodrigo/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.4.3/hadrian-0.1.0.0/x/hadrian/build/hadrian/hadrian"},{"type":"configured","id":"hashable-1.4.2.0-3cc3eba008bad2dfed3e74ddd12307b1c49fc43da236521d46b3d1b9df8cfd73","pkg-name":"hashable","pkg-version":"1.4.2.0","flags":{"integer-gmp":true,"random-initial-seed":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"585792335d5541dba78fa8dfcb291a89cd5812a281825ff7a44afa296ab5d58a","pkg-src-sha256":"1b4000ea82b81f69d46d0af4152c10c6303873510738e24cfc4767760d30e3f8","depends":["base-4.17.0.0","bytestring-0.11.3.1","containers-0.6.6","deepseq-1.4.8.0","filepath-1.4.2.2","ghc-bignum-1.3","ghc-prim-0.9.0","text-2.0.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"heaps-0.4-144db1859f80e348dd364b0344727f2186256658a0f2bd2a1aad9c4c1db630a6","pkg-name":"heaps","pkg-version":"0.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"66b19fcd813b0e4db3e0bac541bd46606c3b13d3d081d9f9666f4be0f5ff14b8","pkg-src-sha256":"89329df8b95ae99ef272e41e7a2d0fe2f1bb7eacfcc34bc01664414b33067cfd","depends":["base-4.17.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-dgtable-0.5.2-ce51504654bf180c4ea9d29cda6d8256812da1ea6d2e631267db1cb30cae915d","pkg-name":"js-dgtable","pkg-version":"0.5.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f75cb4fa53c88c65794becdd48eb0d3b2b8abd89a3d5c19e87af91f5225c15e4","pkg-src-sha256":"e28dd65bee8083b17210134e22e01c6349dc33c3b7bd17705973cd014e9f20ac","depends":["base-4.17.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-flot-0.8.3-006c070aea66f942992ff19703d82059efcfd6ae82854bcfeb4083431bc579aa","pkg-name":"js-flot","pkg-version":"0.8.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4c1c447a9a2fba0adba6d30678302a30c32b9dfde9e7aa9e9156483e1545096d","pkg-src-sha256":"1ba2f2a6b8d85da76c41f526c98903cbb107f8642e506c072c1e7e3c20fe5e7a","depends":["base-4.17.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-jquery-3.3.1-257058014593a08cf3c7160e6a2fbf8b955f738e214c1dbc3ce0042b6a57ae6f","pkg-name":"js-jquery","pkg-version":"3.3.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"59ab6c79159549ef94b584abce8e6d3b336014c2cce1337b59a8f637e2856df5","pkg-src-sha256":"e0e0681f0da1130ede4e03a051630ea439c458cb97216cdb01771ebdbe44069b","depends":["base-4.17.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"mtl-2.2.2","pkg-name":"mtl","pkg-version":"2.2.2","depends":["base-4.17.0.0","transformers-0.5.6.2"]},{"type":"pre-existing","id":"parsec-3.1.15.0","pkg-name":"parsec","pkg-version":"3.1.15.0","depends":["base-4.17.0.0","bytestring-0.11.3.1","mtl-2.2.2","text-2.0.1"]},{"type":"pre-existing","id":"pretty-1.1.3.6","pkg-name":"pretty","pkg-version":"1.1.3.6","depends":["base-4.17.0.0","deepseq-1.4.8.0","ghc-prim-0.9.0"]},{"type":"configured","id":"primitive-0.8.0.0-becede3b475b090bfee201276f175b6bdf41386aaea8c881d4d96b97d3787531","pkg-name":"primitive","pkg-version":"0.8.0.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"826bf2a702a26ef87532a135808abad69d74f70ead39f26c06d034b1f0537a19","pkg-src-sha256":"5553c21b4a789f9b591eed69e598cc58484c274af29250e517b5a8bcc62b995f","depends":["base-4.17.0.0","deepseq-1.4.8.0","template-haskell-2.19.0.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"process-1.6.16.0","pkg-name":"process","pkg-version":"1.6.16.0","depends":["base-4.17.0.0","deepseq-1.4.8.0","directory-1.3.7.1","filepath-1.4.2.2","unix-2.7.3"]},{"type":"configured","id":"random-1.2.1.1-d9d024ad839cf59e080833d3160f414c51e3c921a07e4605644d3a24096423af","pkg-name":"random","pkg-version":"1.2.1.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"dea1f11e5569332dc6c8efaad1cb301016a5587b6754943a49f9de08ae0e56d9","pkg-src-sha256":"3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76","depends":["base-4.17.0.0","bytestring-0.11.3.1","deepseq-1.4.8.0","mtl-2.2.2","splitmix-0.1.0.4-710f6aef842a6d0debca56a044407f2910ce264a4b0602d9d4de9ddecf46e668"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"rts-1.0.2","pkg-name":"rts","pkg-version":"1.0.2","depends":[]},{"type":"configured","id":"shake-0.19.7-210fc1cbce69aed26102707e3a1f9a8d35afdb700b5ceb2aa5cba89db1cc9fcb","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.17.0.0","binary-0.8.9.1","bytestring-0.11.3.1","deepseq-1.4.8.0","directory-1.3.7.1","extra-1.7.12-2f461c53f9b08e5408efea172f9149bfec383edafad68aa7599176c16a13dede","filepath-1.4.2.2","filepattern-0.1.3-23d7f8ede2c552ae35fa6871e68c09d5495fe0ac277049b6b325cc6f11259b80","hashable-1.4.2.0-3cc3eba008bad2dfed3e74ddd12307b1c49fc43da236521d46b3d1b9df8cfd73","heaps-0.4-144db1859f80e348dd364b0344727f2186256658a0f2bd2a1aad9c4c1db630a6","js-dgtable-0.5.2-ce51504654bf180c4ea9d29cda6d8256812da1ea6d2e631267db1cb30cae915d","js-flot-0.8.3-006c070aea66f942992ff19703d82059efcfd6ae82854bcfeb4083431bc579aa","js-jquery-3.3.1-257058014593a08cf3c7160e6a2fbf8b955f738e214c1dbc3ce0042b6a57ae6f","primitive-0.8.0.0-becede3b475b090bfee201276f175b6bdf41386aaea8c881d4d96b97d3787531","process-1.6.16.0","random-1.2.1.1-d9d024ad839cf59e080833d3160f414c51e3c921a07e4605644d3a24096423af","time-1.12.2","transformers-0.5.6.2","unix-2.7.3","unordered-containers-0.2.19.1-4baf378c8835b0cfb97fec3caca371cf946bd377598acf69fe0ab8ec8ac9b457","utf8-string-1.0.2-b80856b75fa2fd6a3479749a275df202f796046854b0d6f9da80ab1b4390f939"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"shake-0.19.7-e-shake-67e15cde7c1cb49bcea296a54aa439315e66dfa316723d77c5efedbe480561be","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.17.0.0","binary-0.8.9.1","bytestring-0.11.3.1","deepseq-1.4.8.0","directory-1.3.7.1","extra-1.7.12-2f461c53f9b08e5408efea172f9149bfec383edafad68aa7599176c16a13dede","filepath-1.4.2.2","filepattern-0.1.3-23d7f8ede2c552ae35fa6871e68c09d5495fe0ac277049b6b325cc6f11259b80","hashable-1.4.2.0-3cc3eba008bad2dfed3e74ddd12307b1c49fc43da236521d46b3d1b9df8cfd73","heaps-0.4-144db1859f80e348dd364b0344727f2186256658a0f2bd2a1aad9c4c1db630a6","js-dgtable-0.5.2-ce51504654bf180c4ea9d29cda6d8256812da1ea6d2e631267db1cb30cae915d","js-flot-0.8.3-006c070aea66f942992ff19703d82059efcfd6ae82854bcfeb4083431bc579aa","js-jquery-3.3.1-257058014593a08cf3c7160e6a2fbf8b955f738e214c1dbc3ce0042b6a57ae6f","primitive-0.8.0.0-becede3b475b090bfee201276f175b6bdf41386aaea8c881d4d96b97d3787531","process-1.6.16.0","random-1.2.1.1-d9d024ad839cf59e080833d3160f414c51e3c921a07e4605644d3a24096423af","time-1.12.2","transformers-0.5.6.2","unix-2.7.3","unordered-containers-0.2.19.1-4baf378c8835b0cfb97fec3caca371cf946bd377598acf69fe0ab8ec8ac9b457","utf8-string-1.0.2-b80856b75fa2fd6a3479749a275df202f796046854b0d6f9da80ab1b4390f939"],"exe-depends":[],"component-name":"exe:shake","bin-file":"/home/matt/.cabal/store/ghc-9.4.3/shake-0.19.7-e-shake-67e15cde7c1cb49bcea296a54aa439315e66dfa316723d77c5efedbe480561be/bin/shake"},{"type":"configured","id":"splitmix-0.1.0.4-710f6aef842a6d0debca56a044407f2910ce264a4b0602d9d4de9ddecf46e668","pkg-name":"splitmix","pkg-version":"0.1.0.4","flags":{"optimised-mixer":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"db25c2e17967aa6b6046ab8b1b96ba3f344ca59a62b60fb6113d51ea305a3d8e","pkg-src-sha256":"6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa","depends":["base-4.17.0.0","deepseq-1.4.8.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"template-haskell-2.19.0.0","pkg-name":"template-haskell","pkg-version":"2.19.0.0","depends":["base-4.17.0.0","ghc-boot-th-9.4.3","ghc-prim-0.9.0","pretty-1.1.3.6"]},{"type":"pre-existing","id":"text-2.0.1","pkg-name":"text","pkg-version":"2.0.1","depends":["array-0.5.4.0","base-4.17.0.0","binary-0.8.9.1","bytestring-0.11.3.1","deepseq-1.4.8.0","ghc-prim-0.9.0","template-haskell-2.19.0.0"]},{"type":"pre-existing","id":"time-1.12.2","pkg-name":"time","pkg-version":"1.12.2","depends":["base-4.17.0.0","deepseq-1.4.8.0"]},{"type":"pre-existing","id":"transformers-0.5.6.2","pkg-name":"transformers","pkg-version":"0.5.6.2","depends":["base-4.17.0.0"]},{"type":"pre-existing","id":"unix-2.7.3","pkg-name":"unix","pkg-version":"2.7.3","depends":["base-4.17.0.0","bytestring-0.11.3.1","time-1.12.2"]},{"type":"configured","id":"unordered-containers-0.2.19.1-4baf378c8835b0cfb97fec3caca371cf946bd377598acf69fe0ab8ec8ac9b457","pkg-name":"unordered-containers","pkg-version":"0.2.19.1","flags":{"debug":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"9ad8972c2e913c37b1d4f0e1261517fd7a1b8c8a58077e057be69837e3dbaa00","pkg-src-sha256":"1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2","depends":["base-4.17.0.0","deepseq-1.4.8.0","hashable-1.4.2.0-3cc3eba008bad2dfed3e74ddd12307b1c49fc43da236521d46b3d1b9df8cfd73","template-haskell-2.19.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"utf8-string-1.0.2-b80856b75fa2fd6a3479749a275df202f796046854b0d6f9da80ab1b4390f939","pkg-name":"utf8-string","pkg-version":"1.0.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"79416292186feeaf1f60e49ac5a1ffae9bf1b120e040a74bf0e81ca7f1d31d3f","pkg-src-sha256":"ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a","depends":["base-4.17.0.0","bytestring-0.11.3.1"],"exe-depends":[],"component-name":"lib"}]} \ No newline at end of file
diff --git a/hadrian/bootstrap/plan-9_4_4.json b/hadrian/bootstrap/plan-9_4_4.json
index f62f978502..12b7de4658 100644
--- a/hadrian/bootstrap/plan-9_4_4.json
+++ b/hadrian/bootstrap/plan-9_4_4.json
@@ -1 +1 @@
-{"cabal-version":"3.8.1.0","cabal-lib-version":"3.8.1.0","compiler-id":"ghc-9.4.4","os":"linux","arch":"x86_64","install-plan":[{"type":"pre-existing","id":"Cabal-3.8.1.0","pkg-name":"Cabal","pkg-version":"3.8.1.0","depends":["Cabal-syntax-3.8.1.0","array-0.5.4.0","base-4.17.0.0","bytestring-0.11.3.1","containers-0.6.6","deepseq-1.4.8.0","directory-1.3.7.1","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","pretty-1.1.3.6","process-1.6.16.0","text-2.0.1","time-1.12.2","transformers-0.5.6.2","unix-2.7.3"]},{"type":"pre-existing","id":"Cabal-syntax-3.8.1.0","pkg-name":"Cabal-syntax","pkg-version":"3.8.1.0","depends":["array-0.5.4.0","base-4.17.0.0","binary-0.8.9.1","bytestring-0.11.3.1","containers-0.6.6","deepseq-1.4.8.0","directory-1.3.7.1","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","pretty-1.1.3.6","text-2.0.1","time-1.12.2","transformers-0.5.6.2","unix-2.7.3"]},{"type":"configured","id":"QuickCheck-2.14.2-a60da574de04097effdc98c78262091fa56c19e05a88c4024e6578341d30e90e","pkg-name":"QuickCheck","pkg-version":"2.14.2","flags":{"old-random":false,"templatehaskell":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4ce29211223d5e6620ebceba34a3ca9ccf1c10c0cf387d48aea45599222ee5aa","pkg-src-sha256":"d87b6c85696b601175274361fa62217894401e401e150c3c5d4013ac53cd36f3","depends":["base-4.17.0.0","containers-0.6.6","deepseq-1.4.8.0","random-1.2.1.1-dbffd18a055fbf1c5ccdc18dddc6a7070869702691c237f3c9fec60b9a349e21","splitmix-0.1.0.4-d4d340dc5b93e4aadb6f0ee62f239d1f28fbadeae3c81529c67f4df279c3cae7","template-haskell-2.19.0.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"array-0.5.4.0","pkg-name":"array","pkg-version":"0.5.4.0","depends":["base-4.17.0.0"]},{"type":"pre-existing","id":"base-4.17.0.0","pkg-name":"base","pkg-version":"4.17.0.0","depends":["ghc-bignum-1.3","ghc-prim-0.9.0","rts-1.0.2"]},{"type":"pre-existing","id":"binary-0.8.9.1","pkg-name":"binary","pkg-version":"0.8.9.1","depends":["array-0.5.4.0","base-4.17.0.0","bytestring-0.11.3.1","containers-0.6.6"]},{"type":"pre-existing","id":"bytestring-0.11.3.1","pkg-name":"bytestring","pkg-version":"0.11.3.1","depends":["base-4.17.0.0","deepseq-1.4.8.0","ghc-prim-0.9.0","template-haskell-2.19.0.0"]},{"type":"configured","id":"clock-0.8.3-e1cb5c09c08b802543e1c283427ef69d76d97cf2dec49fcef18840c2a8f690bf","pkg-name":"clock","pkg-version":"0.8.3","flags":{"llvm":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c","pkg-src-sha256":"845ce5db4c98cefd517323e005f87effceff886987305e421c4ef616dc0505d1","depends":["base-4.17.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"containers-0.6.6","pkg-name":"containers","pkg-version":"0.6.6","depends":["array-0.5.4.0","base-4.17.0.0","deepseq-1.4.8.0","template-haskell-2.19.0.0"]},{"type":"pre-existing","id":"deepseq-1.4.8.0","pkg-name":"deepseq","pkg-version":"1.4.8.0","depends":["array-0.5.4.0","base-4.17.0.0","ghc-prim-0.9.0"]},{"type":"pre-existing","id":"directory-1.3.7.1","pkg-name":"directory","pkg-version":"1.3.7.1","depends":["base-4.17.0.0","filepath-1.4.2.2","time-1.12.2","unix-2.7.3"]},{"type":"configured","id":"extra-1.7.12-ed96143baca6959ac781d058b4532253a1a26d733ef4adb0a1321df73f5180d9","pkg-name":"extra","pkg-version":"1.7.12","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3ac58d7341976173d1052e7b2837d119212d9afcf911735667c7f1ab67aec25f","pkg-src-sha256":"e571a9ec1d8865f0fbb0e0ba1eb575f783b0365c80db19b54a93600bae43b03c","depends":["base-4.17.0.0","clock-0.8.3-e1cb5c09c08b802543e1c283427ef69d76d97cf2dec49fcef18840c2a8f690bf","directory-1.3.7.1","filepath-1.4.2.2","process-1.6.16.0","time-1.12.2","unix-2.7.3"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"filepath-1.4.2.2","pkg-name":"filepath","pkg-version":"1.4.2.2","depends":["base-4.17.0.0"]},{"type":"configured","id":"filepattern-0.1.3-3209dee43b8f78099b7623a80834f0944d05b5c63e74e5607c738100e0aeefb7","pkg-name":"filepattern","pkg-version":"0.1.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"372c1733d83b90045eb29da9f010fed79bfef8771ce65eb126a1d83ecc54a9a2","pkg-src-sha256":"cc445d439ea2f65cac7604d3578aa2c3a62e5a91dc989f4ce5b3390db9e59636","depends":["base-4.17.0.0","directory-1.3.7.1","extra-1.7.12-ed96143baca6959ac781d058b4532253a1a26d733ef4adb0a1321df73f5180d9","filepath-1.4.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"ghc-bignum-1.3","pkg-name":"ghc-bignum","pkg-version":"1.3","depends":["ghc-prim-0.9.0"]},{"type":"pre-existing","id":"ghc-boot-th-9.4.4","pkg-name":"ghc-boot-th","pkg-version":"9.4.4","depends":["base-4.17.0.0"]},{"type":"pre-existing","id":"ghc-prim-0.9.0","pkg-name":"ghc-prim","pkg-version":"0.9.0","depends":["rts-1.0.2"]},{"type":"configured","id":"hadrian-0.1.0.0-inplace-hadrian","pkg-name":"hadrian","pkg-version":"0.1.0.0","flags":{"selftest":true,"threaded":true},"style":"local","pkg-src":{"type":"local","path":"/home/matt/ghc-scratch/hadrian/."},"dist-dir":"/home/matt/ghc-scratch/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.4.4/hadrian-0.1.0.0/x/hadrian","build-info":"/home/matt/ghc-scratch/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.4.4/hadrian-0.1.0.0/x/hadrian/build-info.json","depends":["Cabal-3.8.1.0","QuickCheck-2.14.2-a60da574de04097effdc98c78262091fa56c19e05a88c4024e6578341d30e90e","base-4.17.0.0","bytestring-0.11.3.1","containers-0.6.6","directory-1.3.7.1","extra-1.7.12-ed96143baca6959ac781d058b4532253a1a26d733ef4adb0a1321df73f5180d9","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","shake-0.19.7-9447f50d9da0cc8668e587f8e555d4d8c2a3b4aef6766374d908e2942c04845d","text-2.0.1","time-1.12.2","transformers-0.5.6.2","unordered-containers-0.2.19.1-2dec9e8b7cc43fc729dcfa4b3cfe5ce42488c299bc0108cd6fc3f6accbd109ce"],"exe-depends":[],"component-name":"exe:hadrian","bin-file":"/home/matt/ghc-scratch/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.4.4/hadrian-0.1.0.0/x/hadrian/build/hadrian/hadrian"},{"type":"configured","id":"hashable-1.4.2.0-8b24e015b5994215b529553ebf9f53466f24b616595cb02efad3ae8f6f6c1898","pkg-name":"hashable","pkg-version":"1.4.2.0","flags":{"integer-gmp":true,"random-initial-seed":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"585792335d5541dba78fa8dfcb291a89cd5812a281825ff7a44afa296ab5d58a","pkg-src-sha256":"1b4000ea82b81f69d46d0af4152c10c6303873510738e24cfc4767760d30e3f8","depends":["base-4.17.0.0","bytestring-0.11.3.1","containers-0.6.6","deepseq-1.4.8.0","filepath-1.4.2.2","ghc-bignum-1.3","ghc-prim-0.9.0","text-2.0.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"heaps-0.4-7a6066160342ac2a9ea4aec008f23eb9d92ad7a8c8d2e78cbeed667d8096912c","pkg-name":"heaps","pkg-version":"0.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"66b19fcd813b0e4db3e0bac541bd46606c3b13d3d081d9f9666f4be0f5ff14b8","pkg-src-sha256":"89329df8b95ae99ef272e41e7a2d0fe2f1bb7eacfcc34bc01664414b33067cfd","depends":["base-4.17.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-dgtable-0.5.2-b37805c8ad3dc85830c773ec5da0d4cdfd56a534a3f6acb334c4517b737e5cb1","pkg-name":"js-dgtable","pkg-version":"0.5.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f75cb4fa53c88c65794becdd48eb0d3b2b8abd89a3d5c19e87af91f5225c15e4","pkg-src-sha256":"e28dd65bee8083b17210134e22e01c6349dc33c3b7bd17705973cd014e9f20ac","depends":["base-4.17.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-flot-0.8.3-65df5b8c3953095207aa8a04d9d37d07aed474c73133bf9239df4e5cdbe4a9bd","pkg-name":"js-flot","pkg-version":"0.8.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4c1c447a9a2fba0adba6d30678302a30c32b9dfde9e7aa9e9156483e1545096d","pkg-src-sha256":"1ba2f2a6b8d85da76c41f526c98903cbb107f8642e506c072c1e7e3c20fe5e7a","depends":["base-4.17.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-jquery-3.3.1-8c84fdfa715ddd833b67b8a90ef47411829e61b194d5967e0699193776231e76","pkg-name":"js-jquery","pkg-version":"3.3.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"59ab6c79159549ef94b584abce8e6d3b336014c2cce1337b59a8f637e2856df5","pkg-src-sha256":"e0e0681f0da1130ede4e03a051630ea439c458cb97216cdb01771ebdbe44069b","depends":["base-4.17.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"mtl-2.2.2","pkg-name":"mtl","pkg-version":"2.2.2","depends":["base-4.17.0.0","transformers-0.5.6.2"]},{"type":"pre-existing","id":"parsec-3.1.15.0","pkg-name":"parsec","pkg-version":"3.1.15.0","depends":["base-4.17.0.0","bytestring-0.11.3.1","mtl-2.2.2","text-2.0.1"]},{"type":"pre-existing","id":"pretty-1.1.3.6","pkg-name":"pretty","pkg-version":"1.1.3.6","depends":["base-4.17.0.0","deepseq-1.4.8.0","ghc-prim-0.9.0"]},{"type":"configured","id":"primitive-0.8.0.0-621aca8de1dc201eec4f41917b8b5a6a9b9074831d6e26b48d3157f27593d2cb","pkg-name":"primitive","pkg-version":"0.8.0.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"826bf2a702a26ef87532a135808abad69d74f70ead39f26c06d034b1f0537a19","pkg-src-sha256":"5553c21b4a789f9b591eed69e598cc58484c274af29250e517b5a8bcc62b995f","depends":["base-4.17.0.0","deepseq-1.4.8.0","template-haskell-2.19.0.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"process-1.6.16.0","pkg-name":"process","pkg-version":"1.6.16.0","depends":["base-4.17.0.0","deepseq-1.4.8.0","directory-1.3.7.1","filepath-1.4.2.2","unix-2.7.3"]},{"type":"configured","id":"random-1.2.1.1-dbffd18a055fbf1c5ccdc18dddc6a7070869702691c237f3c9fec60b9a349e21","pkg-name":"random","pkg-version":"1.2.1.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"dea1f11e5569332dc6c8efaad1cb301016a5587b6754943a49f9de08ae0e56d9","pkg-src-sha256":"3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76","depends":["base-4.17.0.0","bytestring-0.11.3.1","deepseq-1.4.8.0","mtl-2.2.2","splitmix-0.1.0.4-d4d340dc5b93e4aadb6f0ee62f239d1f28fbadeae3c81529c67f4df279c3cae7"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"rts-1.0.2","pkg-name":"rts","pkg-version":"1.0.2","depends":[]},{"type":"configured","id":"shake-0.19.7-9447f50d9da0cc8668e587f8e555d4d8c2a3b4aef6766374d908e2942c04845d","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.17.0.0","binary-0.8.9.1","bytestring-0.11.3.1","deepseq-1.4.8.0","directory-1.3.7.1","extra-1.7.12-ed96143baca6959ac781d058b4532253a1a26d733ef4adb0a1321df73f5180d9","filepath-1.4.2.2","filepattern-0.1.3-3209dee43b8f78099b7623a80834f0944d05b5c63e74e5607c738100e0aeefb7","hashable-1.4.2.0-8b24e015b5994215b529553ebf9f53466f24b616595cb02efad3ae8f6f6c1898","heaps-0.4-7a6066160342ac2a9ea4aec008f23eb9d92ad7a8c8d2e78cbeed667d8096912c","js-dgtable-0.5.2-b37805c8ad3dc85830c773ec5da0d4cdfd56a534a3f6acb334c4517b737e5cb1","js-flot-0.8.3-65df5b8c3953095207aa8a04d9d37d07aed474c73133bf9239df4e5cdbe4a9bd","js-jquery-3.3.1-8c84fdfa715ddd833b67b8a90ef47411829e61b194d5967e0699193776231e76","primitive-0.8.0.0-621aca8de1dc201eec4f41917b8b5a6a9b9074831d6e26b48d3157f27593d2cb","process-1.6.16.0","random-1.2.1.1-dbffd18a055fbf1c5ccdc18dddc6a7070869702691c237f3c9fec60b9a349e21","time-1.12.2","transformers-0.5.6.2","unix-2.7.3","unordered-containers-0.2.19.1-2dec9e8b7cc43fc729dcfa4b3cfe5ce42488c299bc0108cd6fc3f6accbd109ce","utf8-string-1.0.2-ecbcc42d461fefe46d60189b7229cddccce61f9cc8c90c79b2546be729015263"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"shake-0.19.7-e-shake-58a8239f06abe2b027b3d505240dffcac7bbaa4718579418aa458c0ac50d8beb","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.17.0.0","binary-0.8.9.1","bytestring-0.11.3.1","deepseq-1.4.8.0","directory-1.3.7.1","extra-1.7.12-ed96143baca6959ac781d058b4532253a1a26d733ef4adb0a1321df73f5180d9","filepath-1.4.2.2","filepattern-0.1.3-3209dee43b8f78099b7623a80834f0944d05b5c63e74e5607c738100e0aeefb7","hashable-1.4.2.0-8b24e015b5994215b529553ebf9f53466f24b616595cb02efad3ae8f6f6c1898","heaps-0.4-7a6066160342ac2a9ea4aec008f23eb9d92ad7a8c8d2e78cbeed667d8096912c","js-dgtable-0.5.2-b37805c8ad3dc85830c773ec5da0d4cdfd56a534a3f6acb334c4517b737e5cb1","js-flot-0.8.3-65df5b8c3953095207aa8a04d9d37d07aed474c73133bf9239df4e5cdbe4a9bd","js-jquery-3.3.1-8c84fdfa715ddd833b67b8a90ef47411829e61b194d5967e0699193776231e76","primitive-0.8.0.0-621aca8de1dc201eec4f41917b8b5a6a9b9074831d6e26b48d3157f27593d2cb","process-1.6.16.0","random-1.2.1.1-dbffd18a055fbf1c5ccdc18dddc6a7070869702691c237f3c9fec60b9a349e21","time-1.12.2","transformers-0.5.6.2","unix-2.7.3","unordered-containers-0.2.19.1-2dec9e8b7cc43fc729dcfa4b3cfe5ce42488c299bc0108cd6fc3f6accbd109ce","utf8-string-1.0.2-ecbcc42d461fefe46d60189b7229cddccce61f9cc8c90c79b2546be729015263"],"exe-depends":[],"component-name":"exe:shake","bin-file":"/home/matt/.cabal/store/ghc-9.4.4/shake-0.19.7-e-shake-58a8239f06abe2b027b3d505240dffcac7bbaa4718579418aa458c0ac50d8beb/bin/shake"},{"type":"configured","id":"splitmix-0.1.0.4-d4d340dc5b93e4aadb6f0ee62f239d1f28fbadeae3c81529c67f4df279c3cae7","pkg-name":"splitmix","pkg-version":"0.1.0.4","flags":{"optimised-mixer":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"db25c2e17967aa6b6046ab8b1b96ba3f344ca59a62b60fb6113d51ea305a3d8e","pkg-src-sha256":"6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa","depends":["base-4.17.0.0","deepseq-1.4.8.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"template-haskell-2.19.0.0","pkg-name":"template-haskell","pkg-version":"2.19.0.0","depends":["base-4.17.0.0","ghc-boot-th-9.4.4","ghc-prim-0.9.0","pretty-1.1.3.6"]},{"type":"pre-existing","id":"text-2.0.1","pkg-name":"text","pkg-version":"2.0.1","depends":["array-0.5.4.0","base-4.17.0.0","binary-0.8.9.1","bytestring-0.11.3.1","deepseq-1.4.8.0","ghc-prim-0.9.0","template-haskell-2.19.0.0"]},{"type":"pre-existing","id":"time-1.12.2","pkg-name":"time","pkg-version":"1.12.2","depends":["base-4.17.0.0","deepseq-1.4.8.0"]},{"type":"pre-existing","id":"transformers-0.5.6.2","pkg-name":"transformers","pkg-version":"0.5.6.2","depends":["base-4.17.0.0"]},{"type":"pre-existing","id":"unix-2.7.3","pkg-name":"unix","pkg-version":"2.7.3","depends":["base-4.17.0.0","bytestring-0.11.3.1","time-1.12.2"]},{"type":"configured","id":"unordered-containers-0.2.19.1-2dec9e8b7cc43fc729dcfa4b3cfe5ce42488c299bc0108cd6fc3f6accbd109ce","pkg-name":"unordered-containers","pkg-version":"0.2.19.1","flags":{"debug":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"9ad8972c2e913c37b1d4f0e1261517fd7a1b8c8a58077e057be69837e3dbaa00","pkg-src-sha256":"1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2","depends":["base-4.17.0.0","deepseq-1.4.8.0","hashable-1.4.2.0-8b24e015b5994215b529553ebf9f53466f24b616595cb02efad3ae8f6f6c1898","template-haskell-2.19.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"utf8-string-1.0.2-ecbcc42d461fefe46d60189b7229cddccce61f9cc8c90c79b2546be729015263","pkg-name":"utf8-string","pkg-version":"1.0.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"79416292186feeaf1f60e49ac5a1ffae9bf1b120e040a74bf0e81ca7f1d31d3f","pkg-src-sha256":"ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a","depends":["base-4.17.0.0","bytestring-0.11.3.1"],"exe-depends":[],"component-name":"lib"}]} \ No newline at end of file
+{"cabal-version":"3.8.1.0","cabal-lib-version":"3.8.1.0","compiler-id":"ghc-9.4.4","os":"linux","arch":"x86_64","install-plan":[{"type":"pre-existing","id":"Cabal-3.8.1.0","pkg-name":"Cabal","pkg-version":"3.8.1.0","depends":["Cabal-syntax-3.8.1.0","array-0.5.4.0","base-4.17.0.0","bytestring-0.11.3.1","containers-0.6.6","deepseq-1.4.8.0","directory-1.3.7.1","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","pretty-1.1.3.6","process-1.6.16.0","text-2.0.1","time-1.12.2","transformers-0.5.6.2","unix-2.7.3"]},{"type":"pre-existing","id":"Cabal-syntax-3.8.1.0","pkg-name":"Cabal-syntax","pkg-version":"3.8.1.0","depends":["array-0.5.4.0","base-4.17.0.0","binary-0.8.9.1","bytestring-0.11.3.1","containers-0.6.6","deepseq-1.4.8.0","directory-1.3.7.1","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","pretty-1.1.3.6","text-2.0.1","time-1.12.2","transformers-0.5.6.2","unix-2.7.3"]},{"type":"configured","id":"QuickCheck-2.14.2-a60da574de04097effdc98c78262091fa56c19e05a88c4024e6578341d30e90e","pkg-name":"QuickCheck","pkg-version":"2.14.2","flags":{"old-random":false,"templatehaskell":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4ce29211223d5e6620ebceba34a3ca9ccf1c10c0cf387d48aea45599222ee5aa","pkg-src-sha256":"d87b6c85696b601175274361fa62217894401e401e150c3c5d4013ac53cd36f3","depends":["base-4.17.0.0","containers-0.6.6","deepseq-1.4.8.0","random-1.2.1.1-dbffd18a055fbf1c5ccdc18dddc6a7070869702691c237f3c9fec60b9a349e21","splitmix-0.1.0.4-d4d340dc5b93e4aadb6f0ee62f239d1f28fbadeae3c81529c67f4df279c3cae7","template-haskell-2.19.0.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"array-0.5.4.0","pkg-name":"array","pkg-version":"0.5.4.0","depends":["base-4.17.0.0"]},{"type":"pre-existing","id":"base-4.17.0.0","pkg-name":"base","pkg-version":"4.17.0.0","depends":["ghc-bignum-1.3","ghc-prim-0.9.0","rts-1.0.2"]},{"type":"configured","id":"base16-bytestring-1.0.2.0-2c05b63cefa5d7007acd478c1dbfe18a190bfba61d8945d4d5b87798ed9ca8c2","pkg-name":"base16-bytestring","pkg-version":"1.0.2.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"64abad7816ab8cabed8489e29f807b3a6f828e0b2cec0eae404323d69d36df9a","pkg-src-sha256":"1d5a91143ef0e22157536093ec8e59d226a68220ec89378d5dcaeea86472c784","depends":["base-4.17.0.0","bytestring-0.11.3.1"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"binary-0.8.9.1","pkg-name":"binary","pkg-version":"0.8.9.1","depends":["array-0.5.4.0","base-4.17.0.0","bytestring-0.11.3.1","containers-0.6.6"]},{"type":"pre-existing","id":"bytestring-0.11.3.1","pkg-name":"bytestring","pkg-version":"0.11.3.1","depends":["base-4.17.0.0","deepseq-1.4.8.0","ghc-prim-0.9.0","template-haskell-2.19.0.0"]},{"type":"configured","id":"clock-0.8.3-e1cb5c09c08b802543e1c283427ef69d76d97cf2dec49fcef18840c2a8f690bf","pkg-name":"clock","pkg-version":"0.8.3","flags":{"llvm":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c","pkg-src-sha256":"845ce5db4c98cefd517323e005f87effceff886987305e421c4ef616dc0505d1","depends":["base-4.17.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"containers-0.6.6","pkg-name":"containers","pkg-version":"0.6.6","depends":["array-0.5.4.0","base-4.17.0.0","deepseq-1.4.8.0","template-haskell-2.19.0.0"]},{"type":"configured","id":"cryptohash-sha256-0.11.102.1-ae70c6c39b427440638d8d0177551367c44baa0fcf044bb565f9e69c4daafe02","pkg-name":"cryptohash-sha256","pkg-version":"0.11.102.1","flags":{"exe":false,"use-cbits":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"72ce9095872eae653addca5f412ac8070d6282d8e1c8578c2237c33f2cbbf4bc","pkg-src-sha256":"73a7dc7163871a80837495039a099967b11f5c4fe70a118277842f7a713c6bf6","depends":["base-4.17.0.0","bytestring-0.11.3.1"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"deepseq-1.4.8.0","pkg-name":"deepseq","pkg-version":"1.4.8.0","depends":["array-0.5.4.0","base-4.17.0.0","ghc-prim-0.9.0"]},{"type":"pre-existing","id":"directory-1.3.7.1","pkg-name":"directory","pkg-version":"1.3.7.1","depends":["base-4.17.0.0","filepath-1.4.2.2","time-1.12.2","unix-2.7.3"]},{"type":"configured","id":"extra-1.7.12-ed96143baca6959ac781d058b4532253a1a26d733ef4adb0a1321df73f5180d9","pkg-name":"extra","pkg-version":"1.7.12","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3ac58d7341976173d1052e7b2837d119212d9afcf911735667c7f1ab67aec25f","pkg-src-sha256":"e571a9ec1d8865f0fbb0e0ba1eb575f783b0365c80db19b54a93600bae43b03c","depends":["base-4.17.0.0","clock-0.8.3-e1cb5c09c08b802543e1c283427ef69d76d97cf2dec49fcef18840c2a8f690bf","directory-1.3.7.1","filepath-1.4.2.2","process-1.6.16.0","time-1.12.2","unix-2.7.3"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"filepath-1.4.2.2","pkg-name":"filepath","pkg-version":"1.4.2.2","depends":["base-4.17.0.0"]},{"type":"configured","id":"filepattern-0.1.3-3209dee43b8f78099b7623a80834f0944d05b5c63e74e5607c738100e0aeefb7","pkg-name":"filepattern","pkg-version":"0.1.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"372c1733d83b90045eb29da9f010fed79bfef8771ce65eb126a1d83ecc54a9a2","pkg-src-sha256":"cc445d439ea2f65cac7604d3578aa2c3a62e5a91dc989f4ce5b3390db9e59636","depends":["base-4.17.0.0","directory-1.3.7.1","extra-1.7.12-ed96143baca6959ac781d058b4532253a1a26d733ef4adb0a1321df73f5180d9","filepath-1.4.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"ghc-bignum-1.3","pkg-name":"ghc-bignum","pkg-version":"1.3","depends":["ghc-prim-0.9.0"]},{"type":"pre-existing","id":"ghc-boot-th-9.4.4","pkg-name":"ghc-boot-th","pkg-version":"9.4.4","depends":["base-4.17.0.0"]},{"type":"pre-existing","id":"ghc-prim-0.9.0","pkg-name":"ghc-prim","pkg-version":"0.9.0","depends":["rts-1.0.2"]},{"type":"configured","id":"hadrian-0.1.0.0-inplace-hadrian","pkg-name":"hadrian","pkg-version":"0.1.0.0","flags":{"selftest":true,"threaded":true},"style":"local","pkg-src":{"type":"local","path":"/home/matt/ghc-rodrigo/hadrian/."},"dist-dir":"/home/matt/ghc-rodrigo/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.4.4/hadrian-0.1.0.0/x/hadrian","build-info":"/home/matt/ghc-rodrigo/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.4.4/hadrian-0.1.0.0/x/hadrian/build-info.json","depends":["Cabal-3.8.1.0","QuickCheck-2.14.2-a60da574de04097effdc98c78262091fa56c19e05a88c4024e6578341d30e90e","base-4.17.0.0","base16-bytestring-1.0.2.0-2c05b63cefa5d7007acd478c1dbfe18a190bfba61d8945d4d5b87798ed9ca8c2","bytestring-0.11.3.1","containers-0.6.6","cryptohash-sha256-0.11.102.1-ae70c6c39b427440638d8d0177551367c44baa0fcf044bb565f9e69c4daafe02","directory-1.3.7.1","extra-1.7.12-ed96143baca6959ac781d058b4532253a1a26d733ef4adb0a1321df73f5180d9","filepath-1.4.2.2","mtl-2.2.2","parsec-3.1.15.0","shake-0.19.7-9447f50d9da0cc8668e587f8e555d4d8c2a3b4aef6766374d908e2942c04845d","text-2.0.1","time-1.12.2","transformers-0.5.6.2","unordered-containers-0.2.19.1-2dec9e8b7cc43fc729dcfa4b3cfe5ce42488c299bc0108cd6fc3f6accbd109ce"],"exe-depends":[],"component-name":"exe:hadrian","bin-file":"/home/matt/ghc-rodrigo/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.4.4/hadrian-0.1.0.0/x/hadrian/build/hadrian/hadrian"},{"type":"configured","id":"hashable-1.4.2.0-8b24e015b5994215b529553ebf9f53466f24b616595cb02efad3ae8f6f6c1898","pkg-name":"hashable","pkg-version":"1.4.2.0","flags":{"integer-gmp":true,"random-initial-seed":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"585792335d5541dba78fa8dfcb291a89cd5812a281825ff7a44afa296ab5d58a","pkg-src-sha256":"1b4000ea82b81f69d46d0af4152c10c6303873510738e24cfc4767760d30e3f8","depends":["base-4.17.0.0","bytestring-0.11.3.1","containers-0.6.6","deepseq-1.4.8.0","filepath-1.4.2.2","ghc-bignum-1.3","ghc-prim-0.9.0","text-2.0.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"heaps-0.4-7a6066160342ac2a9ea4aec008f23eb9d92ad7a8c8d2e78cbeed667d8096912c","pkg-name":"heaps","pkg-version":"0.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"66b19fcd813b0e4db3e0bac541bd46606c3b13d3d081d9f9666f4be0f5ff14b8","pkg-src-sha256":"89329df8b95ae99ef272e41e7a2d0fe2f1bb7eacfcc34bc01664414b33067cfd","depends":["base-4.17.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-dgtable-0.5.2-b37805c8ad3dc85830c773ec5da0d4cdfd56a534a3f6acb334c4517b737e5cb1","pkg-name":"js-dgtable","pkg-version":"0.5.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f75cb4fa53c88c65794becdd48eb0d3b2b8abd89a3d5c19e87af91f5225c15e4","pkg-src-sha256":"e28dd65bee8083b17210134e22e01c6349dc33c3b7bd17705973cd014e9f20ac","depends":["base-4.17.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-flot-0.8.3-65df5b8c3953095207aa8a04d9d37d07aed474c73133bf9239df4e5cdbe4a9bd","pkg-name":"js-flot","pkg-version":"0.8.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4c1c447a9a2fba0adba6d30678302a30c32b9dfde9e7aa9e9156483e1545096d","pkg-src-sha256":"1ba2f2a6b8d85da76c41f526c98903cbb107f8642e506c072c1e7e3c20fe5e7a","depends":["base-4.17.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-jquery-3.3.1-8c84fdfa715ddd833b67b8a90ef47411829e61b194d5967e0699193776231e76","pkg-name":"js-jquery","pkg-version":"3.3.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"59ab6c79159549ef94b584abce8e6d3b336014c2cce1337b59a8f637e2856df5","pkg-src-sha256":"e0e0681f0da1130ede4e03a051630ea439c458cb97216cdb01771ebdbe44069b","depends":["base-4.17.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"mtl-2.2.2","pkg-name":"mtl","pkg-version":"2.2.2","depends":["base-4.17.0.0","transformers-0.5.6.2"]},{"type":"pre-existing","id":"parsec-3.1.15.0","pkg-name":"parsec","pkg-version":"3.1.15.0","depends":["base-4.17.0.0","bytestring-0.11.3.1","mtl-2.2.2","text-2.0.1"]},{"type":"pre-existing","id":"pretty-1.1.3.6","pkg-name":"pretty","pkg-version":"1.1.3.6","depends":["base-4.17.0.0","deepseq-1.4.8.0","ghc-prim-0.9.0"]},{"type":"configured","id":"primitive-0.8.0.0-621aca8de1dc201eec4f41917b8b5a6a9b9074831d6e26b48d3157f27593d2cb","pkg-name":"primitive","pkg-version":"0.8.0.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"826bf2a702a26ef87532a135808abad69d74f70ead39f26c06d034b1f0537a19","pkg-src-sha256":"5553c21b4a789f9b591eed69e598cc58484c274af29250e517b5a8bcc62b995f","depends":["base-4.17.0.0","deepseq-1.4.8.0","template-haskell-2.19.0.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"process-1.6.16.0","pkg-name":"process","pkg-version":"1.6.16.0","depends":["base-4.17.0.0","deepseq-1.4.8.0","directory-1.3.7.1","filepath-1.4.2.2","unix-2.7.3"]},{"type":"configured","id":"random-1.2.1.1-dbffd18a055fbf1c5ccdc18dddc6a7070869702691c237f3c9fec60b9a349e21","pkg-name":"random","pkg-version":"1.2.1.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"dea1f11e5569332dc6c8efaad1cb301016a5587b6754943a49f9de08ae0e56d9","pkg-src-sha256":"3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76","depends":["base-4.17.0.0","bytestring-0.11.3.1","deepseq-1.4.8.0","mtl-2.2.2","splitmix-0.1.0.4-d4d340dc5b93e4aadb6f0ee62f239d1f28fbadeae3c81529c67f4df279c3cae7"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"rts-1.0.2","pkg-name":"rts","pkg-version":"1.0.2","depends":[]},{"type":"configured","id":"shake-0.19.7-9447f50d9da0cc8668e587f8e555d4d8c2a3b4aef6766374d908e2942c04845d","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.17.0.0","binary-0.8.9.1","bytestring-0.11.3.1","deepseq-1.4.8.0","directory-1.3.7.1","extra-1.7.12-ed96143baca6959ac781d058b4532253a1a26d733ef4adb0a1321df73f5180d9","filepath-1.4.2.2","filepattern-0.1.3-3209dee43b8f78099b7623a80834f0944d05b5c63e74e5607c738100e0aeefb7","hashable-1.4.2.0-8b24e015b5994215b529553ebf9f53466f24b616595cb02efad3ae8f6f6c1898","heaps-0.4-7a6066160342ac2a9ea4aec008f23eb9d92ad7a8c8d2e78cbeed667d8096912c","js-dgtable-0.5.2-b37805c8ad3dc85830c773ec5da0d4cdfd56a534a3f6acb334c4517b737e5cb1","js-flot-0.8.3-65df5b8c3953095207aa8a04d9d37d07aed474c73133bf9239df4e5cdbe4a9bd","js-jquery-3.3.1-8c84fdfa715ddd833b67b8a90ef47411829e61b194d5967e0699193776231e76","primitive-0.8.0.0-621aca8de1dc201eec4f41917b8b5a6a9b9074831d6e26b48d3157f27593d2cb","process-1.6.16.0","random-1.2.1.1-dbffd18a055fbf1c5ccdc18dddc6a7070869702691c237f3c9fec60b9a349e21","time-1.12.2","transformers-0.5.6.2","unix-2.7.3","unordered-containers-0.2.19.1-2dec9e8b7cc43fc729dcfa4b3cfe5ce42488c299bc0108cd6fc3f6accbd109ce","utf8-string-1.0.2-ecbcc42d461fefe46d60189b7229cddccce61f9cc8c90c79b2546be729015263"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"shake-0.19.7-e-shake-58a8239f06abe2b027b3d505240dffcac7bbaa4718579418aa458c0ac50d8beb","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.17.0.0","binary-0.8.9.1","bytestring-0.11.3.1","deepseq-1.4.8.0","directory-1.3.7.1","extra-1.7.12-ed96143baca6959ac781d058b4532253a1a26d733ef4adb0a1321df73f5180d9","filepath-1.4.2.2","filepattern-0.1.3-3209dee43b8f78099b7623a80834f0944d05b5c63e74e5607c738100e0aeefb7","hashable-1.4.2.0-8b24e015b5994215b529553ebf9f53466f24b616595cb02efad3ae8f6f6c1898","heaps-0.4-7a6066160342ac2a9ea4aec008f23eb9d92ad7a8c8d2e78cbeed667d8096912c","js-dgtable-0.5.2-b37805c8ad3dc85830c773ec5da0d4cdfd56a534a3f6acb334c4517b737e5cb1","js-flot-0.8.3-65df5b8c3953095207aa8a04d9d37d07aed474c73133bf9239df4e5cdbe4a9bd","js-jquery-3.3.1-8c84fdfa715ddd833b67b8a90ef47411829e61b194d5967e0699193776231e76","primitive-0.8.0.0-621aca8de1dc201eec4f41917b8b5a6a9b9074831d6e26b48d3157f27593d2cb","process-1.6.16.0","random-1.2.1.1-dbffd18a055fbf1c5ccdc18dddc6a7070869702691c237f3c9fec60b9a349e21","time-1.12.2","transformers-0.5.6.2","unix-2.7.3","unordered-containers-0.2.19.1-2dec9e8b7cc43fc729dcfa4b3cfe5ce42488c299bc0108cd6fc3f6accbd109ce","utf8-string-1.0.2-ecbcc42d461fefe46d60189b7229cddccce61f9cc8c90c79b2546be729015263"],"exe-depends":[],"component-name":"exe:shake","bin-file":"/home/matt/.cabal/store/ghc-9.4.4/shake-0.19.7-e-shake-58a8239f06abe2b027b3d505240dffcac7bbaa4718579418aa458c0ac50d8beb/bin/shake"},{"type":"configured","id":"splitmix-0.1.0.4-d4d340dc5b93e4aadb6f0ee62f239d1f28fbadeae3c81529c67f4df279c3cae7","pkg-name":"splitmix","pkg-version":"0.1.0.4","flags":{"optimised-mixer":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"db25c2e17967aa6b6046ab8b1b96ba3f344ca59a62b60fb6113d51ea305a3d8e","pkg-src-sha256":"6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa","depends":["base-4.17.0.0","deepseq-1.4.8.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"template-haskell-2.19.0.0","pkg-name":"template-haskell","pkg-version":"2.19.0.0","depends":["base-4.17.0.0","ghc-boot-th-9.4.4","ghc-prim-0.9.0","pretty-1.1.3.6"]},{"type":"pre-existing","id":"text-2.0.1","pkg-name":"text","pkg-version":"2.0.1","depends":["array-0.5.4.0","base-4.17.0.0","binary-0.8.9.1","bytestring-0.11.3.1","deepseq-1.4.8.0","ghc-prim-0.9.0","template-haskell-2.19.0.0"]},{"type":"pre-existing","id":"time-1.12.2","pkg-name":"time","pkg-version":"1.12.2","depends":["base-4.17.0.0","deepseq-1.4.8.0"]},{"type":"pre-existing","id":"transformers-0.5.6.2","pkg-name":"transformers","pkg-version":"0.5.6.2","depends":["base-4.17.0.0"]},{"type":"pre-existing","id":"unix-2.7.3","pkg-name":"unix","pkg-version":"2.7.3","depends":["base-4.17.0.0","bytestring-0.11.3.1","time-1.12.2"]},{"type":"configured","id":"unordered-containers-0.2.19.1-2dec9e8b7cc43fc729dcfa4b3cfe5ce42488c299bc0108cd6fc3f6accbd109ce","pkg-name":"unordered-containers","pkg-version":"0.2.19.1","flags":{"debug":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"9ad8972c2e913c37b1d4f0e1261517fd7a1b8c8a58077e057be69837e3dbaa00","pkg-src-sha256":"1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2","depends":["base-4.17.0.0","deepseq-1.4.8.0","hashable-1.4.2.0-8b24e015b5994215b529553ebf9f53466f24b616595cb02efad3ae8f6f6c1898","template-haskell-2.19.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"utf8-string-1.0.2-ecbcc42d461fefe46d60189b7229cddccce61f9cc8c90c79b2546be729015263","pkg-name":"utf8-string","pkg-version":"1.0.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"79416292186feeaf1f60e49ac5a1ffae9bf1b120e040a74bf0e81ca7f1d31d3f","pkg-src-sha256":"ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a","depends":["base-4.17.0.0","bytestring-0.11.3.1"],"exe-depends":[],"component-name":"lib"}]} \ No newline at end of file
diff --git a/hadrian/bootstrap/plan-9_6_1.json b/hadrian/bootstrap/plan-9_6_1.json
index b3554e129b..4f3eeb7f37 100644
--- a/hadrian/bootstrap/plan-9_6_1.json
+++ b/hadrian/bootstrap/plan-9_6_1.json
@@ -1 +1 @@
-{"cabal-version":"3.8.1.0","cabal-lib-version":"3.8.1.0","compiler-id":"ghc-9.6.1","os":"linux","arch":"x86_64","install-plan":[{"type":"configured","id":"Cabal-3.8.1.0-372ffc7841ab6b7a5b1b38fc4fa05a1def6d41a4a28a05b6b16412d8d03e6fd6","pkg-name":"Cabal","pkg-version":"3.8.1.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"77121d8e1aff14a0fd95684b751599db78a7dd26d55862d9fcef27c88b193e9d","pkg-src-sha256":"7464cbe6c2f3d7e5d0232023a1a7330621f8b24853cb259fc89a2af85b736608","depends":["Cabal-syntax-3.8.1.0-3ca25e89601c18bd49019a3d1e19420c47007f095f586f14636917297c1fc62a","array-0.5.5.0","base-4.18.0.0","bytestring-0.11.4.0","containers-0.6.7","deepseq-1.4.8.1","directory-1.3.8.1","filepath-1.4.100.1","mtl-2.3.1","parsec-3.1.16.1","pretty-1.1.3.6","process-1.6.17.0","text-2.0.2","time-1.12.2","transformers-0.6.1.0","unix-2.8.1.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"Cabal-syntax-3.8.1.0-3ca25e89601c18bd49019a3d1e19420c47007f095f586f14636917297c1fc62a","pkg-name":"Cabal-syntax","pkg-version":"3.8.1.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"ed2d937ba6c6a20b75850349eedd41374885fc42369ef152d69e2ba70f44f593","pkg-src-sha256":"07e8ddb19fe01781485f1522b6afc22aba680b0ab28ebe6bbfb84a2dd698ce0f","depends":["array-0.5.5.0","base-4.18.0.0","binary-0.8.9.1","bytestring-0.11.4.0","containers-0.6.7","deepseq-1.4.8.1","directory-1.3.8.1","filepath-1.4.100.1","mtl-2.3.1","parsec-3.1.16.1","pretty-1.1.3.6","text-2.0.2","time-1.12.2","transformers-0.6.1.0","unix-2.8.1.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"QuickCheck-2.14.2-48f73357a0d5467607535cbb21ac8449b28303ff215af7e947416e6a4ef4195f","pkg-name":"QuickCheck","pkg-version":"2.14.2","flags":{"old-random":false,"templatehaskell":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4ce29211223d5e6620ebceba34a3ca9ccf1c10c0cf387d48aea45599222ee5aa","pkg-src-sha256":"d87b6c85696b601175274361fa62217894401e401e150c3c5d4013ac53cd36f3","depends":["base-4.18.0.0","containers-0.6.7","deepseq-1.4.8.1","random-1.2.1.1-2344f66ad3296b3c8c64d0fbe5a1dc8799adc0c02f28ef27b3d8bcb93f71e8f6","splitmix-0.1.0.4-d2df76b90c23066708f4e66aade172a985bb07c1ccf613221011d8827c32f89b","template-haskell-2.20.0.0","transformers-0.6.1.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"array-0.5.5.0","pkg-name":"array","pkg-version":"0.5.5.0","depends":["base-4.18.0.0"]},{"type":"pre-existing","id":"base-4.18.0.0","pkg-name":"base","pkg-version":"4.18.0.0","depends":["ghc-bignum-1.3","ghc-prim-0.10.0","rts-1.0.2"]},{"type":"pre-existing","id":"binary-0.8.9.1","pkg-name":"binary","pkg-version":"0.8.9.1","depends":["array-0.5.5.0","base-4.18.0.0","bytestring-0.11.4.0","containers-0.6.7"]},{"type":"pre-existing","id":"bytestring-0.11.4.0","pkg-name":"bytestring","pkg-version":"0.11.4.0","depends":["base-4.18.0.0","deepseq-1.4.8.1","ghc-prim-0.10.0","template-haskell-2.20.0.0"]},{"type":"configured","id":"clock-0.8.3-309549353d285d82eaa6ef36502628671b62ca2d2fb6284260bd7679d5e7b9a3","pkg-name":"clock","pkg-version":"0.8.3","flags":{"llvm":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c","pkg-src-sha256":"845ce5db4c98cefd517323e005f87effceff886987305e421c4ef616dc0505d1","depends":["base-4.18.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"containers-0.6.7","pkg-name":"containers","pkg-version":"0.6.7","depends":["array-0.5.5.0","base-4.18.0.0","deepseq-1.4.8.1","template-haskell-2.20.0.0"]},{"type":"pre-existing","id":"deepseq-1.4.8.1","pkg-name":"deepseq","pkg-version":"1.4.8.1","depends":["array-0.5.5.0","base-4.18.0.0","ghc-prim-0.10.0"]},{"type":"pre-existing","id":"directory-1.3.8.1","pkg-name":"directory","pkg-version":"1.3.8.1","depends":["base-4.18.0.0","filepath-1.4.100.1","time-1.12.2","unix-2.8.1.0"]},{"type":"pre-existing","id":"exceptions-0.10.7","pkg-name":"exceptions","pkg-version":"0.10.7","depends":["base-4.18.0.0","mtl-2.3.1","stm-2.5.1.0","template-haskell-2.20.0.0","transformers-0.6.1.0"]},{"type":"configured","id":"extra-1.7.12-3ff76dca5298f0150cab13d98558cc454778c8488bbe7ff495cf22dd8ce1fbac","pkg-name":"extra","pkg-version":"1.7.12","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3ac58d7341976173d1052e7b2837d119212d9afcf911735667c7f1ab67aec25f","pkg-src-sha256":"e571a9ec1d8865f0fbb0e0ba1eb575f783b0365c80db19b54a93600bae43b03c","depends":["base-4.18.0.0","clock-0.8.3-309549353d285d82eaa6ef36502628671b62ca2d2fb6284260bd7679d5e7b9a3","directory-1.3.8.1","filepath-1.4.100.1","process-1.6.17.0","time-1.12.2","unix-2.8.1.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"filepath-1.4.100.1","pkg-name":"filepath","pkg-version":"1.4.100.1","depends":["base-4.18.0.0","bytestring-0.11.4.0","deepseq-1.4.8.1","exceptions-0.10.7","template-haskell-2.20.0.0"]},{"type":"configured","id":"filepattern-0.1.3-27d278e9a17a55f9f951233d92fa6c79dfb3359757c1c3d71c29c72a1563a990","pkg-name":"filepattern","pkg-version":"0.1.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"372c1733d83b90045eb29da9f010fed79bfef8771ce65eb126a1d83ecc54a9a2","pkg-src-sha256":"cc445d439ea2f65cac7604d3578aa2c3a62e5a91dc989f4ce5b3390db9e59636","depends":["base-4.18.0.0","directory-1.3.8.1","extra-1.7.12-3ff76dca5298f0150cab13d98558cc454778c8488bbe7ff495cf22dd8ce1fbac","filepath-1.4.100.1"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"ghc-bignum-1.3","pkg-name":"ghc-bignum","pkg-version":"1.3","depends":["ghc-prim-0.10.0"]},{"type":"pre-existing","id":"ghc-boot-th-9.6.1","pkg-name":"ghc-boot-th","pkg-version":"9.6.1","depends":["base-4.18.0.0"]},{"type":"pre-existing","id":"ghc-prim-0.10.0","pkg-name":"ghc-prim","pkg-version":"0.10.0","depends":["rts-1.0.2"]},{"type":"configured","id":"hadrian-0.1.0.0-inplace-hadrian","pkg-name":"hadrian","pkg-version":"0.1.0.0","flags":{"selftest":true,"threaded":true},"style":"local","pkg-src":{"type":"local","path":"/home/matt/ghc-scratch/hadrian/."},"dist-dir":"/home/matt/ghc-scratch/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.6.1/hadrian-0.1.0.0/x/hadrian","build-info":"/home/matt/ghc-scratch/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.6.1/hadrian-0.1.0.0/x/hadrian/build-info.json","depends":["Cabal-3.8.1.0-372ffc7841ab6b7a5b1b38fc4fa05a1def6d41a4a28a05b6b16412d8d03e6fd6","QuickCheck-2.14.2-48f73357a0d5467607535cbb21ac8449b28303ff215af7e947416e6a4ef4195f","base-4.18.0.0","bytestring-0.11.4.0","containers-0.6.7","directory-1.3.8.1","extra-1.7.12-3ff76dca5298f0150cab13d98558cc454778c8488bbe7ff495cf22dd8ce1fbac","filepath-1.4.100.1","mtl-2.3.1","parsec-3.1.16.1","shake-0.19.7-5a9ab582f15d6b877ed307ed78deca9e9f66793b09ed98bacc612e42b1e9bb49","text-2.0.2","time-1.12.2","transformers-0.6.1.0","unordered-containers-0.2.19.1-dd696ab9b62a991ef164b9913b3122a7c8f7f5556a841af32aff1e29cd73ef99"],"exe-depends":[],"component-name":"exe:hadrian","bin-file":"/home/matt/ghc-scratch/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.6.1/hadrian-0.1.0.0/x/hadrian/build/hadrian/hadrian"},{"type":"configured","id":"hashable-1.4.2.0-0889edbce65a4fa263d1b820b2b8d69eaa1dc95475dff3c60f82e860064fa7d4","pkg-name":"hashable","pkg-version":"1.4.2.0","flags":{"integer-gmp":true,"random-initial-seed":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"585792335d5541dba78fa8dfcb291a89cd5812a281825ff7a44afa296ab5d58a","pkg-src-sha256":"1b4000ea82b81f69d46d0af4152c10c6303873510738e24cfc4767760d30e3f8","depends":["base-4.18.0.0","bytestring-0.11.4.0","containers-0.6.7","deepseq-1.4.8.1","filepath-1.4.100.1","ghc-bignum-1.3","ghc-prim-0.10.0","text-2.0.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"heaps-0.4-84f785fa326505d8cac138316c7ca1fae826bac79403765826b5e0e8b4ca6459","pkg-name":"heaps","pkg-version":"0.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"66b19fcd813b0e4db3e0bac541bd46606c3b13d3d081d9f9666f4be0f5ff14b8","pkg-src-sha256":"89329df8b95ae99ef272e41e7a2d0fe2f1bb7eacfcc34bc01664414b33067cfd","depends":["base-4.18.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-dgtable-0.5.2-929f5bb1639fd2d41e313c57e9a1322999779829eab0b2562697ea02d35cb572","pkg-name":"js-dgtable","pkg-version":"0.5.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f75cb4fa53c88c65794becdd48eb0d3b2b8abd89a3d5c19e87af91f5225c15e4","pkg-src-sha256":"e28dd65bee8083b17210134e22e01c6349dc33c3b7bd17705973cd014e9f20ac","depends":["base-4.18.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-flot-0.8.3-6ef19e2feb165ecbdc5faf2cc57c67ac671129ac8bfa15f49d808e2c55182e5a","pkg-name":"js-flot","pkg-version":"0.8.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4c1c447a9a2fba0adba6d30678302a30c32b9dfde9e7aa9e9156483e1545096d","pkg-src-sha256":"1ba2f2a6b8d85da76c41f526c98903cbb107f8642e506c072c1e7e3c20fe5e7a","depends":["base-4.18.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-jquery-3.3.1-7aa226a6aaf4a0a4ab8c2edaf9ce49229001fbdf5d86e863b4c2ece60a4532ed","pkg-name":"js-jquery","pkg-version":"3.3.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"59ab6c79159549ef94b584abce8e6d3b336014c2cce1337b59a8f637e2856df5","pkg-src-sha256":"e0e0681f0da1130ede4e03a051630ea439c458cb97216cdb01771ebdbe44069b","depends":["base-4.18.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"mtl-2.3.1","pkg-name":"mtl","pkg-version":"2.3.1","depends":["base-4.18.0.0","transformers-0.6.1.0"]},{"type":"pre-existing","id":"parsec-3.1.16.1","pkg-name":"parsec","pkg-version":"3.1.16.1","depends":["base-4.18.0.0","bytestring-0.11.4.0","mtl-2.3.1","text-2.0.2"]},{"type":"pre-existing","id":"pretty-1.1.3.6","pkg-name":"pretty","pkg-version":"1.1.3.6","depends":["base-4.18.0.0","deepseq-1.4.8.1","ghc-prim-0.10.0"]},{"type":"configured","id":"primitive-0.8.0.0-ad645076af9195e65e5c77d3a3850c7fb7f4153156656431f6be749f834f8371","pkg-name":"primitive","pkg-version":"0.8.0.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"826bf2a702a26ef87532a135808abad69d74f70ead39f26c06d034b1f0537a19","pkg-src-sha256":"5553c21b4a789f9b591eed69e598cc58484c274af29250e517b5a8bcc62b995f","depends":["base-4.18.0.0","deepseq-1.4.8.1","template-haskell-2.20.0.0","transformers-0.6.1.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"process-1.6.17.0","pkg-name":"process","pkg-version":"1.6.17.0","depends":["base-4.18.0.0","deepseq-1.4.8.1","directory-1.3.8.1","filepath-1.4.100.1","unix-2.8.1.0"]},{"type":"configured","id":"random-1.2.1.1-2344f66ad3296b3c8c64d0fbe5a1dc8799adc0c02f28ef27b3d8bcb93f71e8f6","pkg-name":"random","pkg-version":"1.2.1.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"dea1f11e5569332dc6c8efaad1cb301016a5587b6754943a49f9de08ae0e56d9","pkg-src-sha256":"3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76","depends":["base-4.18.0.0","bytestring-0.11.4.0","deepseq-1.4.8.1","mtl-2.3.1","splitmix-0.1.0.4-d2df76b90c23066708f4e66aade172a985bb07c1ccf613221011d8827c32f89b"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"rts-1.0.2","pkg-name":"rts","pkg-version":"1.0.2","depends":[]},{"type":"configured","id":"shake-0.19.7-5a9ab582f15d6b877ed307ed78deca9e9f66793b09ed98bacc612e42b1e9bb49","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.18.0.0","binary-0.8.9.1","bytestring-0.11.4.0","deepseq-1.4.8.1","directory-1.3.8.1","extra-1.7.12-3ff76dca5298f0150cab13d98558cc454778c8488bbe7ff495cf22dd8ce1fbac","filepath-1.4.100.1","filepattern-0.1.3-27d278e9a17a55f9f951233d92fa6c79dfb3359757c1c3d71c29c72a1563a990","hashable-1.4.2.0-0889edbce65a4fa263d1b820b2b8d69eaa1dc95475dff3c60f82e860064fa7d4","heaps-0.4-84f785fa326505d8cac138316c7ca1fae826bac79403765826b5e0e8b4ca6459","js-dgtable-0.5.2-929f5bb1639fd2d41e313c57e9a1322999779829eab0b2562697ea02d35cb572","js-flot-0.8.3-6ef19e2feb165ecbdc5faf2cc57c67ac671129ac8bfa15f49d808e2c55182e5a","js-jquery-3.3.1-7aa226a6aaf4a0a4ab8c2edaf9ce49229001fbdf5d86e863b4c2ece60a4532ed","primitive-0.8.0.0-ad645076af9195e65e5c77d3a3850c7fb7f4153156656431f6be749f834f8371","process-1.6.17.0","random-1.2.1.1-2344f66ad3296b3c8c64d0fbe5a1dc8799adc0c02f28ef27b3d8bcb93f71e8f6","time-1.12.2","transformers-0.6.1.0","unix-2.8.1.0","unordered-containers-0.2.19.1-dd696ab9b62a991ef164b9913b3122a7c8f7f5556a841af32aff1e29cd73ef99","utf8-string-1.0.2-721e9e04faa6601f986dacde9b25ed4ab91af08c4232b52f8ff34c6b34918053"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"shake-0.19.7-e-shake-a59c980e9cb95b2a1d37687f9ab3efd3a8e8314a00e4ca7fb819044d23198462","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.18.0.0","binary-0.8.9.1","bytestring-0.11.4.0","deepseq-1.4.8.1","directory-1.3.8.1","extra-1.7.12-3ff76dca5298f0150cab13d98558cc454778c8488bbe7ff495cf22dd8ce1fbac","filepath-1.4.100.1","filepattern-0.1.3-27d278e9a17a55f9f951233d92fa6c79dfb3359757c1c3d71c29c72a1563a990","hashable-1.4.2.0-0889edbce65a4fa263d1b820b2b8d69eaa1dc95475dff3c60f82e860064fa7d4","heaps-0.4-84f785fa326505d8cac138316c7ca1fae826bac79403765826b5e0e8b4ca6459","js-dgtable-0.5.2-929f5bb1639fd2d41e313c57e9a1322999779829eab0b2562697ea02d35cb572","js-flot-0.8.3-6ef19e2feb165ecbdc5faf2cc57c67ac671129ac8bfa15f49d808e2c55182e5a","js-jquery-3.3.1-7aa226a6aaf4a0a4ab8c2edaf9ce49229001fbdf5d86e863b4c2ece60a4532ed","primitive-0.8.0.0-ad645076af9195e65e5c77d3a3850c7fb7f4153156656431f6be749f834f8371","process-1.6.17.0","random-1.2.1.1-2344f66ad3296b3c8c64d0fbe5a1dc8799adc0c02f28ef27b3d8bcb93f71e8f6","time-1.12.2","transformers-0.6.1.0","unix-2.8.1.0","unordered-containers-0.2.19.1-dd696ab9b62a991ef164b9913b3122a7c8f7f5556a841af32aff1e29cd73ef99","utf8-string-1.0.2-721e9e04faa6601f986dacde9b25ed4ab91af08c4232b52f8ff34c6b34918053"],"exe-depends":[],"component-name":"exe:shake","bin-file":"/home/matt/.cabal/store/ghc-9.6.1/shake-0.19.7-e-shake-a59c980e9cb95b2a1d37687f9ab3efd3a8e8314a00e4ca7fb819044d23198462/bin/shake"},{"type":"configured","id":"splitmix-0.1.0.4-d2df76b90c23066708f4e66aade172a985bb07c1ccf613221011d8827c32f89b","pkg-name":"splitmix","pkg-version":"0.1.0.4","flags":{"optimised-mixer":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"db25c2e17967aa6b6046ab8b1b96ba3f344ca59a62b60fb6113d51ea305a3d8e","pkg-src-sha256":"6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa","depends":["base-4.18.0.0","deepseq-1.4.8.1"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"stm-2.5.1.0","pkg-name":"stm","pkg-version":"2.5.1.0","depends":["array-0.5.5.0","base-4.18.0.0"]},{"type":"pre-existing","id":"template-haskell-2.20.0.0","pkg-name":"template-haskell","pkg-version":"2.20.0.0","depends":["base-4.18.0.0","ghc-boot-th-9.6.1","ghc-prim-0.10.0","pretty-1.1.3.6"]},{"type":"pre-existing","id":"text-2.0.2","pkg-name":"text","pkg-version":"2.0.2","depends":["array-0.5.5.0","base-4.18.0.0","binary-0.8.9.1","bytestring-0.11.4.0","deepseq-1.4.8.1","ghc-prim-0.10.0","template-haskell-2.20.0.0"]},{"type":"pre-existing","id":"time-1.12.2","pkg-name":"time","pkg-version":"1.12.2","depends":["base-4.18.0.0","deepseq-1.4.8.1"]},{"type":"pre-existing","id":"transformers-0.6.1.0","pkg-name":"transformers","pkg-version":"0.6.1.0","depends":["base-4.18.0.0"]},{"type":"pre-existing","id":"unix-2.8.1.0","pkg-name":"unix","pkg-version":"2.8.1.0","depends":["base-4.18.0.0","bytestring-0.11.4.0","filepath-1.4.100.1","time-1.12.2"]},{"type":"configured","id":"unordered-containers-0.2.19.1-dd696ab9b62a991ef164b9913b3122a7c8f7f5556a841af32aff1e29cd73ef99","pkg-name":"unordered-containers","pkg-version":"0.2.19.1","flags":{"debug":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"9ad8972c2e913c37b1d4f0e1261517fd7a1b8c8a58077e057be69837e3dbaa00","pkg-src-sha256":"1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2","depends":["base-4.18.0.0","deepseq-1.4.8.1","hashable-1.4.2.0-0889edbce65a4fa263d1b820b2b8d69eaa1dc95475dff3c60f82e860064fa7d4","template-haskell-2.20.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"utf8-string-1.0.2-721e9e04faa6601f986dacde9b25ed4ab91af08c4232b52f8ff34c6b34918053","pkg-name":"utf8-string","pkg-version":"1.0.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"79416292186feeaf1f60e49ac5a1ffae9bf1b120e040a74bf0e81ca7f1d31d3f","pkg-src-sha256":"ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a","depends":["base-4.18.0.0","bytestring-0.11.4.0"],"exe-depends":[],"component-name":"lib"}]} \ No newline at end of file
+{"cabal-version":"3.8.1.0","cabal-lib-version":"3.8.1.0","compiler-id":"ghc-9.6.1","os":"linux","arch":"x86_64","install-plan":[{"type":"configured","id":"Cabal-3.8.1.0-372ffc7841ab6b7a5b1b38fc4fa05a1def6d41a4a28a05b6b16412d8d03e6fd6","pkg-name":"Cabal","pkg-version":"3.8.1.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"77121d8e1aff14a0fd95684b751599db78a7dd26d55862d9fcef27c88b193e9d","pkg-src-sha256":"7464cbe6c2f3d7e5d0232023a1a7330621f8b24853cb259fc89a2af85b736608","depends":["Cabal-syntax-3.8.1.0-3ca25e89601c18bd49019a3d1e19420c47007f095f586f14636917297c1fc62a","array-0.5.5.0","base-4.18.0.0","bytestring-0.11.4.0","containers-0.6.7","deepseq-1.4.8.1","directory-1.3.8.1","filepath-1.4.100.1","mtl-2.3.1","parsec-3.1.16.1","pretty-1.1.3.6","process-1.6.17.0","text-2.0.2","time-1.12.2","transformers-0.6.1.0","unix-2.8.1.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"Cabal-syntax-3.8.1.0-3ca25e89601c18bd49019a3d1e19420c47007f095f586f14636917297c1fc62a","pkg-name":"Cabal-syntax","pkg-version":"3.8.1.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"ed2d937ba6c6a20b75850349eedd41374885fc42369ef152d69e2ba70f44f593","pkg-src-sha256":"07e8ddb19fe01781485f1522b6afc22aba680b0ab28ebe6bbfb84a2dd698ce0f","depends":["array-0.5.5.0","base-4.18.0.0","binary-0.8.9.1","bytestring-0.11.4.0","containers-0.6.7","deepseq-1.4.8.1","directory-1.3.8.1","filepath-1.4.100.1","mtl-2.3.1","parsec-3.1.16.1","pretty-1.1.3.6","text-2.0.2","time-1.12.2","transformers-0.6.1.0","unix-2.8.1.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"QuickCheck-2.14.2-48f73357a0d5467607535cbb21ac8449b28303ff215af7e947416e6a4ef4195f","pkg-name":"QuickCheck","pkg-version":"2.14.2","flags":{"old-random":false,"templatehaskell":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4ce29211223d5e6620ebceba34a3ca9ccf1c10c0cf387d48aea45599222ee5aa","pkg-src-sha256":"d87b6c85696b601175274361fa62217894401e401e150c3c5d4013ac53cd36f3","depends":["base-4.18.0.0","containers-0.6.7","deepseq-1.4.8.1","random-1.2.1.1-2344f66ad3296b3c8c64d0fbe5a1dc8799adc0c02f28ef27b3d8bcb93f71e8f6","splitmix-0.1.0.4-d2df76b90c23066708f4e66aade172a985bb07c1ccf613221011d8827c32f89b","template-haskell-2.20.0.0","transformers-0.6.1.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"array-0.5.5.0","pkg-name":"array","pkg-version":"0.5.5.0","depends":["base-4.18.0.0"]},{"type":"pre-existing","id":"base-4.18.0.0","pkg-name":"base","pkg-version":"4.18.0.0","depends":["ghc-bignum-1.3","ghc-prim-0.10.0","rts-1.0.2"]},{"type":"configured","id":"base16-bytestring-1.0.2.0-b5940c21a059d328169082a7bf03f08fec9ea9cb300f6de1499ec2087f455bc8","pkg-name":"base16-bytestring","pkg-version":"1.0.2.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"64abad7816ab8cabed8489e29f807b3a6f828e0b2cec0eae404323d69d36df9a","pkg-src-sha256":"1d5a91143ef0e22157536093ec8e59d226a68220ec89378d5dcaeea86472c784","depends":["base-4.18.0.0","bytestring-0.11.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"binary-0.8.9.1","pkg-name":"binary","pkg-version":"0.8.9.1","depends":["array-0.5.5.0","base-4.18.0.0","bytestring-0.11.4.0","containers-0.6.7"]},{"type":"pre-existing","id":"bytestring-0.11.4.0","pkg-name":"bytestring","pkg-version":"0.11.4.0","depends":["base-4.18.0.0","deepseq-1.4.8.1","ghc-prim-0.10.0","template-haskell-2.20.0.0"]},{"type":"configured","id":"clock-0.8.3-309549353d285d82eaa6ef36502628671b62ca2d2fb6284260bd7679d5e7b9a3","pkg-name":"clock","pkg-version":"0.8.3","flags":{"llvm":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c","pkg-src-sha256":"845ce5db4c98cefd517323e005f87effceff886987305e421c4ef616dc0505d1","depends":["base-4.18.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"containers-0.6.7","pkg-name":"containers","pkg-version":"0.6.7","depends":["array-0.5.5.0","base-4.18.0.0","deepseq-1.4.8.1","template-haskell-2.20.0.0"]},{"type":"configured","id":"cryptohash-sha256-0.11.102.1-9d310921383dbec51b2f6fa686c9d99cfd3bb977a8eff016b53bb33c86c941e0","pkg-name":"cryptohash-sha256","pkg-version":"0.11.102.1","flags":{"exe":false,"use-cbits":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"72ce9095872eae653addca5f412ac8070d6282d8e1c8578c2237c33f2cbbf4bc","pkg-src-sha256":"73a7dc7163871a80837495039a099967b11f5c4fe70a118277842f7a713c6bf6","depends":["base-4.18.0.0","bytestring-0.11.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"deepseq-1.4.8.1","pkg-name":"deepseq","pkg-version":"1.4.8.1","depends":["array-0.5.5.0","base-4.18.0.0","ghc-prim-0.10.0"]},{"type":"pre-existing","id":"directory-1.3.8.1","pkg-name":"directory","pkg-version":"1.3.8.1","depends":["base-4.18.0.0","filepath-1.4.100.1","time-1.12.2","unix-2.8.1.0"]},{"type":"pre-existing","id":"exceptions-0.10.7","pkg-name":"exceptions","pkg-version":"0.10.7","depends":["base-4.18.0.0","mtl-2.3.1","stm-2.5.1.0","template-haskell-2.20.0.0","transformers-0.6.1.0"]},{"type":"configured","id":"extra-1.7.12-3ff76dca5298f0150cab13d98558cc454778c8488bbe7ff495cf22dd8ce1fbac","pkg-name":"extra","pkg-version":"1.7.12","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3ac58d7341976173d1052e7b2837d119212d9afcf911735667c7f1ab67aec25f","pkg-src-sha256":"e571a9ec1d8865f0fbb0e0ba1eb575f783b0365c80db19b54a93600bae43b03c","depends":["base-4.18.0.0","clock-0.8.3-309549353d285d82eaa6ef36502628671b62ca2d2fb6284260bd7679d5e7b9a3","directory-1.3.8.1","filepath-1.4.100.1","process-1.6.17.0","time-1.12.2","unix-2.8.1.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"filepath-1.4.100.1","pkg-name":"filepath","pkg-version":"1.4.100.1","depends":["base-4.18.0.0","bytestring-0.11.4.0","deepseq-1.4.8.1","exceptions-0.10.7","template-haskell-2.20.0.0"]},{"type":"configured","id":"filepattern-0.1.3-27d278e9a17a55f9f951233d92fa6c79dfb3359757c1c3d71c29c72a1563a990","pkg-name":"filepattern","pkg-version":"0.1.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"372c1733d83b90045eb29da9f010fed79bfef8771ce65eb126a1d83ecc54a9a2","pkg-src-sha256":"cc445d439ea2f65cac7604d3578aa2c3a62e5a91dc989f4ce5b3390db9e59636","depends":["base-4.18.0.0","directory-1.3.8.1","extra-1.7.12-3ff76dca5298f0150cab13d98558cc454778c8488bbe7ff495cf22dd8ce1fbac","filepath-1.4.100.1"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"ghc-bignum-1.3","pkg-name":"ghc-bignum","pkg-version":"1.3","depends":["ghc-prim-0.10.0"]},{"type":"pre-existing","id":"ghc-boot-th-9.6.1","pkg-name":"ghc-boot-th","pkg-version":"9.6.1","depends":["base-4.18.0.0"]},{"type":"pre-existing","id":"ghc-prim-0.10.0","pkg-name":"ghc-prim","pkg-version":"0.10.0","depends":["rts-1.0.2"]},{"type":"configured","id":"hadrian-0.1.0.0-inplace-hadrian","pkg-name":"hadrian","pkg-version":"0.1.0.0","flags":{"selftest":true,"threaded":true},"style":"local","pkg-src":{"type":"local","path":"/home/matt/ghc-rodrigo/hadrian/."},"dist-dir":"/home/matt/ghc-rodrigo/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.6.1/hadrian-0.1.0.0/x/hadrian","build-info":"/home/matt/ghc-rodrigo/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.6.1/hadrian-0.1.0.0/x/hadrian/build-info.json","depends":["Cabal-3.8.1.0-372ffc7841ab6b7a5b1b38fc4fa05a1def6d41a4a28a05b6b16412d8d03e6fd6","QuickCheck-2.14.2-48f73357a0d5467607535cbb21ac8449b28303ff215af7e947416e6a4ef4195f","base-4.18.0.0","base16-bytestring-1.0.2.0-b5940c21a059d328169082a7bf03f08fec9ea9cb300f6de1499ec2087f455bc8","bytestring-0.11.4.0","containers-0.6.7","cryptohash-sha256-0.11.102.1-9d310921383dbec51b2f6fa686c9d99cfd3bb977a8eff016b53bb33c86c941e0","directory-1.3.8.1","extra-1.7.12-3ff76dca5298f0150cab13d98558cc454778c8488bbe7ff495cf22dd8ce1fbac","filepath-1.4.100.1","mtl-2.3.1","parsec-3.1.16.1","shake-0.19.7-5a9ab582f15d6b877ed307ed78deca9e9f66793b09ed98bacc612e42b1e9bb49","text-2.0.2","time-1.12.2","transformers-0.6.1.0","unordered-containers-0.2.19.1-dd696ab9b62a991ef164b9913b3122a7c8f7f5556a841af32aff1e29cd73ef99"],"exe-depends":[],"component-name":"exe:hadrian","bin-file":"/home/matt/ghc-rodrigo/hadrian/dist-newstyle/build/x86_64-linux/ghc-9.6.1/hadrian-0.1.0.0/x/hadrian/build/hadrian/hadrian"},{"type":"configured","id":"hashable-1.4.2.0-0889edbce65a4fa263d1b820b2b8d69eaa1dc95475dff3c60f82e860064fa7d4","pkg-name":"hashable","pkg-version":"1.4.2.0","flags":{"integer-gmp":true,"random-initial-seed":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"585792335d5541dba78fa8dfcb291a89cd5812a281825ff7a44afa296ab5d58a","pkg-src-sha256":"1b4000ea82b81f69d46d0af4152c10c6303873510738e24cfc4767760d30e3f8","depends":["base-4.18.0.0","bytestring-0.11.4.0","containers-0.6.7","deepseq-1.4.8.1","filepath-1.4.100.1","ghc-bignum-1.3","ghc-prim-0.10.0","text-2.0.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"heaps-0.4-84f785fa326505d8cac138316c7ca1fae826bac79403765826b5e0e8b4ca6459","pkg-name":"heaps","pkg-version":"0.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"66b19fcd813b0e4db3e0bac541bd46606c3b13d3d081d9f9666f4be0f5ff14b8","pkg-src-sha256":"89329df8b95ae99ef272e41e7a2d0fe2f1bb7eacfcc34bc01664414b33067cfd","depends":["base-4.18.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-dgtable-0.5.2-929f5bb1639fd2d41e313c57e9a1322999779829eab0b2562697ea02d35cb572","pkg-name":"js-dgtable","pkg-version":"0.5.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f75cb4fa53c88c65794becdd48eb0d3b2b8abd89a3d5c19e87af91f5225c15e4","pkg-src-sha256":"e28dd65bee8083b17210134e22e01c6349dc33c3b7bd17705973cd014e9f20ac","depends":["base-4.18.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-flot-0.8.3-6ef19e2feb165ecbdc5faf2cc57c67ac671129ac8bfa15f49d808e2c55182e5a","pkg-name":"js-flot","pkg-version":"0.8.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4c1c447a9a2fba0adba6d30678302a30c32b9dfde9e7aa9e9156483e1545096d","pkg-src-sha256":"1ba2f2a6b8d85da76c41f526c98903cbb107f8642e506c072c1e7e3c20fe5e7a","depends":["base-4.18.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-jquery-3.3.1-7aa226a6aaf4a0a4ab8c2edaf9ce49229001fbdf5d86e863b4c2ece60a4532ed","pkg-name":"js-jquery","pkg-version":"3.3.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"59ab6c79159549ef94b584abce8e6d3b336014c2cce1337b59a8f637e2856df5","pkg-src-sha256":"e0e0681f0da1130ede4e03a051630ea439c458cb97216cdb01771ebdbe44069b","depends":["base-4.18.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"mtl-2.3.1","pkg-name":"mtl","pkg-version":"2.3.1","depends":["base-4.18.0.0","transformers-0.6.1.0"]},{"type":"pre-existing","id":"parsec-3.1.16.1","pkg-name":"parsec","pkg-version":"3.1.16.1","depends":["base-4.18.0.0","bytestring-0.11.4.0","mtl-2.3.1","text-2.0.2"]},{"type":"pre-existing","id":"pretty-1.1.3.6","pkg-name":"pretty","pkg-version":"1.1.3.6","depends":["base-4.18.0.0","deepseq-1.4.8.1","ghc-prim-0.10.0"]},{"type":"configured","id":"primitive-0.8.0.0-ad645076af9195e65e5c77d3a3850c7fb7f4153156656431f6be749f834f8371","pkg-name":"primitive","pkg-version":"0.8.0.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"826bf2a702a26ef87532a135808abad69d74f70ead39f26c06d034b1f0537a19","pkg-src-sha256":"5553c21b4a789f9b591eed69e598cc58484c274af29250e517b5a8bcc62b995f","depends":["base-4.18.0.0","deepseq-1.4.8.1","template-haskell-2.20.0.0","transformers-0.6.1.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"process-1.6.17.0","pkg-name":"process","pkg-version":"1.6.17.0","depends":["base-4.18.0.0","deepseq-1.4.8.1","directory-1.3.8.1","filepath-1.4.100.1","unix-2.8.1.0"]},{"type":"configured","id":"random-1.2.1.1-2344f66ad3296b3c8c64d0fbe5a1dc8799adc0c02f28ef27b3d8bcb93f71e8f6","pkg-name":"random","pkg-version":"1.2.1.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"dea1f11e5569332dc6c8efaad1cb301016a5587b6754943a49f9de08ae0e56d9","pkg-src-sha256":"3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76","depends":["base-4.18.0.0","bytestring-0.11.4.0","deepseq-1.4.8.1","mtl-2.3.1","splitmix-0.1.0.4-d2df76b90c23066708f4e66aade172a985bb07c1ccf613221011d8827c32f89b"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"rts-1.0.2","pkg-name":"rts","pkg-version":"1.0.2","depends":[]},{"type":"configured","id":"shake-0.19.7-5a9ab582f15d6b877ed307ed78deca9e9f66793b09ed98bacc612e42b1e9bb49","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.18.0.0","binary-0.8.9.1","bytestring-0.11.4.0","deepseq-1.4.8.1","directory-1.3.8.1","extra-1.7.12-3ff76dca5298f0150cab13d98558cc454778c8488bbe7ff495cf22dd8ce1fbac","filepath-1.4.100.1","filepattern-0.1.3-27d278e9a17a55f9f951233d92fa6c79dfb3359757c1c3d71c29c72a1563a990","hashable-1.4.2.0-0889edbce65a4fa263d1b820b2b8d69eaa1dc95475dff3c60f82e860064fa7d4","heaps-0.4-84f785fa326505d8cac138316c7ca1fae826bac79403765826b5e0e8b4ca6459","js-dgtable-0.5.2-929f5bb1639fd2d41e313c57e9a1322999779829eab0b2562697ea02d35cb572","js-flot-0.8.3-6ef19e2feb165ecbdc5faf2cc57c67ac671129ac8bfa15f49d808e2c55182e5a","js-jquery-3.3.1-7aa226a6aaf4a0a4ab8c2edaf9ce49229001fbdf5d86e863b4c2ece60a4532ed","primitive-0.8.0.0-ad645076af9195e65e5c77d3a3850c7fb7f4153156656431f6be749f834f8371","process-1.6.17.0","random-1.2.1.1-2344f66ad3296b3c8c64d0fbe5a1dc8799adc0c02f28ef27b3d8bcb93f71e8f6","time-1.12.2","transformers-0.6.1.0","unix-2.8.1.0","unordered-containers-0.2.19.1-dd696ab9b62a991ef164b9913b3122a7c8f7f5556a841af32aff1e29cd73ef99","utf8-string-1.0.2-721e9e04faa6601f986dacde9b25ed4ab91af08c4232b52f8ff34c6b34918053"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"shake-0.19.7-e-shake-a59c980e9cb95b2a1d37687f9ab3efd3a8e8314a00e4ca7fb819044d23198462","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.18.0.0","binary-0.8.9.1","bytestring-0.11.4.0","deepseq-1.4.8.1","directory-1.3.8.1","extra-1.7.12-3ff76dca5298f0150cab13d98558cc454778c8488bbe7ff495cf22dd8ce1fbac","filepath-1.4.100.1","filepattern-0.1.3-27d278e9a17a55f9f951233d92fa6c79dfb3359757c1c3d71c29c72a1563a990","hashable-1.4.2.0-0889edbce65a4fa263d1b820b2b8d69eaa1dc95475dff3c60f82e860064fa7d4","heaps-0.4-84f785fa326505d8cac138316c7ca1fae826bac79403765826b5e0e8b4ca6459","js-dgtable-0.5.2-929f5bb1639fd2d41e313c57e9a1322999779829eab0b2562697ea02d35cb572","js-flot-0.8.3-6ef19e2feb165ecbdc5faf2cc57c67ac671129ac8bfa15f49d808e2c55182e5a","js-jquery-3.3.1-7aa226a6aaf4a0a4ab8c2edaf9ce49229001fbdf5d86e863b4c2ece60a4532ed","primitive-0.8.0.0-ad645076af9195e65e5c77d3a3850c7fb7f4153156656431f6be749f834f8371","process-1.6.17.0","random-1.2.1.1-2344f66ad3296b3c8c64d0fbe5a1dc8799adc0c02f28ef27b3d8bcb93f71e8f6","time-1.12.2","transformers-0.6.1.0","unix-2.8.1.0","unordered-containers-0.2.19.1-dd696ab9b62a991ef164b9913b3122a7c8f7f5556a841af32aff1e29cd73ef99","utf8-string-1.0.2-721e9e04faa6601f986dacde9b25ed4ab91af08c4232b52f8ff34c6b34918053"],"exe-depends":[],"component-name":"exe:shake","bin-file":"/home/matt/.cabal/store/ghc-9.6.1/shake-0.19.7-e-shake-a59c980e9cb95b2a1d37687f9ab3efd3a8e8314a00e4ca7fb819044d23198462/bin/shake"},{"type":"configured","id":"splitmix-0.1.0.4-d2df76b90c23066708f4e66aade172a985bb07c1ccf613221011d8827c32f89b","pkg-name":"splitmix","pkg-version":"0.1.0.4","flags":{"optimised-mixer":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"db25c2e17967aa6b6046ab8b1b96ba3f344ca59a62b60fb6113d51ea305a3d8e","pkg-src-sha256":"6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa","depends":["base-4.18.0.0","deepseq-1.4.8.1"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"stm-2.5.1.0","pkg-name":"stm","pkg-version":"2.5.1.0","depends":["array-0.5.5.0","base-4.18.0.0"]},{"type":"pre-existing","id":"template-haskell-2.20.0.0","pkg-name":"template-haskell","pkg-version":"2.20.0.0","depends":["base-4.18.0.0","ghc-boot-th-9.6.1","ghc-prim-0.10.0","pretty-1.1.3.6"]},{"type":"pre-existing","id":"text-2.0.2","pkg-name":"text","pkg-version":"2.0.2","depends":["array-0.5.5.0","base-4.18.0.0","binary-0.8.9.1","bytestring-0.11.4.0","deepseq-1.4.8.1","ghc-prim-0.10.0","template-haskell-2.20.0.0"]},{"type":"pre-existing","id":"time-1.12.2","pkg-name":"time","pkg-version":"1.12.2","depends":["base-4.18.0.0","deepseq-1.4.8.1"]},{"type":"pre-existing","id":"transformers-0.6.1.0","pkg-name":"transformers","pkg-version":"0.6.1.0","depends":["base-4.18.0.0"]},{"type":"pre-existing","id":"unix-2.8.1.0","pkg-name":"unix","pkg-version":"2.8.1.0","depends":["base-4.18.0.0","bytestring-0.11.4.0","filepath-1.4.100.1","time-1.12.2"]},{"type":"configured","id":"unordered-containers-0.2.19.1-dd696ab9b62a991ef164b9913b3122a7c8f7f5556a841af32aff1e29cd73ef99","pkg-name":"unordered-containers","pkg-version":"0.2.19.1","flags":{"debug":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"9ad8972c2e913c37b1d4f0e1261517fd7a1b8c8a58077e057be69837e3dbaa00","pkg-src-sha256":"1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2","depends":["base-4.18.0.0","deepseq-1.4.8.1","hashable-1.4.2.0-0889edbce65a4fa263d1b820b2b8d69eaa1dc95475dff3c60f82e860064fa7d4","template-haskell-2.20.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"utf8-string-1.0.2-721e9e04faa6601f986dacde9b25ed4ab91af08c4232b52f8ff34c6b34918053","pkg-name":"utf8-string","pkg-version":"1.0.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"79416292186feeaf1f60e49ac5a1ffae9bf1b120e040a74bf0e81ca7f1d31d3f","pkg-src-sha256":"ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a","depends":["base-4.18.0.0","bytestring-0.11.4.0"],"exe-depends":[],"component-name":"lib"}]} \ No newline at end of file
diff --git a/hadrian/bootstrap/plan-bootstrap-9_2_1.json b/hadrian/bootstrap/plan-bootstrap-9_2_1.json
index 14bbc28ecc..5dedb0dced 100644
--- a/hadrian/bootstrap/plan-bootstrap-9_2_1.json
+++ b/hadrian/bootstrap/plan-bootstrap-9_2_1.json
@@ -6,91 +6,113 @@
},
{
"package": "ghc-prim",
- "version": "0.8.0"
+ "version": "0.10.0"
},
{
"package": "ghc-bignum",
- "version": "1.2"
+ "version": "1.3"
},
{
"package": "base",
- "version": "4.16.0.0"
+ "version": "4.18.0.0"
},
{
"package": "array",
- "version": "0.5.4.0"
+ "version": "0.5.5.0"
},
{
"package": "deepseq",
- "version": "1.4.6.0"
+ "version": "1.4.8.1"
+ },
+ {
+ "package": "ghc-boot-th",
+ "version": "9.6.1"
+ },
+ {
+ "package": "pretty",
+ "version": "1.1.3.6"
+ },
+ {
+ "package": "template-haskell",
+ "version": "2.20.0.0"
},
{
"package": "bytestring",
- "version": "0.11.1.0"
+ "version": "0.11.4.0"
},
{
"package": "containers",
- "version": "0.6.5.1"
+ "version": "0.6.7"
},
{
"package": "binary",
- "version": "0.8.9.0"
- },
- {
- "package": "filepath",
- "version": "1.4.2.1"
+ "version": "0.8.9.1"
},
{
- "package": "time",
- "version": "1.11.1.1"
+ "package": "transformers",
+ "version": "0.6.1.0"
},
{
- "package": "unix",
- "version": "2.7.2.2"
+ "package": "mtl",
+ "version": "2.3.1"
},
{
- "package": "directory",
- "version": "1.3.6.2"
+ "package": "stm",
+ "version": "2.5.1.0"
},
{
- "package": "transformers",
- "version": "0.5.6.2"
+ "package": "exceptions",
+ "version": "0.10.7"
},
{
- "package": "mtl",
- "version": "2.2.2"
+ "package": "filepath",
+ "version": "1.4.100.1"
},
{
- "package": "ghc-boot-th",
- "version": "9.2.1"
+ "package": "time",
+ "version": "1.12.2"
},
{
- "package": "pretty",
- "version": "1.1.3.6"
+ "package": "unix",
+ "version": "2.8.1.0"
},
{
- "package": "template-haskell",
- "version": "2.18.0.0"
+ "package": "directory",
+ "version": "1.3.8.1"
},
{
"package": "text",
- "version": "1.2.5.0"
+ "version": "2.0.2"
},
{
"package": "parsec",
- "version": "3.1.14.0"
+ "version": "3.1.16.1"
},
{
"package": "process",
- "version": "1.6.13.2"
- },
- {
- "package": "Cabal",
- "version": "3.6.0.0"
+ "version": "1.6.17.0"
}
],
"dependencies": [
{
+ "cabal_sha256": "ed2d937ba6c6a20b75850349eedd41374885fc42369ef152d69e2ba70f44f593",
+ "flags": [],
+ "package": "Cabal-syntax",
+ "revision": 3,
+ "source": "hackage",
+ "src_sha256": "07e8ddb19fe01781485f1522b6afc22aba680b0ab28ebe6bbfb84a2dd698ce0f",
+ "version": "3.8.1.0"
+ },
+ {
+ "cabal_sha256": "77121d8e1aff14a0fd95684b751599db78a7dd26d55862d9fcef27c88b193e9d",
+ "flags": [],
+ "package": "Cabal",
+ "revision": 2,
+ "source": "hackage",
+ "src_sha256": "7464cbe6c2f3d7e5d0232023a1a7330621f8b24853cb259fc89a2af85b736608",
+ "version": "3.8.1.0"
+ },
+ {
"cabal_sha256": "db25c2e17967aa6b6046ab8b1b96ba3f344ca59a62b60fb6113d51ea305a3d8e",
"flags": [
"-optimised-mixer"
@@ -123,6 +145,15 @@
"version": "2.14.2"
},
{
+ "cabal_sha256": "64abad7816ab8cabed8489e29f807b3a6f828e0b2cec0eae404323d69d36df9a",
+ "flags": [],
+ "package": "base16-bytestring",
+ "revision": 0,
+ "source": "hackage",
+ "src_sha256": "1d5a91143ef0e22157536093ec8e59d226a68220ec89378d5dcaeea86472c784",
+ "version": "1.0.2.0"
+ },
+ {
"cabal_sha256": "a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c",
"flags": [
"-llvm"
@@ -134,13 +165,16 @@
"version": "0.8.3"
},
{
- "cabal_sha256": "2ef1bd3511e82ba56f7f23cd793dd2da84338a1e7c2cbea5b151417afe3baada",
- "flags": [],
- "package": "data-array-byte",
- "revision": 1,
+ "cabal_sha256": "72ce9095872eae653addca5f412ac8070d6282d8e1c8578c2237c33f2cbbf4bc",
+ "flags": [
+ "-exe",
+ "+use-cbits"
+ ],
+ "package": "cryptohash-sha256",
+ "revision": 2,
"source": "hackage",
- "src_sha256": "1bb6eca0b3e02d057fe7f4e14c81ef395216f421ab30fdaa1b18017c9c025600",
- "version": "0.1.0.1"
+ "src_sha256": "73a7dc7163871a80837495039a099967b11f5c4fe70a118277842f7a713c6bf6",
+ "version": "0.11.102.1"
},
{
"cabal_sha256": "3ac58d7341976173d1052e7b2837d119212d9afcf911735667c7f1ab67aec25f",
diff --git a/hadrian/bootstrap/plan-bootstrap-9_2_2.json b/hadrian/bootstrap/plan-bootstrap-9_2_2.json
index 5bc41d78c2..25cffab582 100644
--- a/hadrian/bootstrap/plan-bootstrap-9_2_2.json
+++ b/hadrian/bootstrap/plan-bootstrap-9_2_2.json
@@ -123,6 +123,15 @@
"version": "2.14.2"
},
{
+ "cabal_sha256": "64abad7816ab8cabed8489e29f807b3a6f828e0b2cec0eae404323d69d36df9a",
+ "flags": [],
+ "package": "base16-bytestring",
+ "revision": 0,
+ "source": "hackage",
+ "src_sha256": "1d5a91143ef0e22157536093ec8e59d226a68220ec89378d5dcaeea86472c784",
+ "version": "1.0.2.0"
+ },
+ {
"cabal_sha256": "a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c",
"flags": [
"-llvm"
@@ -134,6 +143,18 @@
"version": "0.8.3"
},
{
+ "cabal_sha256": "72ce9095872eae653addca5f412ac8070d6282d8e1c8578c2237c33f2cbbf4bc",
+ "flags": [
+ "-exe",
+ "+use-cbits"
+ ],
+ "package": "cryptohash-sha256",
+ "revision": 2,
+ "source": "hackage",
+ "src_sha256": "73a7dc7163871a80837495039a099967b11f5c4fe70a118277842f7a713c6bf6",
+ "version": "0.11.102.1"
+ },
+ {
"cabal_sha256": "2ef1bd3511e82ba56f7f23cd793dd2da84338a1e7c2cbea5b151417afe3baada",
"flags": [],
"package": "data-array-byte",
diff --git a/hadrian/bootstrap/plan-bootstrap-9_2_3.json b/hadrian/bootstrap/plan-bootstrap-9_2_3.json
index a06817a41e..aacc2f6f6a 100644
--- a/hadrian/bootstrap/plan-bootstrap-9_2_3.json
+++ b/hadrian/bootstrap/plan-bootstrap-9_2_3.json
@@ -123,6 +123,15 @@
"version": "2.14.2"
},
{
+ "cabal_sha256": "64abad7816ab8cabed8489e29f807b3a6f828e0b2cec0eae404323d69d36df9a",
+ "flags": [],
+ "package": "base16-bytestring",
+ "revision": 0,
+ "source": "hackage",
+ "src_sha256": "1d5a91143ef0e22157536093ec8e59d226a68220ec89378d5dcaeea86472c784",
+ "version": "1.0.2.0"
+ },
+ {
"cabal_sha256": "a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c",
"flags": [
"-llvm"
@@ -134,6 +143,18 @@
"version": "0.8.3"
},
{
+ "cabal_sha256": "72ce9095872eae653addca5f412ac8070d6282d8e1c8578c2237c33f2cbbf4bc",
+ "flags": [
+ "-exe",
+ "+use-cbits"
+ ],
+ "package": "cryptohash-sha256",
+ "revision": 2,
+ "source": "hackage",
+ "src_sha256": "73a7dc7163871a80837495039a099967b11f5c4fe70a118277842f7a713c6bf6",
+ "version": "0.11.102.1"
+ },
+ {
"cabal_sha256": "2ef1bd3511e82ba56f7f23cd793dd2da84338a1e7c2cbea5b151417afe3baada",
"flags": [],
"package": "data-array-byte",
diff --git a/hadrian/bootstrap/plan-bootstrap-9_2_4.json b/hadrian/bootstrap/plan-bootstrap-9_2_4.json
index 0a2cfb9697..c53e7c3586 100644
--- a/hadrian/bootstrap/plan-bootstrap-9_2_4.json
+++ b/hadrian/bootstrap/plan-bootstrap-9_2_4.json
@@ -123,6 +123,15 @@
"version": "2.14.2"
},
{
+ "cabal_sha256": "64abad7816ab8cabed8489e29f807b3a6f828e0b2cec0eae404323d69d36df9a",
+ "flags": [],
+ "package": "base16-bytestring",
+ "revision": 0,
+ "source": "hackage",
+ "src_sha256": "1d5a91143ef0e22157536093ec8e59d226a68220ec89378d5dcaeea86472c784",
+ "version": "1.0.2.0"
+ },
+ {
"cabal_sha256": "a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c",
"flags": [
"-llvm"
@@ -134,6 +143,18 @@
"version": "0.8.3"
},
{
+ "cabal_sha256": "72ce9095872eae653addca5f412ac8070d6282d8e1c8578c2237c33f2cbbf4bc",
+ "flags": [
+ "-exe",
+ "+use-cbits"
+ ],
+ "package": "cryptohash-sha256",
+ "revision": 2,
+ "source": "hackage",
+ "src_sha256": "73a7dc7163871a80837495039a099967b11f5c4fe70a118277842f7a713c6bf6",
+ "version": "0.11.102.1"
+ },
+ {
"cabal_sha256": "2ef1bd3511e82ba56f7f23cd793dd2da84338a1e7c2cbea5b151417afe3baada",
"flags": [],
"package": "data-array-byte",
diff --git a/hadrian/bootstrap/plan-bootstrap-9_2_5.json b/hadrian/bootstrap/plan-bootstrap-9_2_5.json
index 282db35f75..f2f1b94b9e 100644
--- a/hadrian/bootstrap/plan-bootstrap-9_2_5.json
+++ b/hadrian/bootstrap/plan-bootstrap-9_2_5.json
@@ -123,6 +123,15 @@
"version": "2.14.2"
},
{
+ "cabal_sha256": "64abad7816ab8cabed8489e29f807b3a6f828e0b2cec0eae404323d69d36df9a",
+ "flags": [],
+ "package": "base16-bytestring",
+ "revision": 0,
+ "source": "hackage",
+ "src_sha256": "1d5a91143ef0e22157536093ec8e59d226a68220ec89378d5dcaeea86472c784",
+ "version": "1.0.2.0"
+ },
+ {
"cabal_sha256": "a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c",
"flags": [
"-llvm"
@@ -134,6 +143,18 @@
"version": "0.8.3"
},
{
+ "cabal_sha256": "72ce9095872eae653addca5f412ac8070d6282d8e1c8578c2237c33f2cbbf4bc",
+ "flags": [
+ "-exe",
+ "+use-cbits"
+ ],
+ "package": "cryptohash-sha256",
+ "revision": 2,
+ "source": "hackage",
+ "src_sha256": "73a7dc7163871a80837495039a099967b11f5c4fe70a118277842f7a713c6bf6",
+ "version": "0.11.102.1"
+ },
+ {
"cabal_sha256": "2ef1bd3511e82ba56f7f23cd793dd2da84338a1e7c2cbea5b151417afe3baada",
"flags": [],
"package": "data-array-byte",
diff --git a/hadrian/bootstrap/plan-bootstrap-9_2_6.json b/hadrian/bootstrap/plan-bootstrap-9_2_6.json
index efea524d52..f89c2dccde 100644
--- a/hadrian/bootstrap/plan-bootstrap-9_2_6.json
+++ b/hadrian/bootstrap/plan-bootstrap-9_2_6.json
@@ -123,6 +123,15 @@
"version": "2.14.2"
},
{
+ "cabal_sha256": "64abad7816ab8cabed8489e29f807b3a6f828e0b2cec0eae404323d69d36df9a",
+ "flags": [],
+ "package": "base16-bytestring",
+ "revision": 0,
+ "source": "hackage",
+ "src_sha256": "1d5a91143ef0e22157536093ec8e59d226a68220ec89378d5dcaeea86472c784",
+ "version": "1.0.2.0"
+ },
+ {
"cabal_sha256": "a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c",
"flags": [
"-llvm"
@@ -134,6 +143,18 @@
"version": "0.8.3"
},
{
+ "cabal_sha256": "72ce9095872eae653addca5f412ac8070d6282d8e1c8578c2237c33f2cbbf4bc",
+ "flags": [
+ "-exe",
+ "+use-cbits"
+ ],
+ "package": "cryptohash-sha256",
+ "revision": 2,
+ "source": "hackage",
+ "src_sha256": "73a7dc7163871a80837495039a099967b11f5c4fe70a118277842f7a713c6bf6",
+ "version": "0.11.102.1"
+ },
+ {
"cabal_sha256": "2ef1bd3511e82ba56f7f23cd793dd2da84338a1e7c2cbea5b151417afe3baada",
"flags": [],
"package": "data-array-byte",
diff --git a/hadrian/bootstrap/plan-bootstrap-9_2_7.json b/hadrian/bootstrap/plan-bootstrap-9_2_7.json
index abfe16be39..3ad6dc1103 100644
--- a/hadrian/bootstrap/plan-bootstrap-9_2_7.json
+++ b/hadrian/bootstrap/plan-bootstrap-9_2_7.json
@@ -123,6 +123,15 @@
"version": "2.14.2"
},
{
+ "cabal_sha256": "64abad7816ab8cabed8489e29f807b3a6f828e0b2cec0eae404323d69d36df9a",
+ "flags": [],
+ "package": "base16-bytestring",
+ "revision": 0,
+ "source": "hackage",
+ "src_sha256": "1d5a91143ef0e22157536093ec8e59d226a68220ec89378d5dcaeea86472c784",
+ "version": "1.0.2.0"
+ },
+ {
"cabal_sha256": "a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c",
"flags": [
"-llvm"
@@ -134,6 +143,18 @@
"version": "0.8.3"
},
{
+ "cabal_sha256": "72ce9095872eae653addca5f412ac8070d6282d8e1c8578c2237c33f2cbbf4bc",
+ "flags": [
+ "-exe",
+ "+use-cbits"
+ ],
+ "package": "cryptohash-sha256",
+ "revision": 2,
+ "source": "hackage",
+ "src_sha256": "73a7dc7163871a80837495039a099967b11f5c4fe70a118277842f7a713c6bf6",
+ "version": "0.11.102.1"
+ },
+ {
"cabal_sha256": "2ef1bd3511e82ba56f7f23cd793dd2da84338a1e7c2cbea5b151417afe3baada",
"flags": [],
"package": "data-array-byte",
diff --git a/hadrian/bootstrap/plan-bootstrap-9_4_1.json b/hadrian/bootstrap/plan-bootstrap-9_4_1.json
index 2cb99b8f71..34cbc95a5e 100644
--- a/hadrian/bootstrap/plan-bootstrap-9_4_1.json
+++ b/hadrian/bootstrap/plan-bootstrap-9_4_1.json
@@ -127,6 +127,15 @@
"version": "2.14.2"
},
{
+ "cabal_sha256": "64abad7816ab8cabed8489e29f807b3a6f828e0b2cec0eae404323d69d36df9a",
+ "flags": [],
+ "package": "base16-bytestring",
+ "revision": 0,
+ "source": "hackage",
+ "src_sha256": "1d5a91143ef0e22157536093ec8e59d226a68220ec89378d5dcaeea86472c784",
+ "version": "1.0.2.0"
+ },
+ {
"cabal_sha256": "a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c",
"flags": [
"-llvm"
@@ -138,6 +147,18 @@
"version": "0.8.3"
},
{
+ "cabal_sha256": "72ce9095872eae653addca5f412ac8070d6282d8e1c8578c2237c33f2cbbf4bc",
+ "flags": [
+ "-exe",
+ "+use-cbits"
+ ],
+ "package": "cryptohash-sha256",
+ "revision": 2,
+ "source": "hackage",
+ "src_sha256": "73a7dc7163871a80837495039a099967b11f5c4fe70a118277842f7a713c6bf6",
+ "version": "0.11.102.1"
+ },
+ {
"cabal_sha256": "3ac58d7341976173d1052e7b2837d119212d9afcf911735667c7f1ab67aec25f",
"flags": [],
"package": "extra",
diff --git a/hadrian/bootstrap/plan-bootstrap-9_4_2.json b/hadrian/bootstrap/plan-bootstrap-9_4_2.json
index a17b217d1e..6ce98ec157 100644
--- a/hadrian/bootstrap/plan-bootstrap-9_4_2.json
+++ b/hadrian/bootstrap/plan-bootstrap-9_4_2.json
@@ -127,6 +127,15 @@
"version": "2.14.2"
},
{
+ "cabal_sha256": "64abad7816ab8cabed8489e29f807b3a6f828e0b2cec0eae404323d69d36df9a",
+ "flags": [],
+ "package": "base16-bytestring",
+ "revision": 0,
+ "source": "hackage",
+ "src_sha256": "1d5a91143ef0e22157536093ec8e59d226a68220ec89378d5dcaeea86472c784",
+ "version": "1.0.2.0"
+ },
+ {
"cabal_sha256": "a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c",
"flags": [
"-llvm"
@@ -138,6 +147,18 @@
"version": "0.8.3"
},
{
+ "cabal_sha256": "72ce9095872eae653addca5f412ac8070d6282d8e1c8578c2237c33f2cbbf4bc",
+ "flags": [
+ "-exe",
+ "+use-cbits"
+ ],
+ "package": "cryptohash-sha256",
+ "revision": 2,
+ "source": "hackage",
+ "src_sha256": "73a7dc7163871a80837495039a099967b11f5c4fe70a118277842f7a713c6bf6",
+ "version": "0.11.102.1"
+ },
+ {
"cabal_sha256": "3ac58d7341976173d1052e7b2837d119212d9afcf911735667c7f1ab67aec25f",
"flags": [],
"package": "extra",
diff --git a/hadrian/bootstrap/plan-bootstrap-9_4_3.json b/hadrian/bootstrap/plan-bootstrap-9_4_3.json
index 82c6baa824..017c37b1eb 100644
--- a/hadrian/bootstrap/plan-bootstrap-9_4_3.json
+++ b/hadrian/bootstrap/plan-bootstrap-9_4_3.json
@@ -127,6 +127,15 @@
"version": "2.14.2"
},
{
+ "cabal_sha256": "64abad7816ab8cabed8489e29f807b3a6f828e0b2cec0eae404323d69d36df9a",
+ "flags": [],
+ "package": "base16-bytestring",
+ "revision": 0,
+ "source": "hackage",
+ "src_sha256": "1d5a91143ef0e22157536093ec8e59d226a68220ec89378d5dcaeea86472c784",
+ "version": "1.0.2.0"
+ },
+ {
"cabal_sha256": "a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c",
"flags": [
"-llvm"
@@ -138,6 +147,18 @@
"version": "0.8.3"
},
{
+ "cabal_sha256": "72ce9095872eae653addca5f412ac8070d6282d8e1c8578c2237c33f2cbbf4bc",
+ "flags": [
+ "-exe",
+ "+use-cbits"
+ ],
+ "package": "cryptohash-sha256",
+ "revision": 2,
+ "source": "hackage",
+ "src_sha256": "73a7dc7163871a80837495039a099967b11f5c4fe70a118277842f7a713c6bf6",
+ "version": "0.11.102.1"
+ },
+ {
"cabal_sha256": "3ac58d7341976173d1052e7b2837d119212d9afcf911735667c7f1ab67aec25f",
"flags": [],
"package": "extra",
diff --git a/hadrian/bootstrap/plan-bootstrap-9_4_4.json b/hadrian/bootstrap/plan-bootstrap-9_4_4.json
index 5420b39c73..ed9ddbef9c 100644
--- a/hadrian/bootstrap/plan-bootstrap-9_4_4.json
+++ b/hadrian/bootstrap/plan-bootstrap-9_4_4.json
@@ -127,6 +127,15 @@
"version": "2.14.2"
},
{
+ "cabal_sha256": "64abad7816ab8cabed8489e29f807b3a6f828e0b2cec0eae404323d69d36df9a",
+ "flags": [],
+ "package": "base16-bytestring",
+ "revision": 0,
+ "source": "hackage",
+ "src_sha256": "1d5a91143ef0e22157536093ec8e59d226a68220ec89378d5dcaeea86472c784",
+ "version": "1.0.2.0"
+ },
+ {
"cabal_sha256": "a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c",
"flags": [
"-llvm"
@@ -138,6 +147,18 @@
"version": "0.8.3"
},
{
+ "cabal_sha256": "72ce9095872eae653addca5f412ac8070d6282d8e1c8578c2237c33f2cbbf4bc",
+ "flags": [
+ "-exe",
+ "+use-cbits"
+ ],
+ "package": "cryptohash-sha256",
+ "revision": 2,
+ "source": "hackage",
+ "src_sha256": "73a7dc7163871a80837495039a099967b11f5c4fe70a118277842f7a713c6bf6",
+ "version": "0.11.102.1"
+ },
+ {
"cabal_sha256": "3ac58d7341976173d1052e7b2837d119212d9afcf911735667c7f1ab67aec25f",
"flags": [],
"package": "extra",
diff --git a/hadrian/bootstrap/plan-bootstrap-9_6_1.json b/hadrian/bootstrap/plan-bootstrap-9_6_1.json
index eee2bfbc19..5dedb0dced 100644
--- a/hadrian/bootstrap/plan-bootstrap-9_6_1.json
+++ b/hadrian/bootstrap/plan-bootstrap-9_6_1.json
@@ -145,6 +145,15 @@
"version": "2.14.2"
},
{
+ "cabal_sha256": "64abad7816ab8cabed8489e29f807b3a6f828e0b2cec0eae404323d69d36df9a",
+ "flags": [],
+ "package": "base16-bytestring",
+ "revision": 0,
+ "source": "hackage",
+ "src_sha256": "1d5a91143ef0e22157536093ec8e59d226a68220ec89378d5dcaeea86472c784",
+ "version": "1.0.2.0"
+ },
+ {
"cabal_sha256": "a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c",
"flags": [
"-llvm"
@@ -156,6 +165,18 @@
"version": "0.8.3"
},
{
+ "cabal_sha256": "72ce9095872eae653addca5f412ac8070d6282d8e1c8578c2237c33f2cbbf4bc",
+ "flags": [
+ "-exe",
+ "+use-cbits"
+ ],
+ "package": "cryptohash-sha256",
+ "revision": 2,
+ "source": "hackage",
+ "src_sha256": "73a7dc7163871a80837495039a099967b11f5c4fe70a118277842f7a713c6bf6",
+ "version": "0.11.102.1"
+ },
+ {
"cabal_sha256": "3ac58d7341976173d1052e7b2837d119212d9afcf911735667c7f1ab67aec25f",
"flags": [],
"package": "extra",
diff --git a/hadrian/hadrian.cabal b/hadrian/hadrian.cabal
index b0c4533b36..2311e9601f 100644
--- a/hadrian/hadrian.cabal
+++ b/hadrian/hadrian.cabal
@@ -55,6 +55,7 @@ executable hadrian
, Hadrian.BuildPath
, Hadrian.Expression
, Hadrian.Haskell.Cabal
+ , Hadrian.Haskell.Hash
, Hadrian.Haskell.Cabal.Type
, Hadrian.Haskell.Cabal.Parse
, Hadrian.Oracles.ArgsHash
@@ -163,6 +164,8 @@ executable hadrian
, transformers >= 0.4 && < 0.7
, unordered-containers >= 0.2.1 && < 0.3
, text >= 1.2 && < 3
+ , cryptohash-sha256 >= 0.11 && < 0.12
+ , base16-bytestring >= 0.1.1 && < 1.1.0.0
ghc-options: -Wall
-Wincomplete-record-updates
-Wredundant-constraints
diff --git a/hadrian/src/CommandLine.hs b/hadrian/src/CommandLine.hs
index 6fc74af5d3..9de13ef89e 100644
--- a/hadrian/src/CommandLine.hs
+++ b/hadrian/src/CommandLine.hs
@@ -1,7 +1,7 @@
module CommandLine (
optDescrs, cmdLineArgsMap, cmdFlavour, lookupFreeze1, lookupFreeze2, lookupSkipDepends,
cmdBignum, cmdBignumCheck, cmdProgressInfo, cmdCompleteSetting,
- cmdDocsArgs, lookupBuildRoot, TestArgs(..), TestSpeed(..), defaultTestArgs,
+ cmdDocsArgs, cmdUnitIdHash, lookupBuildRoot, TestArgs(..), TestSpeed(..), defaultTestArgs,
cmdPrefix, DocArgs(..), defaultDocArgs
) where
@@ -28,6 +28,7 @@ data CommandLineArgs = CommandLineArgs
, freeze1 :: Bool
, freeze2 :: Bool
, skipDepends :: Bool
+ , unitIdHash :: Bool
, bignum :: Maybe String
, bignumCheck :: Bool
, progressInfo :: ProgressInfo
@@ -47,6 +48,7 @@ defaultCommandLineArgs = CommandLineArgs
, freeze1 = False
, freeze2 = False
, skipDepends = False
+ , unitIdHash = False
, bignum = Nothing
, bignumCheck = False
, progressInfo = Brief
@@ -136,6 +138,9 @@ readFreeze1 = Right $ \flags -> flags { freeze1 = True }
readFreeze2 = Right $ \flags -> flags { freeze1 = True, freeze2 = True }
readSkipDepends = Right $ \flags -> flags { skipDepends = True }
+readUnitIdHash :: Either String (CommandLineArgs -> CommandLineArgs)
+readUnitIdHash = Right $ \flags -> flags { unitIdHash = True }
+
readProgressInfo :: String -> Either String (CommandLineArgs -> CommandLineArgs)
readProgressInfo ms =
case lower ms of
@@ -269,6 +274,8 @@ optDescrs =
"Freeze Stage1 GHC."
, Option [] ["freeze2"] (NoArg readFreeze2)
"Freeze Stage2 GHC."
+ , Option [] ["hash-unit-ids"] (NoArg readUnitIdHash)
+ "Include package hashes in unit ids."
, Option [] ["skip-depends"] (NoArg readSkipDepends)
"Skip rebuilding dependency information."
, Option [] ["bignum"] (OptArg readBignum "BACKEND")
@@ -380,6 +387,9 @@ lookupFreeze2 = freeze2 . lookupExtra defaultCommandLineArgs
lookupSkipDepends :: Map.HashMap TypeRep Dynamic -> Bool
lookupSkipDepends = skipDepends . lookupExtra defaultCommandLineArgs
+cmdUnitIdHash :: Action Bool
+cmdUnitIdHash = unitIdHash <$> cmdLineArgs
+
cmdBignum :: Action (Maybe String)
cmdBignum = bignum <$> cmdLineArgs
diff --git a/hadrian/src/Context.hs b/hadrian/src/Context.hs
index b8fb5fca26..d09228b004 100644
--- a/hadrian/src/Context.hs
+++ b/hadrian/src/Context.hs
@@ -70,15 +70,15 @@ distDir st = do
hostArch <- cabalArchString <$> setting arch
return $ hostArch ++ "-" ++ hostOs ++ "-ghc-" ++ version
-pkgFileName :: Package -> String -> String -> Action FilePath
-pkgFileName package prefix suffix = do
- pid <- pkgIdentifier package
+pkgFileName :: Context -> Package -> String -> String -> Action FilePath
+pkgFileName context package prefix suffix = do
+ pid <- pkgUnitId (stage context) package
return $ prefix ++ pid ++ suffix
pkgFile :: Context -> String -> String -> Action FilePath
pkgFile context@Context {..} prefix suffix = do
path <- buildPath context
- fileName <- pkgFileName package prefix suffix
+ fileName <- pkgFileName context package prefix suffix
return $ path -/- fileName
-- | Path to inplace package configuration file of a given 'Context'.
@@ -95,9 +95,9 @@ pkgSetupConfigFile context = pkgSetupConfigDir context <&> (-/- "setup-config")
-- | Path to the haddock file of a given 'Context', e.g.:
-- @_build/stage1/libraries/array/doc/html/array/array.haddock@.
pkgHaddockFile :: Context -> Action FilePath
-pkgHaddockFile Context {..} = do
+pkgHaddockFile context@Context {..} = do
root <- buildRoot
- version <- pkgIdentifier package
+ version <- pkgUnitId stage package
return $ root -/- "doc/html/libraries" -/- version -/- pkgName package <.> "haddock"
-- | Path to the registered ghc-pkg library file of a given 'Context', e.g.:
@@ -106,7 +106,7 @@ pkgHaddockFile Context {..} = do
pkgRegisteredLibraryFile :: Context -> Action FilePath
pkgRegisteredLibraryFile context@Context {..} = do
libDir <- libPath context
- pkgId <- pkgIdentifier package
+ pkgId <- pkgUnitId stage package
fileName <- pkgRegisteredLibraryFileName context
distDir <- distDir stage
return $ if Dynamic `wayUnit` way
@@ -115,9 +115,9 @@ pkgRegisteredLibraryFile context@Context {..} = do
-- | Just the final filename portion of pkgRegisteredLibraryFile
pkgRegisteredLibraryFileName :: Context -> Action FilePath
-pkgRegisteredLibraryFileName Context{..} = do
+pkgRegisteredLibraryFileName context@Context{..} = do
extension <- libsuf stage way
- pkgFileName package "libHS" extension
+ pkgFileName context package "libHS" extension
-- | Path to the library file of a given 'Context', e.g.:
@@ -136,8 +136,8 @@ pkgGhciLibraryFile context@Context {..} = do
-- | Path to the configuration file of a given 'Context'.
pkgConfFile :: Context -> Action FilePath
-pkgConfFile Context {..} = do
- pid <- pkgIdentifier package
+pkgConfFile context@Context {..} = do
+ pid <- pkgUnitId stage package
dbPath <- packageDbPath (PackageDbLoc stage iplace)
return $ dbPath -/- pid <.> "conf"
diff --git a/hadrian/src/Hadrian/BuildPath.hs b/hadrian/src/Hadrian/BuildPath.hs
index 8d2806b587..342a2ca7eb 100644
--- a/hadrian/src/Hadrian/BuildPath.hs
+++ b/hadrian/src/Hadrian/BuildPath.hs
@@ -110,17 +110,28 @@ parseWayUnit = Parsec.choice
, Parsec.char 'l' *> pure Logging
] Parsec.<?> "way unit (thr, debug, dyn, p, l)"
--- | Parse a @"pkgname-pkgversion"@ string into the package name and the
+-- | Parse a @"pkgname-pkgversion-pkghash"@ string into the package name and the
-- integers that make up the package version.
-parsePkgId :: Parsec.Parsec String () (String, [Integer])
-parsePkgId = parsePkgId' "" Parsec.<?> "package identifier (<name>-<version>)"
+--
+-- If no hash was assigned, an empty string is returned in its place.
+parsePkgId :: Parsec.Parsec String () (String, [Integer], String)
+parsePkgId = parsePkgId' "" Parsec.<?> "package identifier (<name>-<version>(-<hash>?))"
where
parsePkgId' currName = do
s <- Parsec.many1 Parsec.alphaNum
_ <- Parsec.char '-'
let newName = if null currName then s else currName ++ "-" ++ s
- Parsec.choice [ (newName,) <$> parsePkgVersion
- , parsePkgId' newName ]
+ Parsec.choice
+ [ (,,) newName <$> parsePkgVersion
+ <*> Parsec.option "" (Parsec.try $ do
+ _ <- Parsec.char '-'
+ -- Ensure we're not parsing a libDynName as a hash
+ _ <- Parsec.notFollowedBy (Parsec.string "ghc" *> parsePkgVersion)
+ parsePkgHash)
+ , parsePkgId' newName ]
+
+parsePkgHash :: Parsec.Parsec String () String
+parsePkgHash = Parsec.many1 Parsec.alphaNum
-- | Parse "."-separated integers that describe a package's version.
parsePkgVersion :: Parsec.Parsec String () [Integer]
diff --git a/hadrian/src/Hadrian/Builder/Git.hs b/hadrian/src/Hadrian/Builder/Git.hs
index 6875a48fbd..0f073ac463 100644
--- a/hadrian/src/Hadrian/Builder/Git.hs
+++ b/hadrian/src/Hadrian/Builder/Git.hs
@@ -2,12 +2,13 @@ module Hadrian.Builder.Git (gitArgs) where
import Expression
--- | Default command line arguments for invoking the archiving utility @tar@.
+-- | Default command line arguments for invoking the archiving utility @git@.
gitArgs :: Args
gitArgs = mconcat
[ builder (Git ListFiles) ? mconcat
[ arg "ls-files"
, arg "--recurse-submodules"
, arg "-z"
+ , getInputs
]
]
diff --git a/hadrian/src/Hadrian/Haskell/Cabal.hs b/hadrian/src/Hadrian/Haskell/Cabal.hs
index f5864b6297..1220e6bbe4 100644
--- a/hadrian/src/Hadrian/Haskell/Cabal.hs
+++ b/hadrian/src/Hadrian/Haskell/Cabal.hs
@@ -10,8 +10,8 @@
-- Cabal files.
-----------------------------------------------------------------------------
module Hadrian.Haskell.Cabal (
- pkgVersion, pkgIdentifier, pkgSynopsis, pkgDescription, pkgDependencies,
- pkgGenericDescription, cabalArchString, cabalOsString,
+ pkgVersion, pkgUnitId, pkgSynopsis, pkgDescription, pkgSimpleIdentifier,
+ pkgDependencies, pkgGenericDescription, cabalArchString, cabalOsString
) where
import Development.Shake
@@ -20,15 +20,19 @@ import Distribution.PackageDescription (GenericPackageDescription)
import Hadrian.Haskell.Cabal.Type
import Hadrian.Oracles.Cabal
import Hadrian.Package
+import {-# SOURCE #-} Hadrian.Haskell.Hash (pkgUnitId)
+
-- | Read a Cabal file and return the package version. The Cabal file is tracked.
pkgVersion :: Package -> Action String
pkgVersion = fmap version . readPackageData
--- | Read a Cabal file and return the package identifier, e.g. @base-4.10.0.0@.
+-- | Read a Cabal file and return the package identifier without a hash, e.g. @base-4.10.0.0@.
-- The Cabal file is tracked.
-pkgIdentifier :: Package -> Action String
-pkgIdentifier package = do
+--
+-- For an identifier complete with the hash use 'pkgUnitId'
+pkgSimpleIdentifier :: Package -> Action String
+pkgSimpleIdentifier package = do
cabal <- readPackageData package
return $ if null (version cabal)
then name cabal
@@ -72,3 +76,4 @@ cabalOsString "mingw32" = "windows"
cabalOsString "darwin" = "osx"
cabalOsString "solaris2" = "solaris"
cabalOsString other = other
+
diff --git a/hadrian/src/Hadrian/Haskell/Cabal/Parse.hs b/hadrian/src/Hadrian/Haskell/Cabal/Parse.hs
index 74ae8fb16a..760f4295c9 100644
--- a/hadrian/src/Hadrian/Haskell/Cabal/Parse.hs
+++ b/hadrian/src/Hadrian/Haskell/Cabal/Parse.hs
@@ -63,7 +63,6 @@ import Hadrian.Target
import Base
import Builder
import Context
-import Flavour
import Settings
import Distribution.Simple.LocalBuildInfo
import qualified Distribution.Simple.Register as C
@@ -344,7 +343,7 @@ registerPackage rs context = do
pd <- packageDescription <$> readContextData context
db_path <- packageDbPath (PackageDbLoc (stage context) (iplace context))
dist_dir <- Context.buildPath context
- pid <- pkgIdentifier (package context)
+ pid <- pkgUnitId (stage context) (package context)
-- Note: the @cPath@ is ignored. The path that's used is the 'buildDir' path
-- from the local build info @lbi@.
lbi <- liftIO $ C.getPersistBuildConfig cPath
@@ -356,12 +355,12 @@ registerPackage rs context = do
-- This is copied and simplified from Cabal, because we want to install the package
-- into a different package database to the one it was configured against.
register :: FilePath
- -> FilePath
+ -> String -- ^ Package Identifier
-> FilePath
-> C.PackageDescription
-> LocalBuildInfo
-> IO ()
-register pkg_db conf_file build_dir pd lbi
+register pkg_db pid build_dir pd lbi
= withLibLBI pd lbi $ \lib clbi -> do
absPackageDBs <- C.absolutePackageDBPaths packageDbs
@@ -372,13 +371,13 @@ register pkg_db conf_file build_dir pd lbi
writeRegistrationFile installedPkgInfo
where
- regFile = conf_file
+ regFile = pkg_db </> pid <.> "conf"
reloc = relocatable lbi
-- Using a specific package db here is why we have to copy the function from Cabal.
packageDbs = [C.SpecificPackageDB pkg_db]
writeRegistrationFile installedPkgInfo = do
- writeUTF8File (pkg_db </> regFile <.> "conf") (CP.showInstalledPackageInfo installedPkgInfo)
+ writeUTF8File regFile (CP.showInstalledPackageInfo installedPkgInfo)
-- | Build autogenerated files @autogen/cabal_macros.h@ and @autogen/Paths_*.hs@.
diff --git a/hadrian/src/Hadrian/Haskell/Hash.hs b/hadrian/src/Hadrian/Haskell/Hash.hs
new file mode 100644
index 0000000000..ee644168e2
--- /dev/null
+++ b/hadrian/src/Hadrian/Haskell/Hash.hs
@@ -0,0 +1,257 @@
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE TypeFamilies #-}
+module Hadrian.Haskell.Hash (pkgUnitId, pkgHashOracle) where
+
+import Development.Shake
+
+import Hadrian.Haskell.Cabal.Type
+import Hadrian.Haskell.Cabal
+import Hadrian.Oracles.Cabal
+import Hadrian.Package
+
+import qualified Crypto.Hash.SHA256 as SHA256
+import qualified Data.ByteString.Base16 as Base16
+import qualified Data.ByteString.Char8 as BS
+import Data.ByteString as BS (readFile)
+import Data.Map (Map)
+import qualified Data.Map as Map
+import qualified Data.Set as Set
+import Data.Maybe
+import Data.List
+import Context.Type
+import Oracles.Setting
+import Hadrian.Target
+import Hadrian.Expression
+import Builder
+import Flavour.Type
+import Settings
+import Way
+import Packages
+import Development.Shake.Classes
+import Control.Monad
+import Utilities
+import Base
+import Context
+import System.Directory.Extra (listFilesRecursive)
+import CommandLine
+import Control.Arrow (first)
+
+
+-- | Read a Cabal file and return the package identifier, e.g. @base-4.10.0.0-abcd@.
+-- This needs to be an oracle so it's cached
+pkgUnitId :: Stage -> Package -> Action String
+pkgUnitId stg pkg = do
+ pid <- pkgSimpleIdentifier pkg
+ use_hash <- cmdUnitIdHash
+ if pkgName pkg == "rts"
+ -- The unit-id will change depending on the way, we need to treat the rts separately
+ then pure pid
+ else do
+ -- Other boot packages still hardcode their unit-id to just <name>, but we
+ -- can have hadrian generate a different unit-id for them just as cabal does
+ -- because the boot packages unit-ids are overriden by setting -this-unit-id
+ -- in the cabal file
+ hash <- if use_hash
+ then do
+ phash <- pkgHash stg pkg
+ return $ truncateHash 4 phash
+ else
+ return "inplace"
+ pure $ pid <> "-" <> hash
+
+ where
+ truncateHash :: Int -> String -> String
+ truncateHash = take
+
+data PackageHashInputs = PackageHashInputs {
+ pkgHashPkgId :: String, -- ^ name-version
+ pkgHashComponent :: PackageType,
+ pkgHashSourceHash :: BS.ByteString,
+ -- pkgHashPkgConfigDeps :: Set (PkgconfigName, Maybe PkgconfigVersion),
+ pkgHashDirectDeps :: Set.Set String,
+ pkgHashOtherConfig :: PackageHashConfigInputs
+ }
+
+-- | Those parts of the package configuration that contribute to the
+-- package hash computed by hadrian (which is simpler than cabal's).
+--
+-- setting in Oracle.setting, which come from system.config
+data PackageHashConfigInputs = PackageHashConfigInputs {
+ pkgHashCompilerId :: String,
+ pkgHashPlatform :: String,
+ pkgHashFlagAssignment :: [String], -- complete not partial
+ pkgHashVanillaLib :: Bool,
+ pkgHashSharedLib :: Bool,
+ pkgHashDynExe :: Bool,
+ pkgHashGHCiLib :: Bool,
+ pkgHashProfLib :: Bool,
+ pkgHashProfExe :: Bool,
+ pkgHashSplitObjs :: Bool,
+ pkgHashSplitSections :: Bool,
+ pkgHashStripLibs :: Bool,
+ pkgHashStripExes :: Bool,
+ pkgHashProgramArgs :: Map String [String]
+ -- pkgHashProgPrefix :: Maybe PathTemplate,
+ -- pkgHashProgSuffix :: Maybe PathTemplate,
+ -- pkgHashPackageDbs :: [Maybe PackageDB]
+ -- Captured by extraArgs
+-- pkgHashDebugInfo :: DebugInfoLevel,
+-- pkgHashCoverage :: Bool,
+-- pkgHashFullyStaticExe :: Bool,
+-- pkgHashProfLibDetail :: ProfDetailLevel,
+-- pkgHashOptimization :: Int,
+-- pkgHashProfExeDetail :: ProfDetailLevel,
+-- pkgHashExtraLibDirs :: [FilePath],
+-- pkgHashExtraLibDirsStatic :: [FilePath],
+-- pkgHashExtraFrameworkDirs :: [FilePath],
+-- pkgHashExtraIncludeDirs :: [FilePath]
+ }
+ deriving Show
+
+newtype PkgHashKey = PkgHashKey (Stage, Package)
+ deriving (Binary, Eq, Hashable, NFData, Show, Typeable)
+type instance RuleResult PkgHashKey = String
+
+pkgHash :: Stage -> Package -> Action String
+pkgHash stg p = askOracle . PkgHashKey $ (stg, p)
+
+-- Needs to be an oracle to be cached. Called lots of times.
+pkgHashOracle :: Rules ()
+pkgHashOracle = void $ addOracleCache $ \(PkgHashKey (stag, pkg)) -> do
+ let vanilla_ctx = vanillaContext stag pkg
+ pkg_data <- readPackageData pkg
+ name <- pkgSimpleIdentifier pkg
+ stagePkgs <- stagePackages stag
+
+ depsHashes <- sequence [pkgHash stag pkg' | pkg' <- packageDependencies pkg_data, pkg' `elem` stagePkgs]
+
+ flav <- flavour
+ let flavourArgs = extraArgs flav
+
+ targetOs <- setting TargetOs
+ projectVersion <- setting ProjectVersion
+ let pkgHashCompilerId = "ghc-" ++ projectVersion
+ pkgHashPlatform = targetOs
+
+ libWays <- interpretInContext vanilla_ctx (libraryWays flav)
+ dyn_ghc <- dynamicGhcPrograms flav
+ flags <- interpret (target vanilla_ctx (Cabal Flags stag) [] []) getArgs
+ let pkgHashFlagAssignment = flags
+ pkgHashVanillaLib = vanilla `Set.member` libWays
+ pkgHashSharedLib = dynamic `Set.member` libWays
+ pkgHashDynExe = dyn_ghc
+ pkgHashGHCiLib = False
+ pkgHashProfLib = profiling `Set.member` libWays
+ pkgHashProfExe = pkg == ghc && ghcProfiled flav stag
+ pkgHashSplitObjs = False -- Deprecated
+ pkgHashSplitSections = ghcSplitSections flav
+ pkgHashStripExes = False
+ pkgHashStripLibs = False
+
+ pkgHashProgramArgs <- Map.unions <$> (forM (Set.toList libWays) $ \lib_way -> do
+ let ctx = vanilla_ctx { way = lib_way }
+ ghcArgs <- interpret (target ctx (Ghc CompileHs stag) [] []) flavourArgs
+ ghcCArgs <- interpret (target ctx (Ghc CompileCWithGhc stag) [] []) flavourArgs
+ linkArgs <- interpret (target ctx (Ghc LinkHs stag) [] []) flavourArgs
+ ccArgs <- interpret (target ctx (Cc CompileC stag) [] []) flavourArgs
+ hsc2hsArgs <- interpret (target ctx (Hsc2Hs stag) [] []) flavourArgs
+ -- TODO: Other arguments for other things (a user could pass extra options to any
+ -- builder we know about and we need to enumerate them here)
+ return $ Map.fromList (map (first (++ waySuffix lib_way))
+ [("ghc", ghcArgs)
+ ,("ghc-c", ghcCArgs)
+ ,("ghc-link", linkArgs)
+ ,("hsc2hs", hsc2hsArgs)
+ ,("cc", ccArgs) ]))
+
+ let other_config = PackageHashConfigInputs{..}
+
+ files <- allFilesInDirectory (pkgPath pkg)
+ need files
+ files_hash <- liftIO (SHA256.finalize <$> hashFiles (SHA256.init) files)
+
+ return $ BS.unpack $ Base16.encode $ SHA256.hash $
+ renderPackageHashInputs $ PackageHashInputs
+ {
+ pkgHashPkgId = name
+ , pkgHashComponent = pkgType pkg
+ , pkgHashSourceHash = files_hash
+ , pkgHashDirectDeps = Set.fromList depsHashes
+ , pkgHashOtherConfig = other_config
+ }
+
+allFilesInDirectory :: FilePath -> Action [FilePath]
+allFilesInDirectory dir = liftIO $ listFilesRecursive dir
+
+-- Either use git ls-tree if we are in a git repo, otherwise just get all the
+-- files in the given directory.
+{- Deb9 toolchain is too old to support git ls-tree properly
+ git_tree <- isInGitTree
+ if git_tree
+ then do
+ let gitFiles = filter fileFilter . split (=='\NUL')
+ fileFilter file = not (null file) && ((dir ++ "/*") ?== file)
+ gitFiles <$> askWithResources [] (target (vanillaContext stage0Boot compiler) -- This value doesn't matter.
+ (Git ListFiles) [dir] [])
+ else
+ liftIO $ listFilesRecursive dir
+
+
+isInGitTree :: Action Bool
+isInGitTree = do
+ git_commit <- setting ProjectGitCommitId
+ -- git_commit is not set if we are in a source dist
+ return $ not ("" == git_commit)
+-}
+
+
+
+hashFiles :: SHA256.Ctx -> [FilePath] -> IO SHA256.Ctx
+hashFiles = foldM hashFile
+
+hashFile :: SHA256.Ctx -> FilePath -> IO SHA256.Ctx
+hashFile !ctx fp = do
+ contents <- BS.readFile fp
+ return $! SHA256.update ctx contents
+
+
+renderPackageHashInputs :: PackageHashInputs -> BS.ByteString
+renderPackageHashInputs PackageHashInputs{
+ pkgHashPkgId,
+ pkgHashComponent,
+ pkgHashSourceHash,
+ pkgHashDirectDeps,
+ pkgHashOtherConfig =
+ PackageHashConfigInputs{..}
+ } =
+ -- The purpose of this somewhat laboured rendering (e.g. why not just
+ -- use show?) is so that existing package hashes do not change
+ -- unnecessarily when new configuration inputs are added into the hash.
+ BS.pack $ unlines $ catMaybes $
+ [ entry "pkgid" show pkgHashPkgId
+ , entry "component" show pkgHashComponent
+ , entry "src" show pkgHashSourceHash
+ , entry "deps" (intercalate ", " . map show
+ . Set.toList) pkgHashDirectDeps
+ -- and then all the config
+ , entry "compilerid" show pkgHashCompilerId
+ , entry "platform" show pkgHashPlatform
+ , opt "flags" mempty show pkgHashFlagAssignment
+ , opt "vanilla-lib" True show pkgHashVanillaLib
+ , opt "shared-lib" False show pkgHashSharedLib
+ , opt "dynamic-exe" False show pkgHashDynExe
+ , opt "ghci-lib" False show pkgHashGHCiLib
+ , opt "prof-lib" False show pkgHashProfLib
+ , opt "prof-exe" False show pkgHashProfExe
+ , opt "split-objs" False show pkgHashSplitObjs
+ , opt "split-sections" False show pkgHashSplitSections
+ , opt "stripped-lib" False show pkgHashStripLibs
+ , opt "stripped-exe" True show pkgHashStripExes
+ ] ++ Map.foldrWithKey (\prog args acc -> opt (prog ++ "-options") [] unwords args : acc) [] pkgHashProgramArgs
+ where
+ entry key format value = Just (key ++ ": " ++ format value)
+ opt key def format value
+ | value == def = Nothing
+ | otherwise = entry key format value
diff --git a/hadrian/src/Hadrian/Haskell/Hash.hs-boot b/hadrian/src/Hadrian/Haskell/Hash.hs-boot
new file mode 100644
index 0000000000..b6fc67e36f
--- /dev/null
+++ b/hadrian/src/Hadrian/Haskell/Hash.hs-boot
@@ -0,0 +1,8 @@
+module Hadrian.Haskell.Hash where
+
+import Hadrian.Package
+import Stage
+import Development.Shake
+
+pkgUnitId :: Stage -> Package -> Action String
+
diff --git a/hadrian/src/Hadrian/Package.hs b/hadrian/src/Hadrian/Package.hs
index 6bc31d7c58..6291edee74 100644
--- a/hadrian/src/Hadrian/Package.hs
+++ b/hadrian/src/Hadrian/Package.hs
@@ -81,4 +81,4 @@ instance NFData PackageType
instance Binary Package
instance Hashable Package
-instance NFData Package \ No newline at end of file
+instance NFData Package
diff --git a/hadrian/src/Rules.hs b/hadrian/src/Rules.hs
index 7cfeb65e5a..55de341f8e 100644
--- a/hadrian/src/Rules.hs
+++ b/hadrian/src/Rules.hs
@@ -8,6 +8,7 @@ import qualified Hadrian.Oracles.Cabal.Rules
import qualified Hadrian.Oracles.DirectoryContents
import qualified Hadrian.Oracles.Path
import qualified Hadrian.Oracles.TextFile
+import qualified Hadrian.Haskell.Hash
import Expression
import qualified Oracles.Flavour
@@ -142,6 +143,7 @@ oracleRules :: Rules ()
oracleRules = do
Hadrian.Oracles.ArgsHash.argsHashOracle trackArgument getArgs
Hadrian.Oracles.Cabal.Rules.cabalOracle
+ Hadrian.Haskell.Hash.pkgHashOracle
Hadrian.Oracles.DirectoryContents.directoryContentsOracle
Hadrian.Oracles.Path.pathOracle
Hadrian.Oracles.TextFile.textFileOracle
diff --git a/hadrian/src/Rules/BinaryDist.hs b/hadrian/src/Rules/BinaryDist.hs
index ede1a5c420..cca28c10f4 100644
--- a/hadrian/src/Rules/BinaryDist.hs
+++ b/hadrian/src/Rules/BinaryDist.hs
@@ -132,7 +132,8 @@ bindistRules = do
version <- setting ProjectVersion
targetPlatform <- setting TargetPlatformFull
distDir <- Context.distDir Stage1
- rtsDir <- pkgIdentifier rts
+ rtsDir <- pkgUnitId Stage1 rts
+ -- let rtsDir = "rts"
let ghcBuildDir = root -/- stageString Stage1
bindistFilesDir = root -/- "bindist" -/- ghcVersionPretty
diff --git a/hadrian/src/Rules/CabalReinstall.hs b/hadrian/src/Rules/CabalReinstall.hs
index 2bfc8f92b0..57baa79d56 100644
--- a/hadrian/src/Rules/CabalReinstall.hs
+++ b/hadrian/src/Rules/CabalReinstall.hs
@@ -10,7 +10,7 @@ import Utilities
import qualified System.Directory.Extra as IO
import Data.Either
import Rules.BinaryDist
-import Hadrian.Haskell.Cabal (pkgIdentifier)
+import Hadrian.Haskell.Cabal (pkgUnitId)
import Oracles.Setting
{-
@@ -54,7 +54,8 @@ cabalBuildRules = do
need (lib_targets ++ (map (\(_, p) -> p) (bin_targets ++ iserv_targets)))
distDir <- Context.distDir Stage1
- rtsDir <- pkgIdentifier rts
+ rtsDir <- pkgUnitId Stage1 rts
+ -- let rtsDir = "rts"
let ghcBuildDir = root -/- stageString Stage1
rtsIncludeDir = ghcBuildDir -/- "lib" -/- distDir -/- rtsDir
diff --git a/hadrian/src/Rules/Documentation.hs b/hadrian/src/Rules/Documentation.hs
index 6e6654278f..858ce9b773 100644
--- a/hadrian/src/Rules/Documentation.hs
+++ b/hadrian/src/Rules/Documentation.hs
@@ -293,7 +293,7 @@ parsePkgDocTarget root = do
_ <- Parsec.string root *> Parsec.optional (Parsec.char '/')
_ <- Parsec.string (htmlRoot ++ "/")
_ <- Parsec.string "libraries/"
- (pkgname, _) <- parsePkgId <* Parsec.char '/'
+ (pkgname, _, _) <- parsePkgId <* Parsec.char '/'
Parsec.choice
[ Parsec.try (Parsec.string "haddock-prologue.txt")
*> pure (HaddockPrologue pkgname)
diff --git a/hadrian/src/Rules/Generate.hs b/hadrian/src/Rules/Generate.hs
index c38d454617..6aa9f19b47 100644
--- a/hadrian/src/Rules/Generate.hs
+++ b/hadrian/src/Rules/Generate.hs
@@ -14,6 +14,7 @@ import Oracles.Flag
import Oracles.ModuleFiles
import Oracles.Setting
import Hadrian.Haskell.Cabal.Type (PackageData(version))
+import Hadrian.Haskell.Cabal
import Hadrian.Oracles.Cabal (readPackageData)
import Packages
import Rules.Libffi
@@ -483,16 +484,15 @@ generateConfigHs = do
trackGenerateHs
cProjectName <- getSetting ProjectName
cBooterVersion <- getSetting GhcVersion
- cProjectVersionMunged <- getSetting ProjectVersionMunged
- -- ROMES:TODO:HASH First we attempt a fixed unit-id with version but without hash.
- --
- -- We now use a more informative unit-id for ghc. See Note [GHC's Unit Id]
- -- in GHC.Unit.Types
+ -- We now give a unit-id with a version and a hash to ghc.
+ -- See Note [GHC's Unit Id] in GHC.Unit.Types
--
-- It's crucial that the unit-id matches the unit-key -- ghc is no longer
-- part of the WiringMap, so we don't to go back and forth between the
- -- unit-id and the unit-key -- we take care here that they are the same.
- let cProjectUnitId = "ghc-" ++ cProjectVersionMunged -- ROMES:TODO:HASH
+ -- unit-id and the unit-key -- we take care that they are the same by using
+ -- 'pkgUnitId' on 'compiler' (the ghc-library package) to create the
+ -- unit-id in both situations.
+ cProjectUnitId <- expr . (`pkgUnitId` compiler) =<< getStage
return $ unlines
[ "module GHC.Settings.Config"
, " ( module GHC.Version"
@@ -589,3 +589,5 @@ generatePlatformHostHs = do
, "hostPlatformArchOS :: ArchOS"
, "hostPlatformArchOS = ArchOS hostPlatformArch hostPlatformOS"
]
+
+
diff --git a/hadrian/src/Rules/Library.hs b/hadrian/src/Rules/Library.hs
index 2e63f1768f..d12249073c 100644
--- a/hadrian/src/Rules/Library.hs
+++ b/hadrian/src/Rules/Library.hs
@@ -45,7 +45,7 @@ libraryRules = do
registerStaticLib :: FilePath -> FilePath -> Action ()
registerStaticLib root archivePath = do
-- Simply need the ghc-pkg database .conf file.
- GhcPkgPath _ stage _ (LibA name _ w)
+ GhcPkgPath _ stage _ (LibA name _ _ w)
<- parsePath (parseGhcPkgLibA root)
"<.a library (register) path parser>"
archivePath
@@ -56,7 +56,7 @@ registerStaticLib root archivePath = do
-- the second argument.
buildStaticLib :: FilePath -> FilePath -> Action ()
buildStaticLib root archivePath = do
- l@(BuildPath _ stage _ (LibA pkgname _ way))
+ l@(BuildPath _ stage _ (LibA pkgname _ _ way))
<- parsePath (parseBuildLibA root)
"<.a library (build) path parser>"
archivePath
@@ -75,7 +75,7 @@ buildStaticLib root archivePath = do
registerDynamicLib :: FilePath -> String -> FilePath -> Action ()
registerDynamicLib root suffix dynlibpath = do
-- Simply need the ghc-pkg database .conf file.
- (GhcPkgPath _ stage _ (LibDyn name _ w _))
+ (GhcPkgPath _ stage _ (LibDyn name _ _ w _))
<- parsePath (parseGhcPkgLibDyn root suffix)
"<dyn register lib parser>"
dynlibpath
@@ -99,7 +99,7 @@ buildDynamicLib root suffix dynlibpath = do
-- See Note [Merging object files for GHCi] in GHC.Driver.Pipeline.
buildGhciLibO :: FilePath -> FilePath -> Action ()
buildGhciLibO root ghcilibPath = do
- l@(BuildPath _ stage _ (LibGhci _ _ _))
+ l@(BuildPath _ stage _ (LibGhci _ _ _ _))
<- parsePath (parseBuildLibGhci root)
"<.o ghci lib (build) path parser>"
ghcilibPath
@@ -134,7 +134,7 @@ files etc.
buildPackage :: FilePath -> FilePath -> Action ()
buildPackage root fp = do
- l@(BuildPath _ _ _ (PkgStamp _ _ way)) <- parsePath (parseStampPath root) "<.stamp parser>" fp
+ l@(BuildPath _ _ _ (PkgStamp _ _ _ way)) <- parsePath (parseStampPath root) "<.stamp parser>" fp
let ctx = stampContext l
srcs <- hsSources ctx
gens <- interpretInContext ctx generatedDependencies
@@ -226,47 +226,47 @@ needLibrary cs = need =<< concatMapM (libraryTargets True) cs
-- * Library paths types and parsers
--- | > libHS<pkg name>-<pkg version>[_<way suffix>].a
-data LibA = LibA String [Integer] Way deriving (Eq, Show)
+-- | > libHS<pkg name>-<pkg version>-<pkg hash>[_<way suffix>].a
+data LibA = LibA String [Integer] String Way deriving (Eq, Show)
-- | > <so or dylib>
data DynLibExt = So | Dylib deriving (Eq, Show)
--- | > libHS<pkg name>-<pkg version>[_<way suffix>]-ghc<ghc version>.<so|dylib>
-data LibDyn = LibDyn String [Integer] Way DynLibExt deriving (Eq, Show)
+-- | > libHS<pkg name>-<pkg version>-<pkg hash>[_<way suffix>]-ghc<ghc version>.<so|dylib>
+data LibDyn = LibDyn String [Integer] String Way DynLibExt deriving (Eq, Show)
--- | > HS<pkg name>-<pkg version>[_<way suffix>].o
-data LibGhci = LibGhci String [Integer] Way deriving (Eq, Show)
+-- | > HS<pkg name>-<pkg version>-<pkg hash>[_<way suffix>].o
+data LibGhci = LibGhci String [Integer] String Way deriving (Eq, Show)
-- | Get the 'Context' corresponding to the build path for a given static library.
libAContext :: BuildPath LibA -> Context
-libAContext (BuildPath _ stage pkgpath (LibA pkgname _ way)) =
+libAContext (BuildPath _ stage pkgpath (LibA pkgname _ _ way)) =
Context stage pkg way Final
where
pkg = library pkgname pkgpath
-- | Get the 'Context' corresponding to the build path for a given GHCi library.
libGhciContext :: BuildPath LibGhci -> Context
-libGhciContext (BuildPath _ stage pkgpath (LibGhci pkgname _ way)) =
+libGhciContext (BuildPath _ stage pkgpath (LibGhci pkgname _ _ way)) =
Context stage pkg way Final
where
pkg = library pkgname pkgpath
-- | Get the 'Context' corresponding to the build path for a given dynamic library.
libDynContext :: BuildPath LibDyn -> Context
-libDynContext (BuildPath _ stage pkgpath (LibDyn pkgname _ way _)) =
+libDynContext (BuildPath _ stage pkgpath (LibDyn pkgname _ _ way _)) =
Context stage pkg way Final
where
pkg = library pkgname pkgpath
-- | Get the 'Context' corresponding to the build path for a given static library.
stampContext :: BuildPath PkgStamp -> Context
-stampContext (BuildPath _ stage _ (PkgStamp pkgname _ way)) =
+stampContext (BuildPath _ stage _ (PkgStamp pkgname _ _ way)) =
Context stage pkg way Final
where
pkg = unsafeFindPackageByName pkgname
-data PkgStamp = PkgStamp String [Integer] Way deriving (Eq, Show)
+data PkgStamp = PkgStamp String [Integer] String Way deriving (Eq, Show)
-- | Parse a path to a ghci library to be built, making sure the path starts
@@ -313,34 +313,34 @@ parseGhcPkgLibDyn root ext = parseGhcPkgPath root (parseLibDynFilename ext)
parseLibAFilename :: Parsec.Parsec String () LibA
parseLibAFilename = do
_ <- Parsec.string "libHS"
- (pkgname, pkgver) <- parsePkgId
+ (pkgname, pkgver, pkghash) <- parsePkgId
way <- parseWaySuffix vanilla
_ <- Parsec.string ".a"
- return (LibA pkgname pkgver way)
+ return (LibA pkgname pkgver pkghash way)
-- | Parse the filename of a ghci library to be built into a 'LibGhci' value.
parseLibGhciFilename :: Parsec.Parsec String () LibGhci
parseLibGhciFilename = do
_ <- Parsec.string "HS"
- (pkgname, pkgver) <- parsePkgId
+ (pkgname, pkgver, pkghash) <- parsePkgId
_ <- Parsec.string "."
way <- parseWayPrefix vanilla
_ <- Parsec.string "o"
- return (LibGhci pkgname pkgver way)
+ return (LibGhci pkgname pkgver pkghash way)
-- | Parse the filename of a dynamic library to be built into a 'LibDyn' value.
parseLibDynFilename :: String -> Parsec.Parsec String () LibDyn
parseLibDynFilename ext = do
_ <- Parsec.string "libHS"
- (pkgname, pkgver) <- parsePkgId
+ (pkgname, pkgver, pkghash) <- parsePkgId
way <- addWayUnit Dynamic <$> parseWaySuffix dynamic
_ <- optional $ Parsec.string "-ghc" *> parsePkgVersion
_ <- Parsec.string ("." ++ ext)
- return (LibDyn pkgname pkgver way $ if ext == "so" then So else Dylib)
+ return (LibDyn pkgname pkgver pkghash way $ if ext == "so" then So else Dylib)
parseStamp :: Parsec.Parsec String () PkgStamp
parseStamp = do
_ <- Parsec.string "stamp-"
- (pkgname, pkgver) <- parsePkgId
+ (pkgname, pkgver, pkghash) <- parsePkgId
way <- parseWaySuffix vanilla
- return (PkgStamp pkgname pkgver way)
+ return (PkgStamp pkgname pkgver pkghash way)
diff --git a/hadrian/src/Rules/Register.hs b/hadrian/src/Rules/Register.hs
index 8543576215..967f403926 100644
--- a/hadrian/src/Rules/Register.hs
+++ b/hadrian/src/Rules/Register.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE TypeApplications #-}
module Rules.Register (
configurePackageRules, registerPackageRules, registerPackages,
libraryTargets
@@ -20,11 +21,16 @@ import Utilities
import Hadrian.Haskell.Cabal.Type
import qualified Text.Parsec as Parsec
import qualified Data.Set as Set
+import qualified Data.Char as Char
+import Data.Bifunctor (bimap)
import Distribution.Version (Version)
-import qualified Distribution.Parsec as Cabal
-import qualified Distribution.Types.PackageName as Cabal
import qualified Distribution.Types.PackageId as Cabal
+import qualified Distribution.Types.PackageName as Cabal
+import qualified Distribution.Parsec as Cabal
+import qualified Distribution.Compat.Parsing as Cabal
+import qualified Distribution.Parsec.FieldLineStream as Cabal
+import qualified Distribution.Compat.CharParsing as CabalCharParsing
import qualified Hadrian.Haskell.Cabal.Parse as Cabal
import qualified System.Directory as IO
@@ -183,7 +189,7 @@ buildConfFinal rs context@Context {..} _conf = do
-- so that if any change ends up modifying a library (but not its .conf
-- file), we still rebuild things that depend on it.
dir <- (-/-) <$> libPath context <*> distDir stage
- pkgid <- pkgIdentifier package
+ pkgid <- pkgUnitId stage package
files <- liftIO $
(++) <$> getDirectoryFilesIO "." [dir -/- "*libHS"++pkgid++"*"]
<*> getDirectoryFilesIO "." [dir -/- pkgid -/- "**"]
@@ -251,11 +257,33 @@ getPackageNameFromConfFile conf
takeBaseName conf ++ ": " ++ err
Right (name, _) -> return name
+-- | Parse a cabal-like name
parseCabalName :: String -> Either String (String, Version)
-parseCabalName = fmap f . Cabal.eitherParsec
+-- Try to parse a name with a hash, but otherwise parse a name without one.
+parseCabalName s = bimap show id (Cabal.runParsecParser parser "<parseCabalName>" $ Cabal.fieldLineStreamFromString s)
where
- f :: Cabal.PackageId -> (String, Version)
- f pkg_id = (Cabal.unPackageName $ Cabal.pkgName pkg_id, Cabal.pkgVersion pkg_id)
+ parser = Cabal.try nameWithHashParser <|> (extractVersion <$> Cabal.parsec)
+
+ extractVersion :: Cabal.PackageId -> (String, Version)
+ extractVersion pkg_id = (Cabal.unPackageName $ Cabal.pkgName pkg_id, Cabal.pkgVersion pkg_id)
+ -- Definition similar to 'Parsec PackageIdentifier' from Cabal but extended
+ -- with logic for parsing the hash (despite not returning it)
+ nameWithHashParser :: Cabal.ParsecParser (String, Version)
+ nameWithHashParser = Cabal.PP $ \_ -> do
+ xs' <- Parsec.sepBy component (Parsec.char '-')
+ case reverse xs' of
+ _hash:version_str:xs ->
+ case Cabal.simpleParsec @Version version_str of
+ Nothing -> fail ("failed to parse a version from " <> version_str)
+ Just v ->
+ if not (null xs) && all (\c -> all (/= '.') c && not (all Char.isDigit c)) xs
+ then return $ (intercalate "-" (reverse xs), v)
+ else fail "all digits or a dot in a portion of package name"
+ _ -> fail "couldn't parse a hash, a version and a name"
+ where
+ component = CabalCharParsing.munch1 (\c -> Char.isAlphaNum c || c == '.')
+
+
-- | Return extra library targets.
extraTargets :: Context -> Action [FilePath]
diff --git a/hadrian/src/Settings/Builders/Cabal.hs b/hadrian/src/Settings/Builders/Cabal.hs
index 2e421857e5..75eb78ccd8 100644
--- a/hadrian/src/Settings/Builders/Cabal.hs
+++ b/hadrian/src/Settings/Builders/Cabal.hs
@@ -85,7 +85,7 @@ commonCabalArgs :: Stage -> Args
commonCabalArgs stage = do
verbosity <- expr getVerbosity
pkg <- getPackage
- package_id <- expr $ pkgIdentifier pkg
+ package_id <- expr $ pkgUnitId stage pkg
let prefix = "${pkgroot}" ++ (if windowsHost then "" else "/..")
mconcat [ -- Don't strip libraries when cross compiling.
-- TODO: We need to set @--with-strip=(stripCmdPath :: Action FilePath)@,
@@ -101,7 +101,7 @@ commonCabalArgs stage = do
, arg "--cabal-file"
, arg $ pkgCabalFile pkg
, arg "--ipid"
- , arg "$pkg-$version"
+ , arg package_id
, arg "--prefix"
, arg prefix
diff --git a/hadrian/src/Settings/Builders/Ghc.hs b/hadrian/src/Settings/Builders/Ghc.hs
index b211657b9e..2e5a15cee5 100644
--- a/hadrian/src/Settings/Builders/Ghc.hs
+++ b/hadrian/src/Settings/Builders/Ghc.hs
@@ -246,21 +246,24 @@ wayGhcArgs = do
, (way == debug || way == debugDynamic) ?
pure ["-ticky", "-DTICKY_TICKY"] ]
+-- | Args related to correct handling of packages, such as setting
+-- -this-unit-id and passing -package-id for dependencies
packageGhcArgs :: Args
packageGhcArgs = do
package <- getPackage
+ stage <- getStage
ghc_ver <- readVersion <$> (expr . ghcVersionStage =<< getStage)
-- ROMES: Until the boot compiler no longer needs ghc's
-- unit-id to be "ghc", the stage0 compiler must be built
-- with `-this-unit-id ghc`, while the wired-in unit-id of
-- ghc is correctly set to the unit-id we'll generate for
- -- stage1 (set in generateVersionHs in Rules.Generate).
+ -- stage1 (set in generateConfigHs in Rules.Generate).
--
-- However, we don't need to set the unit-id of "ghc" to "ghc" when
-- building stage0 because we have a flag in compiler/ghc.cabal.in that is
-- sets `-this-unit-id ghc` when hadrian is building stage0, which will
-- overwrite this one.
- pkgId <- expr $ pkgIdentifier package
+ pkgId <- expr $ pkgUnitId stage package
mconcat [ arg "-hide-all-packages"
, arg "-no-user-package-db"
, arg "-package-env -"
diff --git a/hadrian/src/Settings/Builders/Haddock.hs b/hadrian/src/Settings/Builders/Haddock.hs
index 3d1fb28fc5..902b2f85e2 100644
--- a/hadrian/src/Settings/Builders/Haddock.hs
+++ b/hadrian/src/Settings/Builders/Haddock.hs
@@ -38,11 +38,13 @@ haddockBuilderArgs = mconcat
output <- getOutput
pkg <- getPackage
root <- getBuildRoot
+ stage <- getStage
context <- getContext
version <- expr $ pkgVersion pkg
synopsis <- expr $ pkgSynopsis pkg
haddocks <- expr $ haddockDependencies context
- haddocks_with_versions <- expr $ sequence $ [(,h) <$> pkgIdentifier p | (p, h) <- haddocks]
+ haddocks_with_versions <- expr $ sequence $ [(,h) <$> pkgUnitId stage p | (p, h) <- haddocks]
+
hVersion <- expr $ pkgVersion haddock
statsDir <- expr $ haddockStatsFilesDir
baseUrlTemplate <- expr (docsBaseUrl <$> userSetting defaultDocArgs)
diff --git a/hadrian/src/Settings/Default.hs b/hadrian/src/Settings/Default.hs
index 378fc27a94..f725c2cc9e 100644
--- a/hadrian/src/Settings/Default.hs
+++ b/hadrian/src/Settings/Default.hs
@@ -17,7 +17,6 @@ import qualified Data.Set as Set
import qualified Hadrian.Builder.Sphinx
import qualified Hadrian.Builder.Tar
-import Hadrian.Haskell.Cabal.Type
import CommandLine
import Expression
diff --git a/testsuite/driver/testlib.py b/testsuite/driver/testlib.py
index 9cb3a924ab..09ab06d469 100644
--- a/testsuite/driver/testlib.py
+++ b/testsuite/driver/testlib.py
@@ -969,8 +969,9 @@ def normalise_win32_io_errors(name, opts):
def normalise_version_( *pkgs ):
def normalise_version__( str ):
- return re.sub('(' + '|'.join(map(re.escape,pkgs)) + ')-[0-9.]+(-[0-9a-f]+)?',
- '\\1-<VERSION>', str)
+ # (name)(-version)(-hash)(-components)
+ return re.sub('(' + '|'.join(map(re.escape,pkgs)) + ')-[0-9.]+(-[0-9a-zA-Z]+)?(-[0-9a-zA-Z]+)?',
+ '\\1-<VERSION>-<HASH>', str)
return normalise_version__
def normalise_version( *pkgs ):
diff --git a/testsuite/tests/backpack/cabal/bkpcabal02/all.T b/testsuite/tests/backpack/cabal/bkpcabal02/all.T
index 995f945080..ccedfce046 100644
--- a/testsuite/tests/backpack/cabal/bkpcabal02/all.T
+++ b/testsuite/tests/backpack/cabal/bkpcabal02/all.T
@@ -5,6 +5,6 @@ else:
test('bkpcabal02',
[extra_files(['p', 'q', 'bkpcabal02.cabal', 'Setup.hs']),
- js_broken(22351)],
+ js_broken(22351), normalise_version('bkpcabal01')],
run_command,
['$MAKE -s --no-print-directory bkpcabal02 ' + cleanup])
diff --git a/testsuite/tests/cabal/t18567/all.T b/testsuite/tests/cabal/t18567/all.T
index bbe84cda99..a01cd396ea 100644
--- a/testsuite/tests/cabal/t18567/all.T
+++ b/testsuite/tests/cabal/t18567/all.T
@@ -6,6 +6,7 @@ else:
test('T18567',
[ extra_files(['Setup.hs', 'sublib/', 'sublib-unused', 'src/', 'internal-lib.cabal'])
, js_broken(22356)
+ , normalise_version('internal-lib')
],
run_command,
['$MAKE -s --no-print-directory T18567 ' + cleanup])
diff --git a/testsuite/tests/driver/T16318/Makefile b/testsuite/tests/driver/T16318/Makefile
index b6566cf145..9a6585745c 100644
--- a/testsuite/tests/driver/T16318/Makefile
+++ b/testsuite/tests/driver/T16318/Makefile
@@ -5,7 +5,7 @@ include $(TOP)/mk/test.mk
test_pe = test-package-environment
T16318:
- "$(GHC_PKG)" latest base > $(test_pe)
+ "$(GHC_PKG)" field base id --simple-output > $(test_pe)
"$(TEST_HC)" $(TEST_HC_OPTS) -v1 -ignore-dot-ghci -package-env $(test_pe) -e "putStrLn \"Hello\"" > out 2>&1
C=`cat out | grep "Loaded package environment" -c` ; \
if [ $$C != "1" ]; then false; fi
diff --git a/testsuite/tests/driver/T18125/Makefile b/testsuite/tests/driver/T18125/Makefile
index d54e05a8ee..fa4a3917e4 100644
--- a/testsuite/tests/driver/T18125/Makefile
+++ b/testsuite/tests/driver/T18125/Makefile
@@ -6,8 +6,8 @@ test_pe = test-package-environment
test_lib = containers
T18125:
- "$(GHC_PKG)" latest base > $(test_pe)
- "$(GHC_PKG)" latest $(test_lib) >> $(test_pe)
+ "$(GHC_PKG)" field base id --simple-output > $(test_pe)
+ "$(GHC_PKG)" field $(test_lib) id --simple-outpu >> $(test_pe)
"$(TEST_HC)" $(TEST_HC_OPTS) -Wunused-packages -package-env $(test_pe) T18125.hs > out 2>&1
C=`cat out | grep "$(test_lib)" -c` ; \
if [ $$C != "1" ]; then false; fi
diff --git a/testsuite/tests/ghci/scripts/Makefile b/testsuite/tests/ghci/scripts/Makefile
index a76b8c090c..39c6c74dde 100644
--- a/testsuite/tests/ghci/scripts/Makefile
+++ b/testsuite/tests/ghci/scripts/Makefile
@@ -69,4 +69,4 @@ T12023:
.PHONY: T19650_setup
T19650_setup:
- '$(GHC_PKG)' latest base > my_package_env
+ '$(GHC_PKG)' field base id --simple-output > my_package_env
diff --git a/testsuite/tests/package/all.T b/testsuite/tests/package/all.T
index e5d7151b67..89b2ba7a56 100644
--- a/testsuite/tests/package/all.T
+++ b/testsuite/tests/package/all.T
@@ -19,4 +19,4 @@ test('package09e', normal, compile_fail, ['-package "containers (Data.Map as M,
test('package10', normal, compile, ['-hide-all-packages -package "ghc (GHC.Types.Unique.FM as Prelude)" '])
test('T4806', normalise_version('containers'), compile_fail, ['-ignore-package containers'])
-test('T4806a', normalise_version('deepseq', 'containers'), compile_fail, ['-ignore-package deepseq'])
+test('T4806a', normalise_version('deepseq', 'containers', 'template-haskell'), compile_fail, ['-ignore-package deepseq'])
diff --git a/utils/ghc-pkg/Main.hs b/utils/ghc-pkg/Main.hs
index 8746b0296e..0bfc2d159a 100644
--- a/utils/ghc-pkg/Main.hs
+++ b/utils/ghc-pkg/Main.hs
@@ -23,6 +23,7 @@
module Main (main) where
+import Debug.Trace
import qualified GHC.Unit.Database as GhcPkg
import GHC.Unit.Database hiding (mkMungePathUrl)
import GHC.HandleEncoding
@@ -1600,7 +1601,7 @@ listPackages verbosity my_flags mPackageName mModuleName = do
simplePackageList :: [Flag] -> [InstalledPackageInfo] -> IO ()
simplePackageList my_flags pkgs = do
let showPkg :: InstalledPackageInfo -> String
- showPkg | FlagShowUnitIds `elem` my_flags = display . installedUnitId
+ showPkg | FlagShowUnitIds `elem` my_flags = traceId . display . installedUnitId
| FlagNamesOnly `elem` my_flags = display . mungedName . mungedId
| otherwise = display . mungedId
strs = map showPkg pkgs