haskell-language-server: make linking configureable in wrapper
haskell-language-server will now default to building a shared
executable, as upstream does, complete with a huge closure. By passing
{ dynamic = false; } via override, it is still possible to build a
"statically linked" variant of HLS, as it used to be.
Note: Before this change HLS would fail to compile on aarch64.
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
, stdenv
|
||||
, supportedGhcVersions ? [ "884" "8107" "902" ]
|
||||
++ lib.optionals (!stdenv.hostPlatform.isAarch64) [ "921" ]
|
||||
, dynamic ? true
|
||||
, haskellPackages
|
||||
, haskell
|
||||
}:
|
||||
@@ -13,19 +14,25 @@
|
||||
# for example. Read more about this in the haskell-language-server section of the nixpkgs manual.
|
||||
#
|
||||
let
|
||||
inherit (lib) concatStringsSep concatMapStringsSep take splitString;
|
||||
inherit (lib) concatStringsSep concatMapStringsSep take splitString pipe optionals;
|
||||
inherit (haskell.lib.compose) justStaticExecutables overrideCabal enableCabalFlag disableCabalFlag;
|
||||
getPackages = version: haskell.packages."ghc${version}";
|
||||
tunedHls = hsPkgs:
|
||||
haskell.lib.compose.justStaticExecutables
|
||||
(haskell.lib.compose.overrideCabal (old: {
|
||||
postInstall = ''
|
||||
remove-references-to -t ${hsPkgs.ghc} $out/bin/haskell-language-server
|
||||
remove-references-to -t ${hsPkgs.shake.data} $out/bin/haskell-language-server
|
||||
remove-references-to -t ${hsPkgs.js-jquery.data} $out/bin/haskell-language-server
|
||||
remove-references-to -t ${hsPkgs.js-dgtable.data} $out/bin/haskell-language-server
|
||||
remove-references-to -t ${hsPkgs.js-flot.data} $out/bin/haskell-language-server
|
||||
'';
|
||||
}) hsPkgs.haskell-language-server);
|
||||
lib.pipe hsPkgs.haskell-language-server ([
|
||||
(haskell.lib.compose.overrideCabal (old: {
|
||||
enableSharedExecutables = dynamic;
|
||||
postInstall = ''
|
||||
remove-references-to -t ${hsPkgs.ghc} $out/bin/haskell-language-server
|
||||
remove-references-to -t ${hsPkgs.shake.data} $out/bin/haskell-language-server
|
||||
remove-references-to -t ${hsPkgs.js-jquery.data} $out/bin/haskell-language-server
|
||||
remove-references-to -t ${hsPkgs.js-dgtable.data} $out/bin/haskell-language-server
|
||||
remove-references-to -t ${hsPkgs.js-flot.data} $out/bin/haskell-language-server
|
||||
'';
|
||||
}))
|
||||
((if dynamic then enableCabalFlag else disableCabalFlag) "dynamic")
|
||||
] ++ optionals (!dynamic) [
|
||||
justStaticExecutables
|
||||
]);
|
||||
targets = version:
|
||||
let packages = getPackages version;
|
||||
in [
|
||||
|
||||
Reference in New Issue
Block a user