haskell-language-server: Fix build (#441171)

This commit is contained in:
Malte Ott
2025-09-10 15:02:30 +02:00
committed by GitHub
4 changed files with 94 additions and 219 deletions

View File

@@ -249,11 +249,22 @@ with haskellLib;
### HASKELL-LANGUAGE-SERVER SECTION ###
#######################################
# All jailbreaks in this section due to: https://github.com/haskell/haskell-language-server/pull/4316#discussion_r1667684895
haskell-language-server =
lib.pipe
(super.haskell-language-server.overrideScope (
lself: lsuper: {
inherit
(
let
hls_overlay = lself: lsuper: {
# For fourmolu 0.18 and ormolu 0.7.7
Cabal-syntax = lself.Cabal-syntax_3_14_2_0;
Cabal = lself.Cabal_3_14_2_0;
# Jailbreaking cabal-install-parsers to make it pick Cabal 3.14 instead of 3.12.
cabal-install-parsers = doJailbreak lsuper.cabal-install-parsers;
# hls 2.11 needs older cabal-add than in stackage. Also copying over test fix override from configuration-nix.nix
cabal-add = overrideCabal (drv: {
# tests depend on executable
preCheck = ''export PATH="$PWD/dist/build/cabal-add:$PATH"'';
}) lself.cabal-add_0_1;
# Need a newer version of extensions to be compatible with the newer Cabal
extensions = doJailbreak lself.extensions_0_1_0_3;
# For most ghc versions, we overrideScope Cabal in the configuration-ghc-???.nix,
# because some packages, like ormolu, need a newer Cabal version.
# ghc-paths is special because it depends on Cabal for building
@@ -264,17 +275,29 @@ with haskellLib;
# otherwise we have different versions of ghc-paths
# around which have the same abi-hash, which can lead to confusions and conflicts.
ghc-paths = lsuper.ghc-paths.override { Cabal = null; };
};
in
lib.mapAttrs (_: pkg: pkg.overrideScope hls_overlay) (
super
// {
# HLS 2.11: Too strict bound on Diff 1.0.
haskell-language-server = dontCheck (doJailbreak super.haskell-language-server);
}
))
[
dontCheck
];
)
)
fourmolu
ormolu
haskell-language-server
;
# For -f-auto see cabal.project in haskell-language-server.
ghc-lib-parser-ex = addBuildDepend self.ghc-lib-parser (
disableCabalFlag "auto" super.ghc-lib-parser-ex
);
hls-plugin-api = doJailbreak super.hls-plugin-api; # HLS 2.11: Too strict bound on Diff 1.0.
ghcide = doJailbreak super.ghcide; # HLS 2.11: Too strict bound on Diff 1.0.
###########################################
### END HASKELL-LANGUAGE-SERVER SECTION ###
###########################################

View File

@@ -75,9 +75,6 @@ in
# Upgrade to accommodate new core library versions, where the authors have
# already made the relevant changes.
fourmolu = doDistribute self.fourmolu_0_16_0_0;
ormolu = doDistribute self.ormolu_0_7_7_0;
stylish-haskell = doDistribute self.stylish-haskell_0_15_0_1;
# 2025-08-10: Tests fail, but fix is not released yet https://github.com/clash-lang/ghc-typelits-natnormalise/issues/89
ghc-typelits-natnormalise = doDistribute (doJailbreak self.ghc-typelits-natnormalise_0_7_12);
@@ -90,7 +87,6 @@ in
haddock-library =
assert super.haddock-library.version == "1.11.0";
doJailbreak super.haddock-library;
large-generics = doJailbreak super.large-generics; # base <4.20
tree-sitter = doJailbreak super.tree-sitter; # containers <0.7, filepath <1.5
#

View File

@@ -47,6 +47,7 @@ extra-packages:
- Cabal == 3.12.*
- Cabal == 3.14.*
- Cabal == 3.16.* # version required for cabal-install and other packages
- cabal-add == 0.1 # 2025-09-09: Only needed for hls 2.11 can be removed once we are past it.
- Cabal-syntax == 3.6.* # Dummy package that ensures packages depending on Cabal-syntax can work for Cabal < 3.8
- Cabal-syntax == 3.8.* # version required for ormolu and fourmolu on ghc 9.0
- Cabal-syntax == 3.10.*
@@ -54,7 +55,6 @@ extra-packages:
- Cabal-syntax == 3.14.*
- Cabal-syntax == 3.16.* # version required for cabal-install and other packages
- fourmolu == 0.14.0.0 # 2023-11-13: for ghc-lib-parser 9.6 compat
- fourmolu == 0.16.0.0 # 2025-01-27: for ghc 9.10 compat
- fsnotify < 0.4 # 2024-04-22: required by spago-0.21
- fuzzyset == 0.2.4 # 2023-12-20: Needed for building postgrest > 10
- ghc-exactprint == 0.6.* # 2022-12-12: needed for GHC < 9.2
@@ -92,7 +92,6 @@ extra-packages:
- network-run == 0.4.0 # 2024-10-20: for GHC 9.10/network == 3.1.*
- ormolu == 0.5.2.0 # 2023-08-08: preserve for ghc 9.0
- ormolu == 0.7.2.0 # 2023-11-13: for ghc-lib-parser 9.6 compat
- ormolu == 0.7.7.0 # 2025-01-27: for ghc 9.10 compat
- os-string == 1.* # 2025-07-30: dummy package we need for pre os-string GHCs
- postgresql-binary < 0.14 # 2025-01-19: Needed for building postgrest
- primitive-unlifted == 0.1.3.1 # 2024-03-16: preserve for ghc 9.2

View File

@@ -122463,6 +122463,67 @@ self: {
}
) { youProbablyWantCapitalCabal = null; };
"cabal-add_0_1" = callPackage (
{
mkDerivation,
base,
bytestring,
Cabal,
cabal-install-parsers,
Cabal-syntax,
containers,
Diff,
directory,
filepath,
mtl,
optparse-applicative,
process,
string-qq,
tasty,
temporary,
}:
mkDerivation {
pname = "cabal-add";
version = "0.1";
sha256 = "1szbi0z8yf98641rwnj856gcfsvvflxwrfxraxy6rl60m7i0mab1";
revision = "3";
editedCabalFile = "0siv5ajqxcbs9c0ky94p5qk51w6cgf1zyc3rckxvlc25f4kygw4v";
isLibrary = true;
isExecutable = true;
libraryHaskellDepends = [
base
bytestring
Cabal
Cabal-syntax
containers
mtl
];
executableHaskellDepends = [
base
bytestring
Cabal
cabal-install-parsers
directory
filepath
optparse-applicative
process
];
testHaskellDepends = [
base
Diff
directory
process
string-qq
tasty
temporary
];
description = "Extend Cabal build-depends from the command line";
license = lib.licenses.bsd3;
hydraPlatforms = lib.platforms.none;
mainProgram = "cabal-add";
}
) { };
"cabal-add" = callPackage (
{
mkDerivation,
@@ -240271,113 +240332,6 @@ self: {
}
) { };
"fourmolu_0_16_0_0" = callPackage (
{
mkDerivation,
aeson,
ansi-terminal,
array,
base,
binary,
bytestring,
Cabal-syntax,
containers,
deepseq,
Diff,
directory,
file-embed,
filepath,
ghc-lib-parser,
hspec,
hspec-discover,
hspec-megaparsec,
megaparsec,
MemoTrie,
mtl,
optparse-applicative,
path,
path-io,
pretty,
process,
QuickCheck,
scientific,
syb,
temporary,
terminal-size,
text,
th-env,
yaml,
}:
mkDerivation {
pname = "fourmolu";
version = "0.16.0.0";
sha256 = "0vczia3hb1klvbf9fjy32ynyqaka8n7cdk0h8jg6nr89pixla9lc";
isLibrary = true;
isExecutable = true;
libraryHaskellDepends = [
aeson
ansi-terminal
array
base
binary
bytestring
Cabal-syntax
containers
deepseq
Diff
directory
file-embed
filepath
ghc-lib-parser
megaparsec
MemoTrie
mtl
scientific
syb
text
];
executableHaskellDepends = [
base
Cabal-syntax
containers
directory
filepath
ghc-lib-parser
optparse-applicative
terminal-size
text
th-env
yaml
];
testHaskellDepends = [
base
bytestring
Cabal-syntax
containers
Diff
directory
filepath
ghc-lib-parser
hspec
hspec-megaparsec
megaparsec
path
path-io
pretty
process
QuickCheck
temporary
text
yaml
];
testToolDepends = [ hspec-discover ];
description = "A formatter for Haskell source code";
license = lib.licenses.bsd3;
hydraPlatforms = lib.platforms.none;
mainProgram = "fourmolu";
}
) { };
"fourmolu" = callPackage (
{
mkDerivation,
@@ -493377,103 +493331,6 @@ self: {
}
) { };
"ormolu_0_7_7_0" = callPackage (
{
mkDerivation,
ansi-terminal,
array,
base,
binary,
bytestring,
Cabal-syntax,
choice,
containers,
deepseq,
Diff,
directory,
file-embed,
filepath,
ghc-lib-parser,
hspec,
hspec-discover,
hspec-megaparsec,
megaparsec,
MemoTrie,
mtl,
optparse-applicative,
path,
path-io,
QuickCheck,
syb,
temporary,
text,
th-env,
}:
mkDerivation {
pname = "ormolu";
version = "0.7.7.0";
sha256 = "1069j7cldvqqazmfrpfc6wy816227c5vz7fbq860yfb5h9ycv5ns";
revision = "1";
editedCabalFile = "1v8n4kf8wskyizn868k1662rqsd8myhvrjkchb9hiysw9lgja79c";
isLibrary = true;
isExecutable = true;
libraryHaskellDepends = [
ansi-terminal
array
base
binary
bytestring
Cabal-syntax
choice
containers
deepseq
Diff
directory
file-embed
filepath
ghc-lib-parser
megaparsec
MemoTrie
mtl
syb
text
];
executableHaskellDepends = [
base
Cabal-syntax
containers
directory
filepath
ghc-lib-parser
optparse-applicative
text
th-env
];
testHaskellDepends = [
base
Cabal-syntax
choice
containers
directory
filepath
ghc-lib-parser
hspec
hspec-megaparsec
megaparsec
path
path-io
QuickCheck
temporary
text
];
testToolDepends = [ hspec-discover ];
description = "A formatter for Haskell source code";
license = lib.licenses.bsd3;
hydraPlatforms = lib.platforms.none;
mainProgram = "ormolu";
}
) { };
"ormolu" = callPackage (
{
mkDerivation,