summary refs log tree commit diff
path: root/pkgs/development/tools/misc/clojure-lsp
diff options
context:
space:
mode:
authorThiago Kenji Okada <thiagokokada@gmail.com>2021-02-04 00:06:28 -0300
committerThiago Kenji Okada <thiagokokada@gmail.com>2021-02-19 10:25:55 -0300
commit3fa00685ce21fb1a4218d444d0862ebcb2b99706 (patch)
tree3d556a85daed040c9c6f59edc8dc5cebb99c408d /pkgs/development/tools/misc/clojure-lsp
parentb8f6a927f74fe541053db20bdc3cd64e2a65273b (diff)
clojure-lsp: migrate to GraalVM
clojure-lsp now supports GraalVM builds that makes the binary faster to
start and also seems to reduce memory usage.
Diffstat (limited to 'pkgs/development/tools/misc/clojure-lsp')
-rw-r--r--pkgs/development/tools/misc/clojure-lsp/default.nix48
1 files changed, 40 insertions, 8 deletions
diff --git a/pkgs/development/tools/misc/clojure-lsp/default.nix b/pkgs/development/tools/misc/clojure-lsp/default.nix
index d62166ca2b4ab..b282deb6cd077 100644
--- a/pkgs/development/tools/misc/clojure-lsp/default.nix
+++ b/pkgs/development/tools/misc/clojure-lsp/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchurl, jre, makeWrapper }:
+{ lib, stdenv, fetchurl, graalvm11-ce }:
 
 stdenv.mkDerivation rec {
   pname = "clojure-lsp";
@@ -11,14 +11,46 @@ stdenv.mkDerivation rec {
 
   dontUnpack = true;
 
-  buildInputs = [ makeWrapper ];
+  buildInputs = [ graalvm11-ce ];
+
+  buildPhase = with lib; ''
+    args=("-jar" "${src}"
+          "-H:Name=clojure-lsp"
+          ${optionalString stdenv.isDarwin ''"-H:-CheckToolchain"''}
+          "-J-Dclojure.compiler.direct-linking=true"
+          "-J-Dclojure.spec.skip-macros=true"
+          "-H:+ReportExceptionStackTraces"
+          "--enable-url-protocols=jar"
+          # "-H:+InlineBeforeAnalysis"
+          "-H:Log=registerResource:"
+          "--verbose"
+          "-H:IncludeResources=\"CLOJURE_LSP_VERSION|db/.*|static/.*|templates/.*|.*.yml|.*.xml|.*/org/sqlite/.*|org/sqlite/.*|.*.properties\""
+          "-H:ConfigurationFileDirectories=graalvm"
+          "--initialize-at-build-time"
+          "--report-unsupported-elements-at-runtime"
+          "--no-server"
+          "--no-fallback"
+          "--native-image-info"
+          "--allow-incomplete-classpath"
+          "-H:ServiceLoaderFeatureExcludeServices=javax.sound.sampled.spi.AudioFileReader"
+          "-H:ServiceLoaderFeatureExcludeServices=javax.sound.midi.spi.MidiFileReader"
+          "-H:ServiceLoaderFeatureExcludeServices=javax.sound.sampled.spi.MixerProvider"
+          "-H:ServiceLoaderFeatureExcludeServices=javax.sound.sampled.spi.FormatConversionProvider"
+          "-H:ServiceLoaderFeatureExcludeServices=javax.sound.sampled.spi.AudioFileWriter"
+          "-H:ServiceLoaderFeatureExcludeServices=javax.sound.midi.spi.MidiDeviceProvider"
+          "-H:ServiceLoaderFeatureExcludeServices=javax.sound.midi.spi.SoundbankReader"
+          "-H:ServiceLoaderFeatureExcludeServices=javax.sound.midi.spi.MidiFileWriter"
+          "-J-Xmx4g")
+
+    native-image "''${args[@]}"
+  '';
 
   installPhase = ''
-    install -Dm644 $src $out/share/java/${pname}.jar
-    makeWrapper ${jre}/bin/java $out/bin/${pname} \
-      --add-flags "-Xmx2g" \
-      --add-flags "-server" \
-      --add-flags "-jar $out/share/java/${pname}.jar"
+    install -Dm755 clojure-lsp $out/bin/clojure-lsp
+  '';
+
+  installCheckPhase = ''
+    $out/bin/clojure-lsp --version
   '';
 
   meta = with lib; {
@@ -26,6 +58,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/snoe/clojure-lsp";
     license = licenses.mit;
     maintainers = [ maintainers.ericdallo ];
-    platforms = jre.meta.platforms;
+    platforms = graalvm11-ce.meta.platforms;
   };
 }