jetbrains.jdk-21, jetbrains.jdk-no-jcef-21: init
This commit is contained in:
committed by
Awakened Redstone
parent
cebab056b4
commit
a0b297630f
@@ -45,7 +45,7 @@ let
|
||||
};
|
||||
});
|
||||
|
||||
jbr = jetbrains.jdk-no-jcef;
|
||||
jbr = jetbrains.jdk-no-jcef-21;
|
||||
|
||||
ideaSrc = fetchFromGitHub {
|
||||
owner = "jetbrains";
|
||||
|
||||
@@ -142,12 +142,12 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
};
|
||||
|
||||
env = {
|
||||
JAVA_HOME = jetbrains.jdk;
|
||||
JAVA_HOME = jetbrains.jdk-21;
|
||||
ANDROID_SDK_HOME = "$(pwd)";
|
||||
};
|
||||
|
||||
gradleFlags = [
|
||||
"-Dorg.gradle.java.home=${jetbrains.jdk}"
|
||||
"-Dorg.gradle.java.home=${jetbrains.jdk-21}"
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
callPackage,
|
||||
jetbrains,
|
||||
jdk,
|
||||
debugBuild ? false,
|
||||
withJcef ? true,
|
||||
}:
|
||||
|
||||
callPackage ./common.nix
|
||||
{
|
||||
inherit jdk debugBuild withJcef;
|
||||
}
|
||||
{
|
||||
# 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-
|
||||
javaVersion = "21.0.10";
|
||||
build = "1163.110";
|
||||
# run `git log -1 --pretty=%ct` in jdk repo for new value on update
|
||||
sourceDateEpoch = 1765114563;
|
||||
srcHash = "sha256-Qmffu7p6frBoH2Zh+EiqvEoMNNBE79qfkgLSC3+XuI0=";
|
||||
homePath = "${jetbrains.jdk-21}/lib/openjdk";
|
||||
jcefPackage = jetbrains.jcef-21;
|
||||
}
|
||||
@@ -0,0 +1,236 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
jdk,
|
||||
git,
|
||||
autoconf,
|
||||
unzip,
|
||||
rsync,
|
||||
shaderc,
|
||||
vulkan-headers,
|
||||
libxdamage,
|
||||
libxxf86vm,
|
||||
libxrandr,
|
||||
libxi,
|
||||
libxcursor,
|
||||
libxrender,
|
||||
libx11,
|
||||
libxext,
|
||||
libxkbcommon,
|
||||
libxcb,
|
||||
nss,
|
||||
nspr,
|
||||
libdrm,
|
||||
libgbm,
|
||||
wayland,
|
||||
udev,
|
||||
fontconfig,
|
||||
debugBuild ? false,
|
||||
withJcef ? true,
|
||||
}:
|
||||
|
||||
{
|
||||
javaVersion,
|
||||
build,
|
||||
sourceDateEpoch,
|
||||
srcHash,
|
||||
homePath,
|
||||
jcefPackage ? null,
|
||||
extraBuildPhase ? "",
|
||||
vendorVersionString ? null,
|
||||
extraConfigureFlags ? [ ],
|
||||
extraNativeBuildInputs ? [ ],
|
||||
extraBuildInputs ? [ ],
|
||||
}:
|
||||
|
||||
assert debugBuild -> withJcef;
|
||||
|
||||
let
|
||||
arch =
|
||||
{
|
||||
"aarch64-linux" = "aarch64";
|
||||
"x86_64-linux" = "x64";
|
||||
}
|
||||
.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
|
||||
cpu = stdenv.hostPlatform.parsed.cpu.name;
|
||||
version = "${javaVersion}-b${build}";
|
||||
openjdkTag = "jbr-release-${javaVersion}b${build}";
|
||||
in
|
||||
jdk.overrideAttrs (oldAttrs: {
|
||||
pname = "jetbrains-jdk" + lib.optionalString withJcef "-jcef";
|
||||
inherit
|
||||
javaVersion
|
||||
build
|
||||
version
|
||||
openjdkTag
|
||||
;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "JetBrains";
|
||||
repo = "JetBrainsRuntime";
|
||||
rev = "jb${version}";
|
||||
hash = srcHash;
|
||||
};
|
||||
|
||||
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 = sourceDateEpoch;
|
||||
};
|
||||
|
||||
patches = [ ];
|
||||
|
||||
dontConfigure = true;
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
|
||||
${lib.optionalString withJcef "cp -r ${jcefPackage} jcef_linux_${arch}"}
|
||||
${extraBuildPhase}
|
||||
|
||||
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
|
||||
;;
|
||||
${lib.optionalString (vendorVersionString != null) ''
|
||||
--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="${vendorVersionString}"')
|
||||
;;
|
||||
''}
|
||||
*)
|
||||
realConfigureFlags+=("$configureFlag")
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
${lib.concatMapStringsSep "\n" (flag: ''realConfigureFlags+=("${flag}")'') extraConfigureFlags}
|
||||
|
||||
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 #/" \
|
||||
-i jb/project/tools/linux/scripts/mkimages_${arch}.sh
|
||||
|
||||
patchShebangs .
|
||||
./jb/project/tools/linux/scripts/mkimages_${arch}.sh ${build} ${
|
||||
if debugBuild then "fd" else (if withJcef then "jcef" else "nomod")
|
||||
}
|
||||
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
installPhase =
|
||||
let
|
||||
buildType = if debugBuild then "fastdebug" else "release";
|
||||
debugSuffix = if debugBuild then "-fastdebug" else "";
|
||||
jcefSuffix = if debugBuild || !withJcef then "" else "_jcef";
|
||||
jbrsdkDir = "jbrsdk${jcefSuffix}-${javaVersion}-linux-${arch}${debugSuffix}-b${build}";
|
||||
in
|
||||
''
|
||||
runHook preInstall
|
||||
|
||||
mv build/linux-${cpu}-server-${buildType}/images/jdk/man build/linux-${cpu}-server-${buildType}/images/${jbrsdkDir}
|
||||
rm -rf build/linux-${cpu}-server-${buildType}/images/jdk
|
||||
mv build/linux-${cpu}-server-${buildType}/images/${jbrsdkDir} build/linux-${cpu}-server-${buildType}/images/jdk
|
||||
''
|
||||
+ oldAttrs.installPhase
|
||||
+ "runHook postInstall";
|
||||
|
||||
postInstall = lib.optionalString withJcef ''
|
||||
chmod +x $out/lib/openjdk/lib/chrome-sandbox
|
||||
'';
|
||||
|
||||
dontStrip = debugBuild;
|
||||
|
||||
postFixup = ''
|
||||
# Build the set of output library directories to rpath against
|
||||
LIBDIRS="${
|
||||
lib.makeLibraryPath [
|
||||
libxdamage
|
||||
libxxf86vm
|
||||
libxrandr
|
||||
libxi
|
||||
libxcursor
|
||||
libxrender
|
||||
libx11
|
||||
libxext
|
||||
libxkbcommon
|
||||
libxcb
|
||||
nss
|
||||
nspr
|
||||
libdrm
|
||||
libgbm
|
||||
wayland
|
||||
udev
|
||||
fontconfig
|
||||
]
|
||||
}"
|
||||
for output in ${lib.concatStringsSep " " oldAttrs.outputs}; do
|
||||
if [ "$output" = debug ]; then continue; fi
|
||||
LIBDIRS="$(find $(eval echo \$$output) -name \*.so\* -exec dirname {} \+ | sort -u | tr '\n' ':'):$LIBDIRS"
|
||||
done
|
||||
# Add the local library paths to remove dependencies on the bootstrap
|
||||
for output in ${lib.concatStringsSep " " oldAttrs.outputs}; do
|
||||
if [ "$output" = debug ]; then continue; fi
|
||||
OUTPUTDIR=$(eval echo \$$output)
|
||||
BINLIBS=$(find $OUTPUTDIR/bin/ -type f; find $OUTPUTDIR -name \*.so\*)
|
||||
echo "$BINLIBS" | while read i; do
|
||||
patchelf --set-rpath "$LIBDIRS:$(patchelf --print-rpath "$i")" "$i" || true
|
||||
done
|
||||
done
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [
|
||||
git
|
||||
autoconf
|
||||
unzip
|
||||
rsync
|
||||
shaderc # glslc
|
||||
]
|
||||
++ extraNativeBuildInputs
|
||||
++ oldAttrs.nativeBuildInputs;
|
||||
|
||||
buildInputs = [
|
||||
vulkan-headers
|
||||
]
|
||||
++ extraBuildInputs
|
||||
++ oldAttrs.buildInputs or [ ];
|
||||
|
||||
meta = {
|
||||
description = "OpenJDK fork to better support Jetbrains's products";
|
||||
longDescription = ''
|
||||
JetBrains Runtime is a runtime environment for running IntelliJ Platform
|
||||
based products on Windows, Mac OS X, and Linux. JetBrains Runtime is
|
||||
based on OpenJDK project with some modifications. These modifications
|
||||
include: Subpixel Anti-Aliasing, enhanced font rendering on Linux, HiDPI
|
||||
support, ligatures, some fixes for native crashes not presented in
|
||||
official build, and other small enhancements.
|
||||
JetBrains Runtime is not a certified build of OpenJDK. Please, use at
|
||||
your own risk.
|
||||
'';
|
||||
homepage = "https://confluence.jetbrains.com/display/JBR/JetBrains+Runtime";
|
||||
inherit (jdk.meta) license platforms mainProgram;
|
||||
maintainers = with lib.maintainers; [
|
||||
aoli-al
|
||||
];
|
||||
|
||||
broken = stdenv.hostPlatform.isDarwin;
|
||||
};
|
||||
|
||||
passthru = oldAttrs.passthru // {
|
||||
home = homePath;
|
||||
};
|
||||
})
|
||||
@@ -1,70 +1,16 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
callPackage,
|
||||
fetchurl,
|
||||
fetchFromGitHub,
|
||||
jetbrains,
|
||||
jdk,
|
||||
git,
|
||||
autoconf,
|
||||
unzip,
|
||||
rsync,
|
||||
debugBuild ? false,
|
||||
withJcef ? true,
|
||||
|
||||
libxdamage,
|
||||
libxxf86vm,
|
||||
libxrandr,
|
||||
libxi,
|
||||
libxcursor,
|
||||
libxrender,
|
||||
libx11,
|
||||
libxext,
|
||||
libxkbcommon,
|
||||
libxcb,
|
||||
nss,
|
||||
nspr,
|
||||
libdrm,
|
||||
libgbm,
|
||||
wayland,
|
||||
wayland-scanner,
|
||||
wayland-protocols,
|
||||
udev,
|
||||
fontconfig,
|
||||
shaderc,
|
||||
vulkan-headers,
|
||||
libxkbcommon,
|
||||
}:
|
||||
|
||||
assert debugBuild -> withJcef;
|
||||
|
||||
let
|
||||
arch =
|
||||
{
|
||||
"aarch64-linux" = "aarch64";
|
||||
"x86_64-linux" = "x64";
|
||||
}
|
||||
.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
|
||||
cpu = stdenv.hostPlatform.parsed.cpu.name;
|
||||
in
|
||||
jdk.overrideAttrs (oldAttrs: rec {
|
||||
pname = "jetbrains-jdk" + lib.optionalString withJcef "-jcef";
|
||||
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-
|
||||
version = "${javaVersion}-b${build}";
|
||||
openjdkTag = "jbr-release-${javaVersion}b${build}";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "JetBrains";
|
||||
repo = "JetBrainsRuntime";
|
||||
rev = "jb${version}";
|
||||
hash = "sha256-K4Izbij+1YO4UERHS0mwGKZX/VtIaxyNPZD068Vf99Q=";
|
||||
};
|
||||
|
||||
gtk-protocols =
|
||||
let
|
||||
rev = "refs/tags/4.22.1";
|
||||
@@ -75,162 +21,33 @@ jdk.overrideAttrs (oldAttrs: rec {
|
||||
url = "https://raw.githubusercontent.com/GNOME/gtk/${rev}/gdk/wayland/protocol/gtk-shell.xml";
|
||||
hash = hash;
|
||||
};
|
||||
|
||||
env = (oldAttrs.env or { }) // {
|
||||
BOOT_JDK = jdk.home;
|
||||
in
|
||||
callPackage ./common.nix
|
||||
{
|
||||
inherit jdk debugBuild withJcef;
|
||||
}
|
||||
{
|
||||
# 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-
|
||||
javaVersion = "25.0.2";
|
||||
build = "329.72";
|
||||
# run `git log -1 --pretty=%ct` in jdk repo for new value on update
|
||||
SOURCE_DATE_EPOCH = 1769205294;
|
||||
};
|
||||
|
||||
patches = [ ];
|
||||
|
||||
dontConfigure = true;
|
||||
|
||||
buildPhase = ''
|
||||
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 #/" \
|
||||
-i jb/project/tools/linux/scripts/mkimages_${arch}.sh
|
||||
|
||||
patchShebangs .
|
||||
./jb/project/tools/linux/scripts/mkimages_${arch}.sh ${build} ${
|
||||
if debugBuild then "fd" else (if withJcef then "jcef" else "nomod")
|
||||
}
|
||||
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
installPhase =
|
||||
let
|
||||
buildType = if debugBuild then "fastdebug" else "release";
|
||||
debugSuffix = if debugBuild then "-fastdebug" else "";
|
||||
jcefSuffix = if debugBuild || !withJcef then "" else "_jcef";
|
||||
jbrsdkDir = "jbrsdk${jcefSuffix}-${javaVersion}-linux-${arch}${debugSuffix}-b${build}";
|
||||
in
|
||||
''
|
||||
runHook preInstall
|
||||
|
||||
mv build/linux-${cpu}-server-${buildType}/images/jdk/man build/linux-${cpu}-server-${buildType}/images/${jbrsdkDir}
|
||||
rm -rf build/linux-${cpu}-server-${buildType}/images/jdk
|
||||
mv build/linux-${cpu}-server-${buildType}/images/${jbrsdkDir} build/linux-${cpu}-server-${buildType}/images/jdk
|
||||
''
|
||||
+ oldAttrs.installPhase
|
||||
+ "runHook postInstall";
|
||||
|
||||
postInstall = lib.optionalString withJcef ''
|
||||
chmod +x $out/lib/openjdk/lib/chrome-sandbox
|
||||
'';
|
||||
|
||||
dontStrip = debugBuild;
|
||||
|
||||
postFixup = ''
|
||||
# Build the set of output library directories to rpath against
|
||||
LIBDIRS="${
|
||||
lib.makeLibraryPath [
|
||||
libxdamage
|
||||
libxxf86vm
|
||||
libxrandr
|
||||
libxi
|
||||
libxcursor
|
||||
libxrender
|
||||
libx11
|
||||
libxext
|
||||
libxkbcommon
|
||||
libxcb
|
||||
nss
|
||||
nspr
|
||||
libdrm
|
||||
libgbm
|
||||
wayland
|
||||
udev
|
||||
fontconfig
|
||||
]
|
||||
}"
|
||||
for output in ${lib.concatStringsSep " " oldAttrs.outputs}; do
|
||||
if [ "$output" = debug ]; then continue; fi
|
||||
LIBDIRS="$(find $(eval echo \$$output) -name \*.so\* -exec dirname {} \+ | sort -u | tr '\n' ':'):$LIBDIRS"
|
||||
done
|
||||
# Add the local library paths to remove dependencies on the bootstrap
|
||||
for output in ${lib.concatStringsSep " " oldAttrs.outputs}; do
|
||||
if [ "$output" = debug ]; then continue; fi
|
||||
OUTPUTDIR=$(eval echo \$$output)
|
||||
BINLIBS=$(find $OUTPUTDIR/bin/ -type f; find $OUTPUTDIR -name \*.so\*)
|
||||
echo "$BINLIBS" | while read i; do
|
||||
patchelf --set-rpath "$LIBDIRS:$(patchelf --print-rpath "$i")" "$i" || true
|
||||
done
|
||||
done
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [
|
||||
git
|
||||
autoconf
|
||||
unzip
|
||||
rsync
|
||||
shaderc # glslc
|
||||
wayland-scanner
|
||||
libxkbcommon
|
||||
]
|
||||
++ oldAttrs.nativeBuildInputs;
|
||||
|
||||
buildInputs = [
|
||||
vulkan-headers
|
||||
]
|
||||
++ oldAttrs.buildInputs or [ ];
|
||||
|
||||
meta = {
|
||||
description = "OpenJDK fork to better support Jetbrains's products";
|
||||
longDescription = ''
|
||||
JetBrains Runtime is a runtime environment for running IntelliJ Platform
|
||||
based products on Windows, Mac OS X, and Linux. JetBrains Runtime is
|
||||
based on OpenJDK project with some modifications. These modifications
|
||||
include: Subpixel Anti-Aliasing, enhanced font rendering on Linux, HiDPI
|
||||
support, ligatures, some fixes for native crashes not presented in
|
||||
official build, and other small enhancements.
|
||||
JetBrains Runtime is not a certified build of OpenJDK. Please, use at
|
||||
your own risk.
|
||||
sourceDateEpoch = 1769205294;
|
||||
srcHash = "sha256-K4Izbij+1YO4UERHS0mwGKZX/VtIaxyNPZD068Vf99Q=";
|
||||
homePath = "${jetbrains.jdk}/lib/openjdk";
|
||||
jcefPackage = jetbrains.jcef;
|
||||
extraBuildPhase = ''
|
||||
cp -r ${gtk-protocols.out} gtk-shell.xml
|
||||
'';
|
||||
homepage = "https://confluence.jetbrains.com/display/JBR/JetBrains+Runtime";
|
||||
inherit (jdk.meta) license platforms mainProgram;
|
||||
maintainers = with lib.maintainers; [
|
||||
aoli-al
|
||||
vendorVersionString = "nix/JBR-25.0.2-b329.72${if withJcef then "-jcef" else ""}";
|
||||
extraConfigureFlags = [
|
||||
"--with-wayland-protocols=${wayland-protocols.out}/share/wayland-protocols"
|
||||
];
|
||||
|
||||
broken = stdenv.hostPlatform.isDarwin;
|
||||
};
|
||||
|
||||
passthru = oldAttrs.passthru // {
|
||||
home = "${jetbrains.jdk}/lib/openjdk";
|
||||
};
|
||||
})
|
||||
extraNativeBuildInputs = [
|
||||
wayland-scanner
|
||||
libxkbcommon
|
||||
];
|
||||
}
|
||||
|
||||
@@ -9623,12 +9623,22 @@ with pkgs;
|
||||
jdk = jdk25;
|
||||
withJcef = false;
|
||||
};
|
||||
jdk-no-jcef-21 = callPackage ../development/compilers/jetbrains-jdk/21.nix {
|
||||
jdk = jdk21;
|
||||
withJcef = false;
|
||||
};
|
||||
jdk = callPackage ../development/compilers/jetbrains-jdk {
|
||||
jdk = jdk25;
|
||||
};
|
||||
jdk-21 = callPackage ../development/compilers/jetbrains-jdk/21.nix {
|
||||
jdk = jdk21;
|
||||
};
|
||||
jcef = callPackage ../development/compilers/jetbrains-jdk/jcef.nix {
|
||||
jdk = jdk25;
|
||||
};
|
||||
jcef-21 = callPackage ../development/compilers/jetbrains-jdk/jcef.nix {
|
||||
jdk = jdk21;
|
||||
};
|
||||
}
|
||||
// lib.optionalAttrs config.allowAliases {
|
||||
jdk-no-jcef-17 = throw "'jdk-no-jcef-17' has been removed because it is unused in nixpkgs."; # Added 2026-01-24
|
||||
|
||||
Reference in New Issue
Block a user