nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at 22.05-pre 96 lines 3.1 kB view raw
1{ lib, stdenv, graalvm11-ce, babashka, fetchurl, fetchFromGitHub, clojure, writeScript }: 2 3stdenv.mkDerivation rec { 4 pname = "clojure-lsp"; 5 version = "2021.11.02-15.24.47"; 6 7 src = fetchFromGitHub { 8 owner = pname; 9 repo = pname; 10 rev = version; 11 sha256 = "sha256-PBbo8yx4g4SsViUA1jnwqF8q9Dfn3lrgK2CP026Bm4Q="; 12 }; 13 14 jar = fetchurl { 15 url = "https://github.com/clojure-lsp/clojure-lsp/releases/download/${version}/clojure-lsp.jar"; 16 sha256 = "sha256-k0mzibcLAspklCPE6f2qsUm9bwSvcJRgWecMBq7mpF0="; 17 }; 18 19 GRAALVM_HOME = graalvm11-ce; 20 CLOJURE_LSP_JAR = jar; 21 CLOJURE_LSP_XMX = "-J-Xmx6g"; 22 23 buildInputs = [ graalvm11-ce clojure ]; 24 25 buildPhase = with lib; '' 26 runHook preBuild 27 28 # https://github.com/clojure-lsp/clojure-lsp/blob/2021.11.02-15.24.47/graalvm/native-unix-compile.sh#L18-L27 29 DTLV_LIB_EXTRACT_DIR=$(mktemp -d) 30 export DTLV_LIB_EXTRACT_DIR=$DTLV_LIB_EXTRACT_DIR 31 32 args=("-jar" "$CLOJURE_LSP_JAR" 33 "-H:+ReportExceptionStackTraces" 34 "-H:CLibraryPath=${graalvm11-ce.lib}/lib" 35 "-H:CLibraryPath=$DTLV_LIB_EXTRACT_DIR" 36 "--verbose" 37 "--no-fallback" 38 "--native-image-info" 39 "$CLOJURE_LSP_XMX") 40 41 native-image ''${args[@]} 42 43 runHook postBuild 44 ''; 45 46 installPhase = '' 47 runHook preInstall 48 49 install -Dm755 ./clojure-lsp $out/bin/clojure-lsp 50 51 runHook postInstall 52 ''; 53 54 doCheck = true; 55 checkPhase = '' 56 runHook preCheck 57 58 export HOME="$(mktemp -d)" 59 ./clojure-lsp --version | fgrep -q '${version}' 60 ${babashka}/bin/bb integration-test ./clojure-lsp 61 62 runHook postCheck 63 ''; 64 65 passthru.updateScript = writeScript "update-clojure-lsp" '' 66 #!/usr/bin/env nix-shell 67 #!nix-shell -i bash -p curl common-updater-scripts gnused jq nix 68 69 set -eu -o pipefail 70 71 latest_version=$(curl -s https://api.github.com/repos/clojure-lsp/clojure-lsp/releases/latest | jq --raw-output .tag_name) 72 73 old_jar_hash=$(nix-instantiate --eval --strict -A "clojure-lsp.jar.drvAttrs.outputHash" | tr -d '"' | sed -re 's|[+]|\\&|g') 74 75 curl -o clojure-lsp.jar -sL https://github.com/clojure-lsp/clojure-lsp/releases/download/$latest_version/clojure-lsp.jar 76 new_jar_hash=$(nix-hash --flat --type sha256 clojure-lsp.jar | sed -re 's|[+]|\\&|g') 77 78 rm -f clojure-lsp.jar 79 80 nixFile=$(nix-instantiate --eval --strict -A "clojure-lsp.meta.position" | sed -re 's/^"(.*):[0-9]+"$/\1/') 81 82 sed -i "$nixFile" -re "s|\"$old_jar_hash\"|\"$new_jar_hash\"|" 83 update-source-version clojure-lsp "$latest_version" 84 ''; 85 86 meta = with lib; { 87 description = "Language Server Protocol (LSP) for Clojure"; 88 homepage = "https://github.com/clojure-lsp/clojure-lsp"; 89 license = licenses.mit; 90 maintainers = with maintainers; [ ericdallo babariviere ]; 91 platforms = graalvm11-ce.meta.platforms; 92 # Depends on datalevin that is x86_64 only 93 # https://github.com/juji-io/datalevin/blob/bb7d9328f4739cddea5d272b5cd6d6dcb5345da6/native/src/java/datalevin/ni/Lib.java#L86-L102 94 broken = !stdenv.isx86_64; 95 }; 96}