diff options
Diffstat (limited to 'pkgs/development/haskell-modules/configuration-nix.nix')
-rw-r--r-- | pkgs/development/haskell-modules/configuration-nix.nix | 150 |
1 files changed, 39 insertions, 111 deletions
diff --git a/pkgs/development/haskell-modules/configuration-nix.nix b/pkgs/development/haskell-modules/configuration-nix.nix index 48ef3d1515e..032b2577c51 100644 --- a/pkgs/development/haskell-modules/configuration-nix.nix +++ b/pkgs/development/haskell-modules/configuration-nix.nix @@ -209,16 +209,6 @@ self: super: builtins.intersectAttrs super { # Help the test suite find system timezone data. tz = overrideCabal (drv: { preConfigure = "export TZDIR=${pkgs.tzdata}/share/zoneinfo"; - patches = [ - # Fix tests failing with libSystem, musl etc. due to a lack of - # support for glibc's non-POSIX TZDIR environment variable. - # https://github.com/nilcons/haskell-tz/pull/29 - (pkgs.fetchpatch { - name = "support-non-glibc-tzset.patch"; - url = "https://github.com/sternenseemann/haskell-tz/commit/64928f1a50a1a276a718491ae3eeef63abcdb393.patch"; - sha256 = "1f53w8k1vpy39hzalyykpvm946ykkarj2714w988jdp4c2c4l4cf"; - }) - ] ++ (drv.patches or []); }) super.tz; # Nix-specific workaround @@ -605,21 +595,6 @@ self: super: builtins.intersectAttrs super { sha256 = "1hjdprm990vyxz86fgq14ajn0lkams7i00h8k2i2g1a0hjdwppq6"; }; - spagoWithPatches = appendPatch ( - # Spago needs a small patch to work with versions-5.0.0: - # https://github.com/purescript/spago/pull/798 - # This can probably be removed with >spago-0.20.3. - pkgs.fetchpatch { - url = "https://github.com/purescript/spago/commit/dd4bf4413d9675c1c8065d24d0ed7b345c7fa5dd.patch"; - sha256 = "1i1r3f4n9mlkckx15bfrdy5m7gjf0zx7ycwyqra6qn34zpcbzpmf"; - } - ) super.spago; - - spagoWithOverrides = spagoWithPatches.override { - # spago has not yet been updated for the latest dhall. - dhall = self.dhall_1_38_1; - }; - spagoDocs = overrideCabal (drv: { postUnpack = (drv.postUnpack or "") + '' # Spago includes the following two files directly into the binary @@ -645,7 +620,7 @@ self: super: builtins.intersectAttrs super { "$sourceRoot/templates/docs-search-app-0.0.11.js" \ "$sourceRoot/templates/purescript-docs-search-0.0.11" ''; - }) spagoWithOverrides; + }) super.spago; # Tests require network access. spagoWithoutChecks = dontCheck spagoDocs; @@ -731,6 +706,10 @@ self: super: builtins.intersectAttrs super { } super.nix-output-monitor; haskell-language-server = overrideCabal (drv: { + # starting with 1.6.1.1 haskell-language-server wants to be linked dynamically + # by default. Unless we reflect this in the generic builder, GHC is going to + # produce some illegal references to /build/. + enableSharedExecutables = true; postInstall = "ln -s $out/bin/haskell-language-server $out/bin/haskell-language-server-${self.ghc.version}"; testToolDepends = [ self.cabal-install pkgs.git ]; testTarget = "func-test"; # wrapper test accesses internet @@ -755,12 +734,9 @@ self: super: builtins.intersectAttrs super { # based on https://github.com/gibiansky/IHaskell/blob/aafeabef786154d81ab7d9d1882bbcd06fc8c6c4/release.nix ihaskell = overrideCabal (drv: { - configureFlags = (drv.configureFlags or []) ++ [ - # ihaskell's cabal file forces building a shared executable, - # but without passing --enable-executable-dynamic, the RPATH - # contains /build/ and leads to a build failure with nix - "--enable-executable-dynamic" - ]; + # ihaskell's cabal file forces building a shared executable, which we need + # to reflect here or RPATH will contain a reference to /build/. + enableSharedExecutables = true; preCheck = '' export HOME=$TMPDIR/home export PATH=$PWD/dist/build/ihaskell:$PATH @@ -824,90 +800,11 @@ self: super: builtins.intersectAttrs super { '' + drv.postInstall or ""; }) super.hlint; - hls-brittany-plugin = overrideCabal (drv: { - testToolDepends = [ pkgs.git ]; - preCheck = '' - export HOME=$TMPDIR/home - ''; - }) super.hls-brittany-plugin; - hls-class-plugin = overrideCabal (drv: { - testToolDepends = [ pkgs.git ]; - preCheck = '' - export HOME=$TMPDIR/home - ''; - }) super.hls-class-plugin; - hls-ormolu-plugin = overrideCabal (drv: { - testToolDepends = [ pkgs.git ]; - preCheck = '' - export HOME=$TMPDIR/home - ''; - }) super.hls-ormolu-plugin; - hls-fourmolu-plugin = overrideCabal (drv: { - testToolDepends = [ pkgs.git ]; - preCheck = '' - export HOME=$TMPDIR/home - ''; - }) super.hls-fourmolu-plugin; - hls-module-name-plugin = overrideCabal (drv: { - testToolDepends = [ pkgs.git ]; - preCheck = '' - export HOME=$TMPDIR/home - ''; - }) super.hls-module-name-plugin; - hls-rename-plugin = overrideCabal (drv: { - testToolDepends = [ pkgs.git ]; - preCheck = '' - export HOME=$TMPDIR/home - '' + (drv.preCheck or ""); - }) super.hls-rename-plugin; - hls-splice-plugin = overrideCabal (drv: { - testToolDepends = [ pkgs.git ]; - preCheck = '' - export HOME=$TMPDIR/home - ''; - }) super.hls-splice-plugin; - hls-floskell-plugin = overrideCabal (drv: { - testToolDepends = [ pkgs.git ]; - preCheck = '' - export HOME=$TMPDIR/home - ''; - }) super.hls-floskell-plugin; - hls-pragmas-plugin = overrideCabal (drv: { - testToolDepends = [ pkgs.git ]; - preCheck = '' - export HOME=$TMPDIR/home - ''; - }) super.hls-pragmas-plugin; - hls-hlint-plugin = overrideCabal (drv: { - testToolDepends = [ pkgs.git ]; - preCheck = '' - export HOME=$TMPDIR/home - ''; - }) super.hls-hlint-plugin; hiedb = overrideCabal (drv: { preCheck = '' export PATH=$PWD/dist/build/hiedb:$PATH ''; }) super.hiedb; - hls-call-hierarchy-plugin = overrideCabal (drv: { - preCheck = '' - export HOME=$TMPDIR/home - ''; - }) super.hls-call-hierarchy-plugin; - # Tests have file permissions expections that don‘t work with the nix store. - hls-stylish-haskell-plugin = dontCheck super.hls-stylish-haskell-plugin; - hls-haddock-comments-plugin = overrideCabal (drv: { - testToolDepends = [ pkgs.git ]; - preCheck = '' - export HOME=$TMPDIR/home - ''; - }) super.hls-haddock-comments-plugin; - hls-eval-plugin = overrideCabal (drv: { - testToolDepends = [ pkgs.git ]; - preCheck = '' - export HOME=$TMPDIR/home - ''; - }) super.hls-eval-plugin; taglib = overrideCabal (drv: { librarySystemDepends = [ @@ -1072,4 +969,35 @@ self: super: builtins.intersectAttrs super { install -Dm644 test/examples/*.jac -t "$docDir/examples" ''; }) super.jacinda; + +# haskell-language-server plugins all use the same test harness so we give them what we want in this loop. +} // pkgs.lib.mapAttrs + (_: overrideCabal (drv: { + testToolDepends = (drv.testToolDepends or [ ]) ++ [ pkgs.git ]; + preCheck = '' + export HOME=$TMPDIR/home + '' + (drv.preCheck or ""); + })) +{ + inherit (super) + hls-brittany-plugin + hls-call-hierarchy-plugin + hls-class-plugin + hls-eval-plugin + hls-floskell-plugin + hls-fourmolu-plugin + hls-module-name-plugin + hls-ormolu-plugin + hls-pragmas-plugin + hls-rename-plugin + hls-selection-range-plugin + hls-splice-plugin; + # Tests have file permissions expections that don‘t work with the nix store. + hls-stylish-haskell-plugin = dontCheck super.hls-stylish-haskell-plugin; + + # Flaky tests + hls-hlint-plugin = dontCheck super.hls-hlint-plugin; + hls-alternate-number-format-plugin = dontCheck super.hls-alternate-number-format-plugin; + hls-qualify-imported-names-plugin = dontCheck super.hls-qualify-imported-names-plugin; + hls-haddock-comments-plugin = dontCheck super.hls-haddock-comments-plugin; } |