diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2e698a8f08..23f2072bef 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -5,9 +5,9 @@ on: - master env: - ghc_version: "9.6.4" + ghc_version: "9.6.5" stack_version: "2.15.1" - hpack_version: '0.34.2' + hpack_version: '0.36' jobs: release: diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c38a587fa6..4decbeaf58 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -10,9 +10,9 @@ concurrency: cancel-in-progress: true env: - ghc_version: "9.6.4" + ghc_version: "9.6.5" stack_version: "2.15.1" - hpack_version: '0.34.2' + hpack_version: '0.36' jobs: formatting: diff --git a/README.md b/README.md index 9381f05aa7..391907cc79 100644 --- a/README.md +++ b/README.md @@ -170,11 +170,13 @@ Note that only `cabal` currently works within the nix shell and since it does no ### Upgrading dependencies -When one of the package description files (`kore.cabal`, `kore-rpc-types.cabal`) changes, or when upgrading to a newer `stack` resolver, the dependencies need to be consolidated to avoid accidental breakage from incompatible up-stream updates. We use a `cabal.project.freeze` file to pin the dependencies to what the current `stack` resolver is using. +We use `stack.yaml` (and hence `stack.yaml.lock`) as the source of truth about the Haskell package set the project is built with. The Nix flake uses [stacklock2nix](https://github.com/cdepillabout/stacklock2nix) to make the packages specified by the lock file available to `cabal-install` inside Nix. -The script [`scripts/freeze-cabal-to-stack-resolver.sh`](https://github.com/runtimeverification/haskell-backend/tree/master/scripts/freeze-cabal-to-stack-resolver.sh) should do most of that work (the existing `freeze` file must be removed before running it), and [`scripts/check-cabal-stack-sync.sh`](https://github.com/runtimeverification/haskell-backend/tree/master/scripts/check-cabal-stack-sync.sh) checks the result. Some manual adjustments will still be necessary for the `nix` builds in CI and locally to work. +Any GHC or resolver upgrades must double-check the `ghcVersion` value in the [`flake.nix`](https://github.com/runtimeverification/haskell-backend/blob/master/flake.nix#L32) file. -In addition, any GHC or resolver upgrades must double-check the `compiler-nix-name` and `index-state` values in the [`flake.nix`](https://github.com/runtimeverification/haskell-backend/blob/master/flake.nix#L41-L42) file. +It may also be required to update [`all-cabal-hashes`](https://github.com/runtimeverification/haskell-backend/blob/master/flake.nix#L101). + +To support the scenario of building the project with `cabal-install` outside of Nix, We use a `cabal.project.freeze` file to pin the dependencies to what the current `stack` resolver is using. The script [`scripts/freeze-cabal-to-stack-resolver.sh`](https://github.com/runtimeverification/haskell-backend/tree/master/scripts/freeze-cabal-to-stack-resolver.sh) should do most of that work, and [`scripts/check-cabal-stack-sync.sh`](https://github.com/runtimeverification/haskell-backend/tree/master/scripts/check-cabal-stack-sync.sh) checks the result. Some manual adjustments will still be necessary for the `nix` builds in CI and locally to work. ### Integration tests diff --git a/cabal.project.freeze b/cabal.project.freeze index de70109686..880df446e0 100644 --- a/cabal.project.freeze +++ b/cabal.project.freeze @@ -1,261 +1,204 @@ active-repositories: hackage.haskell.org:merge -constraints: any.Cabal ==3.10.1.0, - any.Cabal-syntax ==3.10.1.0, +constraints: any.Cabal ==3.10.3.0, + any.Cabal-syntax ==3.10.3.0, any.Glob ==0.10.2, any.HUnit ==1.6.2.0, - any.OneTuple ==0.4.1.1, + any.OneTuple ==0.4.2, any.Only ==0.1, any.QuickCheck ==2.14.3, - QuickCheck -old-random +templatehaskell, any.StateVar ==1.2.2, any.adjunctions ==4.4.2, any.aeson ==2.1.2.1, - aeson -cffi +ordered-keymap, any.aeson-pretty ==0.8.10, - aeson-pretty -lib-only, any.ansi-terminal ==1.0.2, - ansi-terminal -example, any.ansi-terminal-types ==0.11.5, any.array ==0.5.6.0, - any.assoc ==1.1, - assoc +tagged, + any.assoc ==1.1.1, any.async ==2.2.5, - async -bench, any.attoparsec ==0.14.4, - attoparsec -developer, - any.attoparsec-aeson ==2.1.0.0, any.auto-update ==0.1.6, any.barbies ==2.0.5.0, - any.base ==4.18.2.0, + any.base ==4.18.2.1, any.base-compat ==0.13.1, any.base-compat-batteries ==0.13.1, - any.base-orphans ==0.9.1, + any.base-orphans ==0.9.2, any.base16 ==1.0, any.basement ==0.0.16, - any.bifunctors ==5.6.1, - bifunctors +tagged, + any.bifunctors ==5.6.2, any.binary ==0.8.9.1, any.bitvec ==1.1.5.0, - bitvec +simd, any.blaze-builder ==0.4.2.3, - any.blaze-html ==0.9.1.2, + any.blaze-html ==0.9.2.0, any.blaze-markup ==0.8.3.0, any.blaze-textual ==0.2.3.1, - blaze-textual -developer -integer-simple +native, - any.boring ==0.2.1, - boring +tagged, + any.boring ==0.2.2, any.bytebuild ==0.3.16.2, - bytebuild -checked, any.byteslice ==0.2.13.2, - byteslice +avoid-rawmemchr, - any.bytesmith ==0.3.11.0, + any.bytesmith ==0.3.11.1, any.bytestring ==0.11.5.3, - any.bz2 ==1.0.1.0, - bz2 -cross +with-bzlib, - any.c2hs ==0.28.8, - c2hs +base3 -regression, + any.bz2 ==1.0.1.2, any.cabal-doctest ==1.0.9, any.call-stack ==0.4.0, any.case-insensitive ==1.2.1.0, any.casing ==0.1.4.1, any.cereal ==0.5.8.3, - cereal -bytestring-builder, any.cereal-conduit ==0.8.0, - any.chronos ==1.1.6.0, + any.chronos ==1.1.6.1, any.clock ==0.8.4, - clock -llvm, - any.cmdargs ==0.10.22, - cmdargs +quotation -testprog, - any.co-log ==0.6.0.2, - co-log -tutorial, - any.co-log-core ==0.3.2.1, + any.co-log ==0.6.1.0, + any.co-log-core ==0.3.2.2, any.colour ==2.3.6, any.comonad ==5.0.8, - comonad +containers +distributive +indexed-traversable, - any.concurrent-output ==1.10.20, + any.concurrent-output ==1.10.21, any.conduit ==1.3.5, any.conduit-extra ==1.3.6, - any.constraints ==0.14, + any.constraints ==0.14.2, any.constraints-extras ==0.4.0.0, - constraints-extras +build-readme, any.containers ==0.6.7, any.contiguous ==0.6.4.2, any.contravariant ==1.5.5, - contravariant +semigroups +statevar +tagged, any.cryptonite ==0.30, - cryptonite -check_alignment +integer-gmp -old_toolchain_inliner +support_aesni +support_deepseq -support_pclmuldq +support_rdrand -support_sse +use_target_attributes, any.data-default ==0.7.1.1, any.data-default-class ==0.1.2.0, any.data-default-instances-containers ==0.0.1, any.data-default-instances-dlist ==0.0.1, any.data-default-instances-old-locale ==0.0.1, - any.data-fix ==0.3.2, + any.data-fix ==0.3.3, any.decision-diagrams ==0.2.0.0, any.deepseq ==1.4.8.1, any.dependent-map ==0.4.0.0, any.dependent-sum ==0.7.2.0, any.deriving-aeson ==0.2.9, any.direct-sqlite ==2.3.29, - direct-sqlite +dbstat +fulltextsearch +haveusleep +json1 -mathfunctions -systemlib +urifilenames, - any.directory ==1.3.8.1, + any.directory ==1.3.8.4, any.distributive ==0.6.2.1, - distributive +semigroups +tagged, any.dlist ==1.0, - dlist -werror, any.easy-file ==0.2.5, any.entropy ==0.4.1.10, - entropy -donotgetentropy, any.erf ==2.0.0.0, any.errors ==2.3.0, any.exceptions ==0.10.7, - any.extra ==1.7.14, - any.fast-logger ==3.2.2, + any.extra ==1.7.16, + any.fast-logger ==3.2.3, any.fgl ==5.8.2.0, - fgl +containers042, - any.filepath ==1.4.200.1, + any.filepath ==1.4.300.1, any.free ==5.2, any.generic-lens ==2.2.2.0, any.generic-lens-core ==2.2.1.0, any.generically ==0.1.1, any.generics-sop ==0.5.1.3, - any.ghc-boot-th ==9.6.4, + any.ghc-boot-th ==9.6.5, any.ghc-compact ==0.1.0.0, any.ghc-events ==0.19.0.1, any.ghc-prim ==0.10.0, - any.ghc-trace-events ==0.1.2.8, + any.ghc-trace-events ==0.1.2.9, any.gitrev ==1.3.1, any.graphviz ==2999.20.2.0, - graphviz -test-parsing, any.hashable ==1.4.2.0, - hashable +integer-gmp -random-initial-seed, any.hashtables ==1.3.1, - hashtables -bounds-checking -debug -detailed-profiling -portable -sse42 +unsafe-tricks, any.haskeline ==0.8.2.1, any.haskell-lexer ==1.1.1, any.haskell-src-exts ==1.23.1, - any.haskell-src-meta ==0.8.13, + any.haskell-src-meta ==0.8.14, any.hedgehog ==1.4, any.hpp ==0.6.5, any.hsc2hs ==0.68.10, hsc2hs -in-ghc-tree, - any.hspec ==2.11.7, - any.hspec-api ==2.11.7, - any.hspec-core ==2.11.7, - any.hspec-discover ==2.11.7, + any.hspec ==2.11.8, + any.hspec-api ==2.11.8, + any.hspec-core ==2.11.8, + any.hspec-discover ==2.11.8, any.hspec-expectations ==0.8.4, any.hspec-hedgehog ==0.1.1.0, any.indexed-profunctors ==0.1.1.1, - any.indexed-traversable ==0.1.3, - any.indexed-traversable-instances ==0.1.1.2, + any.indexed-traversable ==0.1.4, + any.indexed-traversable-instances ==0.1.2, any.integer-gmp ==1.1, any.integer-logarithms ==1.0.3.1, - integer-logarithms -check-bounds +integer-gmp, any.intern ==0.9.5, - any.invariant ==0.6.2, + any.invariant ==0.6.3, any.json-rpc ==1.0.4, any.junit-xml ==0.1.0.3, - any.kan-extensions ==5.2.5, + any.kan-extensions ==5.2.6, kore +threaded, any.language-c ==0.9.3, - language-c -allwarnings +iecfpextension +usebytestrings, any.lens ==5.2.3, - lens -benchmark-uniplate -dump-splices +inlining -j +test-hunit +test-properties +test-templates +trustworthy, - any.libyaml ==0.1.2, - libyaml -no-unicode -system-libyaml, + any.libyaml ==0.1.4, + any.libyaml-clib ==0.2.5, any.lifted-async ==0.10.2.5, any.lifted-base ==0.2.3.12, any.logict ==0.8.1.0, any.loop ==0.3.0, - any.math-functions ==0.3.4.3, - math-functions +system-erf +system-expm1, + any.math-functions ==0.3.4.4, any.matrix ==0.3.6.3, any.megaparsec ==9.5.0, - megaparsec -dev, any.memory ==0.18.0, - memory +support_bytestring +support_deepseq, any.mmorph ==1.2.0, any.monad-control ==1.0.3.1, any.monad-logger ==0.3.40, - monad-logger +template_haskell, any.monad-loops ==0.4.3, - monad-loops +base4, any.monad-validate ==1.3.0.0, - any.mono-traversable ==1.0.15.3, + any.mono-traversable ==1.0.17.0, any.mtl ==2.3.1, any.multiset ==0.3.4.3, any.mwc-random ==0.15.0.2, any.natural-arithmetic ==0.1.4.0, any.network ==3.1.4.0, - network -devel, - any.network-run ==0.2.6, + any.network-run ==0.2.8, any.old-locale ==1.0.0.7, any.old-time ==1.1.0.4, any.optparse-applicative ==0.18.1.0, - optparse-applicative +process, any.parallel ==3.2.2.0, any.parsec ==3.1.16.1, any.parser-combinators ==1.3.0, - parser-combinators -dev, any.polyparse ==1.13, any.pqueue ==1.5.0.0, any.pretty ==1.1.3.6, any.pretty-show ==1.10, any.prettyprinter ==1.7.1, - prettyprinter -buildreadme +text, any.prettyprinter-ansi-terminal ==1.1.3, any.primitive ==0.8.0.0, - any.primitive-addr ==0.1.0.2, - any.primitive-offset ==0.2.0.0, + any.primitive-addr ==0.1.0.3, + any.primitive-offset ==0.2.0.1, any.primitive-unlifted ==2.1.0.0, - any.process ==1.6.17.0, + any.process ==1.6.19.0, any.profunctors ==5.6.2, any.quickcheck-instances ==0.3.30, quickcheck-instances -bytestring-builder, any.quickcheck-io ==0.2.0, any.random ==1.2.1.2, any.recursion-schemes ==5.2.2.5, - recursion-schemes +template-haskell, - any.reflection ==2.1.7, - reflection -slow +template-haskell, + any.reflection ==2.1.8, any.regex-base ==0.94.0.2, any.regex-pcre-builtin ==0.95.2.3.8.44, any.resourcet ==1.3.0, any.rts ==1.0.2, - any.run-st ==0.1.3.2, + any.run-st ==0.1.3.3, any.safe ==0.3.21, any.safe-exceptions ==0.1.7.4, any.scientific ==0.3.7.0, - scientific -bytestring-builder -integer-simple, any.secp256k1-haskell ==1.1.0, - any.semialign ==1.3, - semialign +semigroupoids, - any.semigroupoids ==6.0.0.1, - semigroupoids +comonad +containers +contravariant +distributive +tagged +unordered-containers, + any.semialign ==1.3.1, + any.semigroupoids ==6.0.1, any.semigroups ==0.20, - semigroups +binary +bytestring -bytestring-builder +containers +deepseq +hashable +tagged +template-haskell +text +transformers +unordered-containers, any.smallcheck ==1.2.1.1, any.smtlib-backends ==0.3, any.smtlib-backends-process ==0.3, any.some ==1.0.6, - some +newtype-unsafe, any.sop-core ==0.5.0.2, any.split ==0.2.5, any.splitmix ==0.1.0.5, - splitmix -optimised-mixer, any.sqlite-simple ==0.4.19.0, any.stm ==2.5.1.0, any.stm-chans ==3.0.0.9, any.stm-conduit ==4.0.1, any.streaming-commons ==0.2.2.6, - streaming-commons -use-bytestring-builder, any.streams ==3.3.2, any.strict ==0.5, any.string-conversions ==0.4.0.1, any.syb ==0.7.2.4, any.tagged ==0.8.8, - tagged +deepseq +transformers, any.tar ==0.5.1.1, - tar -old-bytestring -old-time, any.tasty ==1.4.3, tasty +unix, any.tasty-discover ==5.0.0, @@ -272,46 +215,36 @@ constraints: any.Cabal ==3.10.1.0, any.terminal-size ==0.3.4, any.terminfo ==0.4.1.6, any.text ==2.0.2, - any.text-short ==0.1.5, - text-short -asserts, + any.text-short ==0.1.6, any.tf-random ==0.5, any.th-abstraction ==0.5.0.0, - any.th-compat ==0.1.4, + any.th-compat ==0.1.5, any.th-expand-syns ==0.4.11.0, any.th-lift ==0.8.4, any.th-orphans ==0.13.14, any.th-reify-many ==0.1.10, - any.these ==1.2, + any.these ==1.2.1, any.time ==1.12.2, any.time-compat ==1.9.6.1, - time-compat -old-locale, any.time-manager ==0.0.1, any.torsor ==0.1.0.1, any.transformers ==0.6.1.0, any.transformers-base ==0.4.6, - transformers-base +orphaninstances, any.transformers-compat ==0.7.2, - transformers-compat -five +five-three -four +generic-deriving +mtl -three -two, any.tuples ==0.1.0.0, - any.type-equality ==1, any.typed-process ==0.2.11.1, any.unix ==2.8.4.0, any.unix-compat ==0.7.1, - unix-compat -old-time, any.unix-time ==0.4.12, any.unliftio ==0.2.25.0, any.unliftio-core ==0.2.1.0, any.unordered-containers ==0.2.20, - unordered-containers -debug, any.utf8-string ==1.0.2, any.uuid-types ==1.0.5.1, any.vector ==0.13.1.0, - vector +boundschecks -internalchecks -unsafechecks -wall, - any.vector-algorithms ==0.9.0.1, - vector-algorithms +bench +boundschecks -internalchecks -llvm +properties -unsafechecks, + any.vector-algorithms ==0.9.0.2, any.vector-stream ==0.1.0.1, any.void ==0.7.3, - void -safe, any.wide-word ==0.1.6.0, any.witherable ==0.4.2, any.wl-pprint-annotated ==0.1.0.1, @@ -319,8 +252,6 @@ constraints: any.Cabal ==3.10.1.0, any.xml-conduit ==1.9.1.3, any.xml-types ==0.3.8, any.yaml ==0.11.11.2, - yaml +no-examples +no-exe, any.zigzag ==0.0.1.0, - any.zlib ==0.6.3.0, - zlib -bundled-c-zlib -non-blocking-ffi -pkg-config -index-state: hackage.haskell.org 2024-04-05T00:43:58Z + any.zlib ==0.6.3.0 +index-state: hackage.haskell.org 2024-05-24T09:11:31Z diff --git a/flake.nix b/flake.nix index 828f24af76..b745e72b62 100644 --- a/flake.nix +++ b/flake.nix @@ -28,7 +28,8 @@ makeWrapper ${pkg}/bin/${exe} $out/bin/${exe} --prefix PATH : ${pkgs.z3}/bin ''; }; - ghcVersion = pkgs: pkgs.haskell.packages.ghc964; + # This should based on the compiler version from the resolver in stack.yaml. + ghcVersion = pkgs: pkgs.haskell.packages.ghc965; in { overlay = final: prev: { haskell-backend = final.stacklock2nix { @@ -46,6 +47,7 @@ additionalHaskellPkgSetOverrides = hfinal: hprev: with final.haskell.lib; { crypton-x509 = dontCheck hprev.crypton-x509; + data-fix = doJailbreak hprev.data-fix; decision-diagrams = dontCheck hprev.decision-diagrams; fgl = dontCheck hprev.fgl; fgl-arbitrary = dontCheck hprev.fgl-arbitrary; @@ -53,8 +55,11 @@ json-rpc = dontCheck hprev.json-rpc; lifted-base = dontCheck hprev.lifted-base; prettyprinter = dontCheck hprev.prettyprinter; + semialign = doJailbreak hprev.semialign; smtlib-backends-process = dontCheck hprev.smtlib-backends-process; tar = dontCheck hprev.tar; + text-short = doJailbreak hprev.text-short; + these = doJailbreak hprev.these; hs-backend-booster = overrideCabal hprev.hs-backend-booster (drv: { doCheck = false; @@ -80,131 +85,7 @@ ghc-compact = null; }; - # everything belwo should be removed once HLS in nixpkgs catches up to ghc 9.6 - doctest-discover = dontCheck hprev.doctest-discover; - extensions = doJailbreak (dontCheck hprev.extensions); - filtrable = doJailbreak (dontCheck hprev.filtrable); - hie-bios = dontCheck hprev.hie-bios; - hw-fingertree = dontCheck hprev.hw-fingertree; - generic-arbitrary = dontCheck hprev.generic-arbitrary; - fourmolu = dontCheck hprev.fourmolu; - list-t = dontCheck hprev.list-t; - ghcide = (doJailbreak (overrideCabal hprev.ghcide (drv: { - version = "2.6.0.0"; - sha256 = "sha256-RSWtZE5ikoVW656l13Il6rgGRaW1+UdtIYxu6RhtKfU="; - }))).override { - implicit-hie-cradle = null; - }; - hiedb = overrideCabal hprev.hiedb (drv: { - version = "0.6.0.0"; - sha256 = "sha256-wpSO71esKsl4BddH5tPaqlIbPISonMv4fYEFlDwj4Ps="; - }); - implicit-hie = overrideCabal hprev.implicit-hie (drv: { - version = "0.1.4.0"; - sha256 = "sha256-kxgU1sG7n49tVxYXg+rLe5XmY5jhsg1lLsoHWSBt7yE="; - }); - stan = overrideCabal hprev.stan (drv: { - version = "0.1.2.0"; - sha256 = "sha256-+ntlOlKmLY3HjR8MA+Kzssre2DaCAeqgDIDDZ6VPopE="; - }); - haskell-language-server = dontCheck (overrideCabal hprev.haskell-language-server (drv: { - version = "2.6.0.0"; - sha256 = "sha256-NlW410Fhb44y0BgSdPgKSNm43KR9P9ImdcrfoByoDkg="; - libraryHaskellDepends = with hfinal; drv.libraryHaskellDepends ++ [hls-semantic-tokens-plugin hls-floskell-plugin ]; - })); - ansi-wl-pprint = hfinal.callPackage - ({ mkDerivation, base, lib, prettyprinter-compat-ansi-wl-pprint }: - mkDerivation { - pname = "ansi-wl-pprint"; - version = "1.0.2"; - sha256 = "234e1813a178e5466d121635e190e6ff33ea6f09c45120138824d5de76af2747"; - isLibrary = true; - isExecutable = true; - libraryHaskellDepends = [ - base prettyprinter-compat-ansi-wl-pprint - ]; - homepage = "http://github.com/ekmett/ansi-wl-pprint"; - description = "The Wadler/Leijen Pretty Printer for colored ANSI terminal output"; - license = lib.licenses.bsd3; - }) { }; - floskell = overrideCabal hprev.floskell (drv: { - version = "0.11.1"; - sha256 = "sha256-drMnL3rOV+hJjyLWDI7BLanOkZFcl9YGFl+7Zuj2qb0="; - libraryHaskellDepends = with hfinal; drv.libraryHaskellDepends ++ [ansi-wl-pprint]; - }); - hls-floskell-plugin = dontCheck (hfinal.callPackage - ({ mkDerivation, base, filepath, floskell, ghcide, hls-plugin-api - , hls-test-utils, lib, lsp-types, mtl, text, transformers - }: - mkDerivation { - pname = "hls-floskell-plugin"; - version = "2.6.0.0"; - sha256 = "33c6239e42774f3bc37ab0daf0f0dc5130a101bca91e8963fe1032eb2942d3f3"; - libraryHaskellDepends = [ - base floskell ghcide hls-plugin-api lsp-types mtl text transformers - ]; - testHaskellDepends = [ base filepath hls-test-utils ]; - description = "Integration with the Floskell code formatter"; - license = lib.licenses.asl20; - }) { }); - hls-semantic-tokens-plugin = dontCheck (hfinal.callPackage - ({ mkDerivation, aeson, array, base, bytestring, containers - , data-default, deepseq, extra, filepath, ghc, ghcide - , ghcide-test-utils, hiedb, hls-graph, hls-plugin-api - , hls-test-utils, lens, lib, lsp, lsp-test, mtl, sqlite-simple, syb - , template-haskell, text, text-rope, transformers - , unordered-containers - }: - mkDerivation { - pname = "hls-semantic-tokens-plugin"; - version = "2.6.0.0"; - sha256 = "0502aa19f5406102ddf8e8a37bf94f3cde0ce02f2c687967ef1f3319bcd98faa"; - libraryHaskellDepends = [ - aeson array base bytestring containers data-default deepseq extra - ghcide hiedb hls-graph hls-plugin-api lens lsp mtl sqlite-simple - syb template-haskell text transformers unordered-containers - ]; - testHaskellDepends = [ - aeson base bytestring containers data-default extra filepath ghc - ghcide ghcide-test-utils hls-plugin-api hls-test-utils lens lsp - lsp-test template-haskell text text-rope - ]; - description = "Call hierarchy plugin for Haskell Language Server"; - license = lib.licenses.asl20; - }) { }); - } // prev.lib.attrsets.mapAttrs ( pkg: sha256: dontCheck (overrideCabal hprev.${pkg} (drv: { - version = "2.6.0.0"; - inherit sha256; - }))) { - hls-cabal-plugin = "sha256-thKRbE9J3U6gsk4K6HeXz/p+cFJMaaRqIYgCPHeamQM="; - hls-call-hierarchy-plugin = "sha256-gTHZol6/7R9E98jtIQFDF/IHkW8mz5Uoop3mHvNMi4k="; - hls-plugin-api = "sha256-xE1+eOv0DHFvC5J8EgLFMaBjEDhim5YqRPx/B6k3JII="; - hls-graph = "sha256-fHbVIU/zjhYU/zixs7ZUYDmEfIGybkJXsyoDodSSlGY="; - hls-cabal-fmt-plugin = "sha256-a35GkfYX5w9lGR7N8PLWB7lW+vO2fB4sgvjtnUEvE/o="; - hls-change-type-signature-plugin = "sha256-IE/jxyD1n7AxbCYpawogVMlrKbA4tx+wXcMbcQ65eeE="; - hls-class-plugin = "sha256-nYbVMn2Wv4HNq30tyxa7nPuxmpY5Rf04WmU5U4QXK0o="; - hls-code-range-plugin = "sha256-RTspLpA+Sl9AFuP46hQvUcUD2VM82XxsK9TtPhTiJMc="; - hls-eval-plugin = "sha256-6eym4FVkfSgAK+pkEYstpnPc74uxRtns+1pSpaO+24k="; - hls-explicit-fixity-plugin = "sha256-StkthuISYz7P4LUgQw2I4Xk7VR5RtwZkNHX73p8FqQI="; - hls-explicit-imports-plugin = "sha256-bMyB0NpSnRF9/qpU1iGK/2xrhorfVK4j1A0X+UDBZOg="; - hls-explicit-record-fields-plugin = "sha256-hPQTlp3P1lyZFJmtbloPP69ax5+ZoGHlW0KijTLoQ9o="; - hls-fourmolu-plugin = "sha256-ln8B2d+h6Y5BEZfx15AHXAqRM/Ok3EzE6aSrfVwl9bw="; - hls-module-name-plugin = "sha256-fwPizMINMuha9Ql5pauMeYtBm90EmKILw01Z05g8ytk="; - hls-ormolu-plugin = "sha256-osfRilT2ujMNbl5RglzUEyCWC1XslRqZkuK+oXVC1zI="; - hls-pragmas-plugin = "sha256-YyXrbN6bgWKn2keix8EXXE8v6ndXV9YZPRm0KmaanwE="; - hls-qualify-imported-names-plugin = "sha256-pgry1GCRkVGblrsuW+jNy7Q0F0qhEkCGmBwI4FSHTyI="; - hls-refactor-plugin = "sha256-Tn6nVZ8QwfH0sDtTC/M4zyysKSPWoJ/0EwNZvAc7HlM="; - hls-stylish-haskell-plugin = "sha256-45wRcUVj1ky5+OL+6RDOuQILmCTp7KJJmE2fVSsyIJw="; - hls-hlint-plugin = "sha256-jPvdHXQVfMD57Brp+RIdT1Rn6ZGIj2Yg93Fgiy5PqEc="; - hls-alternate-number-format-plugin = "sha256-LHx8svXYP0tO4xsq5ismnJY3PoSuJuUIC9AUx1sfgtg="; - hls-overloaded-record-dot-plugin = "sha256-0Jl+ZHQLPzs7R9iAagAp70s0zeK6FLNMUc/K3KJ2i24="; - hls-rename-plugin = "sha256-j2TfjRmQEVXbLfbDXcTuljzlEhlYlPvD94MwlvKB8pU="; - hls-retrie-plugin = "sha256-8I/duDfMfmwfRXjYx+ItaYJTws2qMSaMHod2mQ4mlIU="; - hls-splice-plugin = "sha256-En+UkYhmdB45gtlJJgTz2MbCqfgKrC2OAVVV23pG3QE="; - hls-stan-plugin = "sha256-LQL6ildOWteT81f4S3ZAZQ1kMjTOQbXDz5qx4rQXHP4="; - hls-gadt-plugin = "sha256-Lz/yoNqIvcbja3IBoTY5xGw+a49RXDsEZEMTAaoARik="; - hls-test-utils = "sha256-mUeg417Paw3UFlSUhHHLWmr6mJG2mT6ilXTmlU1WAlg="; - } ; + }; # Additional packages that should be available for development. additionalDevShellNativeBuildInputs = stacklockHaskellPkgSet: @@ -213,15 +94,17 @@ hpack fourmolu hlint - stacklockHaskellPkgSet.haskell-language-server final.haskell-language-server final.z3 final.secp256k1 ]; + # nix expects all inputs downloaded from the internet to have a hash, + # so hackage is periodically downloaded, hashed and the hashes stored in a map. + # this need to be bumped if changing the stack resolver all-cabal-hashes = final.fetchurl { url = - "https://github.com/commercialhaskell/all-cabal-hashes/archive/80fe3174b98134e50d4541c9c2a3803601f6fbb7.tar.gz"; - sha256 = "sha256-b3E6JLu1tBpZnPXBJxNXfjkglY/du8k1l+WTS8Fetr4="; + "https://github.com/commercialhaskell/all-cabal-hashes/archive/8b0d7c881466c603de7975596cb203e3fd4890ad.tar.gz"; + sha256 = "sha256-jTNSwG37bHY5vLMo5yqtk93sTUzlsp/jeYCfXJGaivU="; }; }; }; diff --git a/scripts/freeze-cabal-to-stack-resolver.sh b/scripts/freeze-cabal-to-stack-resolver.sh index 6b9a157d2a..934cf53548 100755 --- a/scripts/freeze-cabal-to-stack-resolver.sh +++ b/scripts/freeze-cabal-to-stack-resolver.sh @@ -5,7 +5,7 @@ set -euxo pipefail # must remove the prior freeze file to actually update rm -f cabal.project.freeze -stack --test ls dependencies \ +stack --system-ghc --test ls dependencies \ | sed -e 's/^\([a-zA-Z0-9.-]*\) \([0-9.]*\)/--constraint="\1 == \2"/' \ | xargs -x cabal freeze --enable-tests diff --git a/stack.yaml b/stack.yaml index 66c302bd41..687450e441 100644 --- a/stack.yaml +++ b/stack.yaml @@ -1,4 +1,4 @@ -resolver: lts-22.10 +resolver: lts-22.23 nix: packages: @@ -23,6 +23,14 @@ extra-deps: - github: goodlyrottenapple/tasty-test-reporter commit: b704130545aa3925a8487bd3e92f1dd5ce0512e2 +allow-newer: true + +allow-newer-deps: + - data-fix + - semialign + - text-short + - these + ghc-options: "$everything": -haddock diff --git a/stack.yaml.lock b/stack.yaml.lock index 5f1472aa3e..6540fe13d4 100644 --- a/stack.yaml.lock +++ b/stack.yaml.lock @@ -59,7 +59,7 @@ packages: url: https://github.com/goodlyrottenapple/tasty-test-reporter/archive/b704130545aa3925a8487bd3e92f1dd5ce0512e2.tar.gz snapshots: - completed: - sha256: 1ecd36c6af82cd6940fd16e4ecf40ac6e3844ba8f49873e34f1cf12bd1f9dfb1 - size: 712886 - url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/22/10.yaml - original: lts-22.10 + sha256: 73ad581de7c5306278aec7706cafaf3b1c2eb7abf4ab586e4d9dc675c6106c4e + size: 718708 + url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/22/23.yaml + original: lts-22.23