diff --git a/pkgs/development/compilers/jetbrains-jdk/default.nix b/pkgs/development/compilers/jetbrains-jdk/default.nix index 33f6231aafbd..fee99c50f5d5 100644 --- a/pkgs/development/compilers/jetbrains-jdk/default.nix +++ b/pkgs/development/compilers/jetbrains-jdk/default.nix @@ -1,6 +1,7 @@ { lib, stdenv, + fetchurl, fetchFromGitHub, jetbrains, jdk, @@ -26,6 +27,8 @@ libdrm, libgbm, wayland, + wayland-scanner, + wayland-protocols, udev, fontconfig, shaderc, @@ -45,27 +48,38 @@ let in jdk.overrideAttrs (oldAttrs: rec { pname = "jetbrains-jdk" + lib.optionalString withJcef "-jcef"; - javaVersion = "21.0.9"; - build = "1163.86"; + javaVersion = "25.0.2"; + build = "329.72"; # To get the new tag: # git clone https://github.com/jetbrains/jetbrainsruntime # cd jetbrainsruntime # git tag --points-at [revision] # Look for the line that starts with jbr- - openjdkTag = "jbr-release-21.0.9b1163.86"; version = "${javaVersion}-b${build}"; + openjdkTag = "jbr-release-${javaVersion}b${build}"; src = fetchFromGitHub { owner = "JetBrains"; repo = "JetBrainsRuntime"; rev = "jb${version}"; - hash = "sha256-P2boCbGB66X8LB4sZHGFO8lqHbv6F4kqGVMGBd9yKu0="; + hash = "sha256-K4Izbij+1YO4UERHS0mwGKZX/VtIaxyNPZD068Vf99Q="; }; + gtk-protocols = + let + rev = "refs/tags/4.22.1"; + hash = "sha256-zCcXuiEYL2N4Q+WT96ouVDwdZVSohgU/QA2BkGlnZZ0="; + in + fetchurl { + # We only need the wayland protocols file + url = "https://raw.githubusercontent.com/GNOME/gtk/${rev}/gdk/wayland/protocol/gtk-shell.xml"; + hash = hash; + }; + env = (oldAttrs.env or { }) // { BOOT_JDK = jdk.home; # run `git log -1 --pretty=%ct` in jdk repo for new value on update - SOURCE_DATE_EPOCH = 1765114563; + SOURCE_DATE_EPOCH = 1769205294; }; patches = [ ]; @@ -76,25 +90,35 @@ jdk.overrideAttrs (oldAttrs: rec { runHook preBuild ${lib.optionalString withJcef "cp -r ${jetbrains.jcef} jcef_linux_${arch}"} + cp -r ${gtk-protocols.out} gtk-shell.xml sed \ -e "s/OPENJDK_TAG=.*/OPENJDK_TAG=${openjdkTag}/" \ -e "s/SOURCE_DATE_EPOCH=.*//" \ -e "s/export SOURCE_DATE_EPOCH//" \ -i jb/project/tools/common/scripts/common.sh + declare -a realConfigureFlags + for configureFlag in "''${configureFlags[@]}"; do case "$configureFlag" in --host=*) # intentionally omit flag ;; + --with-vendor-version-string=*) + # Replace the flag from the JDK to include that it is JBR and the package version, so it passes the installation tests + realConfigureFlags+=('--with-vendor-version-string="nix/JBR-${version}${lib.optionalString withJcef "-jcef"}"') + ;; *) realConfigureFlags+=("$configureFlag") ;; esac done + realConfigureFlags+=("--with-wayland-protocols=${wayland-protocols.out}/share/wayland-protocols") echo "computed configure flags: ''${realConfigureFlags[*]}" + substituteInPlace jb/project/tools/linux/scripts/mkimages_${arch}.sh --replace-fail "STATIC_CONF_ARGS" "STATIC_CONF_ARGS ''${realConfigureFlags[*]}" + sed \ -e "s/create_image_bundle \"jb/#/" \ -e "s/echo Creating /exit 0 #/" \ @@ -175,6 +199,8 @@ jdk.overrideAttrs (oldAttrs: rec { unzip rsync shaderc # glslc + wayland-scanner + libxkbcommon ] ++ oldAttrs.nativeBuildInputs; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index cec6f9074e6e..51293390c3f1 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -9620,14 +9620,14 @@ with pkgs; ) // { jdk-no-jcef = callPackage ../development/compilers/jetbrains-jdk { - jdk = jdk21; + jdk = jdk25; withJcef = false; }; jdk = callPackage ../development/compilers/jetbrains-jdk { - jdk = jdk21; + jdk = jdk25; }; jcef = callPackage ../development/compilers/jetbrains-jdk/jcef.nix { - jdk = jdk21; + jdk = jdk25; }; } // lib.optionalAttrs config.allowAliases {