diff options
author | sternenseemann <sternenseemann@systemli.org> | 2022-02-08 18:53:57 +0100 |
---|---|---|
committer | sterni <sternenseemann@systemli.org> | 2022-02-14 18:36:53 +0100 |
commit | dcb9ff59ca1bf844ed28ba6d232e6d6163aec9a5 (patch) | |
tree | 9d010ebcb7ea072328c1824d4ad0cf662a36b92b /pkgs/development/tools/haskell | |
parent | 55f5fe385ca518a2cff3995a056235a945d0b799 (diff) | |
download | nixlib-dcb9ff59ca1bf844ed28ba6d232e6d6163aec9a5.tar nixlib-dcb9ff59ca1bf844ed28ba6d232e6d6163aec9a5.tar.gz nixlib-dcb9ff59ca1bf844ed28ba6d232e6d6163aec9a5.tar.bz2 nixlib-dcb9ff59ca1bf844ed28ba6d232e6d6163aec9a5.tar.lz nixlib-dcb9ff59ca1bf844ed28ba6d232e6d6163aec9a5.tar.xz nixlib-dcb9ff59ca1bf844ed28ba6d232e6d6163aec9a5.tar.zst nixlib-dcb9ff59ca1bf844ed28ba6d232e6d6163aec9a5.zip |
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.
Diffstat (limited to 'pkgs/development/tools/haskell')
-rw-r--r-- | pkgs/development/tools/haskell/haskell-language-server/withWrapper.nix | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/pkgs/development/tools/haskell/haskell-language-server/withWrapper.nix b/pkgs/development/tools/haskell/haskell-language-server/withWrapper.nix index f8f1f85b2703..b55fd6aa6ba7 100644 --- a/pkgs/development/tools/haskell/haskell-language-server/withWrapper.nix +++ b/pkgs/development/tools/haskell/haskell-language-server/withWrapper.nix @@ -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 [ |