Merge pull request #279285 from huantianad/jdtls-upgrade
jdt-language-server: 1.26.0 -> 1.31.0, use upstream wrapper
This commit is contained in:
commit
64cab3aa8d
|
@ -184,6 +184,14 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m
|
||||||
|
|
||||||
- [watchdogd](https://troglobit.com/projects/watchdogd/), a system and process supervisor using watchdog timers. Available as [services.watchdogd](#opt-services.watchdogd.enable).
|
- [watchdogd](https://troglobit.com/projects/watchdogd/), a system and process supervisor using watchdog timers. Available as [services.watchdogd](#opt-services.watchdogd.enable).
|
||||||
|
|
||||||
|
- The `jdt-language-server` package now uses upstream's provided python wrapper instead of our own custom wrapper. This results in the following breaking and notable changes:
|
||||||
|
|
||||||
|
- The main binary for the package is now named `jdtls` instead of `jdt-language-server`, equivalent to what most editors expect the binary to be named.
|
||||||
|
|
||||||
|
- JVM arguments should now be provided with the `--jvm-arg` flag instead of setting `JAVA_OPTS`.
|
||||||
|
|
||||||
|
- The `-data` path is no longer required to run the package, and will be set to point to a folder in `$TMP` if missing.
|
||||||
|
|
||||||
## Other Notable Changes {#sec-release-24.05-notable-changes}
|
## Other Notable Changes {#sec-release-24.05-notable-changes}
|
||||||
|
|
||||||
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
|
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
|
||||||
|
|
|
@ -1,102 +1,60 @@
|
||||||
{ lib
|
{ lib
|
||||||
, stdenv
|
, stdenv
|
||||||
, fetchurl
|
, fetchurl
|
||||||
, makeWrapper
|
, python3
|
||||||
, jdk
|
, jdk
|
||||||
}:
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
let
|
||||||
|
timestamp = "202401111522";
|
||||||
|
in
|
||||||
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
pname = "jdt-language-server";
|
pname = "jdt-language-server";
|
||||||
version = "1.26.0";
|
version = "1.31.0";
|
||||||
timestamp = "202307271613";
|
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://download.eclipse.org/jdtls/milestones/${version}/jdt-language-server-${version}-${timestamp}.tar.gz";
|
url = "https://download.eclipse.org/jdtls/milestones/${finalAttrs.version}/jdt-language-server-${finalAttrs.version}-${timestamp}.tar.gz";
|
||||||
sha256 = "sha256-ul/l7jsqg5UofiSu8gzm4Xg0z46HcRfmyqysamiKbFM=";
|
hash = "sha256-bCX2LQt00d2SqxmvuvvlBB6wbCuFPqtX9/Qv5v6wH3w=";
|
||||||
};
|
};
|
||||||
|
|
||||||
sourceRoot = ".";
|
sourceRoot = ".";
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
jdk
|
# Used for the included wrapper
|
||||||
|
python3
|
||||||
];
|
];
|
||||||
|
|
||||||
nativeBuildInputs = [
|
postPatch = ''
|
||||||
makeWrapper
|
# 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 =
|
installPhase =
|
||||||
let
|
let
|
||||||
# The application ships with config directories for linux and mac
|
# 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";
|
configDir = if stdenv.isDarwin then "config_mac" else "config_linux";
|
||||||
in
|
in
|
||||||
''
|
''
|
||||||
# Copy jars
|
install -Dm444 -t $out/share/java/jdtls/plugins/ plugins/*
|
||||||
install -D -t $out/share/java/plugins/ plugins/*.jar
|
install -Dm444 -t $out/share/java/jdtls/features/ features/*
|
||||||
|
install -Dm444 -t $out/share/java/jdtls/${configDir} ${configDir}/*
|
||||||
# Copy config directories for linux and mac
|
install -Dm555 -t $out/bin bin/jdtls
|
||||||
install -Dm 444 -t $out/share/config ${configDir}/*
|
install -Dm444 -t $out/bin bin/jdtls.py
|
||||||
|
|
||||||
# Get latest version of launcher jar
|
|
||||||
# e.g. org.eclipse.equinox.launcher_1.5.800.v20200727-1323.jar
|
|
||||||
launcher="$(ls $out/share/java/plugins/org.eclipse.equinox.launcher_* | sort -V | tail -n1)"
|
|
||||||
|
|
||||||
# The wrapper script will create a directory in the user's cache, copy in the config
|
|
||||||
# files since this dir can't be read-only, and by default use this as the runtime dir.
|
|
||||||
#
|
|
||||||
# The following options are required as per the upstream documentation:
|
|
||||||
#
|
|
||||||
# -Declipse.application=org.eclipse.jdt.ls.core.id1
|
|
||||||
# -Dosgi.bundles.defaultStartLevel=4
|
|
||||||
# -Declipse.product=org.eclipse.jdt.ls.core.product
|
|
||||||
# --add-modules=ALL-SYSTEM
|
|
||||||
# --add-opens java.base/java.util=ALL-UNNAMED
|
|
||||||
# --add-opens java.base/java.lang=ALL-UNNAMED
|
|
||||||
#
|
|
||||||
# The following options configure the server to run without writing logs to the nix store:
|
|
||||||
#
|
|
||||||
# -Dosgi.sharedConfiguration.area.readOnly=true
|
|
||||||
# -Dosgi.checkConfiguration=true
|
|
||||||
# -Dosgi.configuration.cascaded=true
|
|
||||||
# -Dosgi.sharedConfiguration.area=$out/share/config
|
|
||||||
#
|
|
||||||
# Other options which the caller may change:
|
|
||||||
#
|
|
||||||
# -Dlog.level:
|
|
||||||
# Log level.
|
|
||||||
# This can be overidden by setting JAVA_OPTS.
|
|
||||||
#
|
|
||||||
# The caller must specify the following:
|
|
||||||
#
|
|
||||||
# -data:
|
|
||||||
# The application stores runtime data here. We set this to <cache-dir>/$PWD
|
|
||||||
# so that projects don't collide with each other.
|
|
||||||
# This can be overidden by specifying -configuration to the wrapper.
|
|
||||||
#
|
|
||||||
# Java options, such as -Xms and Xmx can be specified by setting JAVA_OPTS.
|
|
||||||
#
|
|
||||||
makeWrapper ${jdk}/bin/java $out/bin/jdt-language-server \
|
|
||||||
--add-flags "-Declipse.application=org.eclipse.jdt.ls.core.id1" \
|
|
||||||
--add-flags "-Dosgi.bundles.defaultStartLevel=4" \
|
|
||||||
--add-flags "-Declipse.product=org.eclipse.jdt.ls.core.product" \
|
|
||||||
--add-flags "-Dosgi.sharedConfiguration.area=$out/share/config" \
|
|
||||||
--add-flags "-Dosgi.sharedConfiguration.area.readOnly=true" \
|
|
||||||
--add-flags "-Dosgi.checkConfiguration=true" \
|
|
||||||
--add-flags "-Dosgi.configuration.cascaded=true" \
|
|
||||||
--add-flags "-Dlog.level=ALL" \
|
|
||||||
--add-flags "\$JAVA_OPTS" \
|
|
||||||
--add-flags "-jar $launcher" \
|
|
||||||
--add-flags "--add-modules=ALL-SYSTEM" \
|
|
||||||
--add-flags "--add-opens java.base/java.util=ALL-UNNAMED" \
|
|
||||||
--add-flags "--add-opens java.base/java.lang=ALL-UNNAMED"
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = with lib; {
|
meta = {
|
||||||
homepage = "https://github.com/eclipse/eclipse.jdt.ls";
|
homepage = "https://github.com/eclipse/eclipse.jdt.ls";
|
||||||
description = "Java language server";
|
description = "Java language server";
|
||||||
sourceProvenance = with sourceTypes; [ binaryBytecode ];
|
sourceProvenance = with lib.sourceTypes; [ binaryBytecode ];
|
||||||
license = licenses.epl20;
|
license = lib.licenses.epl20;
|
||||||
maintainers = with maintainers; [ matt-snider ];
|
maintainers = with lib.maintainers; [ matt-snider ];
|
||||||
platforms = platforms.all;
|
platforms = lib.platforms.all;
|
||||||
|
mainProgram = "jdtls";
|
||||||
};
|
};
|
||||||
}
|
})
|
||||||
|
|
Loading…
Reference in New Issue
Block a user