From af0589b0e61fd316443b92860df1e87dee2ffc1f Mon Sep 17 00:00:00 2001 From: éclairevoyant <848000+eclairevoyant@users.noreply.github.com> Date: Wed, 24 Jan 2024 11:46:22 -0500 Subject: jdt-language-server: move to `pkgs/by-name` --- pkgs/by-name/jd/jdt-language-server/package.nix | 60 ++++++++++++++++++++++ .../jdt-language-server/default.nix | 60 ---------------------- pkgs/top-level/all-packages.nix | 2 - 3 files changed, 60 insertions(+), 62 deletions(-) create mode 100644 pkgs/by-name/jd/jdt-language-server/package.nix delete mode 100644 pkgs/development/tools/language-servers/jdt-language-server/default.nix (limited to 'pkgs') diff --git a/pkgs/by-name/jd/jdt-language-server/package.nix b/pkgs/by-name/jd/jdt-language-server/package.nix new file mode 100644 index 0000000000000..626db26e89b1b --- /dev/null +++ b/pkgs/by-name/jd/jdt-language-server/package.nix @@ -0,0 +1,60 @@ +{ lib +, stdenv +, fetchurl +, python3 +, jdk +}: + +let + timestamp = "202401111522"; +in +stdenv.mkDerivation (finalAttrs: { + pname = "jdt-language-server"; + version = "1.31.0"; + + src = fetchurl { + url = "https://download.eclipse.org/jdtls/milestones/${finalAttrs.version}/jdt-language-server-${finalAttrs.version}-${timestamp}.tar.gz"; + hash = "sha256-bCX2LQt00d2SqxmvuvvlBB6wbCuFPqtX9/Qv5v6wH3w="; + }; + + sourceRoot = "."; + + buildInputs = [ + # Used for the included wrapper + python3 + ]; + + postPatch = '' + # We store the plugins, config, and features folder in different locations + # than in the original package. In addition, hard-code the path to the jdk + # in the wrapper, instead of searching for it in PATH at runtime. + substituteInPlace bin/jdtls.py \ + --replace "jdtls_base_path = Path(__file__).parent.parent" "jdtls_base_path = Path(\"$out/share/java/jdtls/\")" \ + --replace "java_executable = get_java_executable(known_args.validate_java_version)" "java_executable = '${lib.getExe jdk}'" + ''; + + installPhase = + let + # The application ships with different config directories for each platform. + # Note the application come with ARM variants as well, although the + # current included wrapper doesn't use them. + configDir = if stdenv.isDarwin then "config_mac" else "config_linux"; + in + '' + install -Dm444 -t $out/share/java/jdtls/plugins/ plugins/* + install -Dm444 -t $out/share/java/jdtls/features/ features/* + install -Dm444 -t $out/share/java/jdtls/${configDir} ${configDir}/* + install -Dm555 -t $out/bin bin/jdtls + install -Dm444 -t $out/bin bin/jdtls.py + ''; + + meta = { + homepage = "https://github.com/eclipse/eclipse.jdt.ls"; + description = "Java language server"; + sourceProvenance = with lib.sourceTypes; [ binaryBytecode ]; + license = lib.licenses.epl20; + maintainers = with lib.maintainers; [ matt-snider ]; + platforms = lib.platforms.all; + mainProgram = "jdtls"; + }; +}) diff --git a/pkgs/development/tools/language-servers/jdt-language-server/default.nix b/pkgs/development/tools/language-servers/jdt-language-server/default.nix deleted file mode 100644 index 626db26e89b1b..0000000000000 --- a/pkgs/development/tools/language-servers/jdt-language-server/default.nix +++ /dev/null @@ -1,60 +0,0 @@ -{ lib -, stdenv -, fetchurl -, python3 -, jdk -}: - -let - timestamp = "202401111522"; -in -stdenv.mkDerivation (finalAttrs: { - pname = "jdt-language-server"; - version = "1.31.0"; - - src = fetchurl { - url = "https://download.eclipse.org/jdtls/milestones/${finalAttrs.version}/jdt-language-server-${finalAttrs.version}-${timestamp}.tar.gz"; - hash = "sha256-bCX2LQt00d2SqxmvuvvlBB6wbCuFPqtX9/Qv5v6wH3w="; - }; - - sourceRoot = "."; - - buildInputs = [ - # Used for the included wrapper - python3 - ]; - - postPatch = '' - # We store the plugins, config, and features folder in different locations - # than in the original package. In addition, hard-code the path to the jdk - # in the wrapper, instead of searching for it in PATH at runtime. - substituteInPlace bin/jdtls.py \ - --replace "jdtls_base_path = Path(__file__).parent.parent" "jdtls_base_path = Path(\"$out/share/java/jdtls/\")" \ - --replace "java_executable = get_java_executable(known_args.validate_java_version)" "java_executable = '${lib.getExe jdk}'" - ''; - - installPhase = - let - # The application ships with different config directories for each platform. - # Note the application come with ARM variants as well, although the - # current included wrapper doesn't use them. - configDir = if stdenv.isDarwin then "config_mac" else "config_linux"; - in - '' - install -Dm444 -t $out/share/java/jdtls/plugins/ plugins/* - install -Dm444 -t $out/share/java/jdtls/features/ features/* - install -Dm444 -t $out/share/java/jdtls/${configDir} ${configDir}/* - install -Dm555 -t $out/bin bin/jdtls - install -Dm444 -t $out/bin bin/jdtls.py - ''; - - meta = { - homepage = "https://github.com/eclipse/eclipse.jdt.ls"; - description = "Java language server"; - sourceProvenance = with lib.sourceTypes; [ binaryBytecode ]; - license = lib.licenses.epl20; - maintainers = with lib.maintainers; [ matt-snider ]; - platforms = lib.platforms.all; - mainProgram = "jdtls"; - }; -}) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 70421bfffb60a..4fa58572363fc 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -18318,8 +18318,6 @@ with pkgs; javascript-typescript-langserver = callPackage ../development/tools/language-servers/javascript-typescript-langserver { }; - jdt-language-server = callPackage ../development/tools/language-servers/jdt-language-server { }; - jsonnet-language-server = callPackage ../development/tools/language-servers/jsonnet-language-server { }; kotlin-language-server = callPackage ../development/tools/language-servers/kotlin-language-server { }; -- cgit 1.4.1 From 6b19a1f3fe225c495bceeba8d2b773e3e2442e0c Mon Sep 17 00:00:00 2001 From: éclairevoyant <848000+eclairevoyant@users.noreply.github.com> Date: Thu, 11 Jan 2024 05:27:51 -0500 Subject: jdt-language-server: set `passthru.updateScript` --- pkgs/by-name/jd/jdt-language-server/package.nix | 2 ++ pkgs/by-name/jd/jdt-language-server/update.sh | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 pkgs/by-name/jd/jdt-language-server/update.sh (limited to 'pkgs') diff --git a/pkgs/by-name/jd/jdt-language-server/package.nix b/pkgs/by-name/jd/jdt-language-server/package.nix index 626db26e89b1b..2e25aa24f7898 100644 --- a/pkgs/by-name/jd/jdt-language-server/package.nix +++ b/pkgs/by-name/jd/jdt-language-server/package.nix @@ -48,6 +48,8 @@ stdenv.mkDerivation (finalAttrs: { install -Dm444 -t $out/bin bin/jdtls.py ''; + passthru.updateScript = ./update.sh; + meta = { homepage = "https://github.com/eclipse/eclipse.jdt.ls"; description = "Java language server"; diff --git a/pkgs/by-name/jd/jdt-language-server/update.sh b/pkgs/by-name/jd/jdt-language-server/update.sh new file mode 100644 index 0000000000000..b482db22ee056 --- /dev/null +++ b/pkgs/by-name/jd/jdt-language-server/update.sh @@ -0,0 +1,21 @@ +#! /usr/bin/env nix-shell +#! nix-shell -i bash --pure -p curl cacert libxml2 yq nix jq + +set -euo pipefail + +cd "$(dirname "${BASH_SOURCE[0]}")" +DRV_DIR="$PWD" + +# scrape the downloads page for release info +newver=$(curl -s 'https://download.eclipse.org/jdtls/milestones/' | xmllint --html - --xmlout 2>/dev/null | xq --raw-output '.html.body.main.div.div.div[0].div.table.tr | max_by(.td[3]).td[1].a.["#text"]') + +prefix="https://download.eclipse.org/jdtls/milestones/$newver" + +filename=$(curl -s "$prefix/latest.txt") +newtimestamp=$(echo $filename | sed "s|^.*-$newver-||;s|\.tar\.gz$||") +newhash="$(nix-hash --to-sri --type sha256 $(nix-prefetch-url "$prefix/$filename"))"; + +sed -i default.nix \ + -e "/^ version =/ s|\".*\"|\"$newver\"|" \ + -e "/^ timestamp =/ s|\".*\"|\"$newtimestamp\"|" \ + -e "/^ hash =/ s|\".*\"|\"$newhash\"|" \ -- cgit 1.4.1