diff options
Diffstat (limited to 'pkgs/development/compilers/openjdk/openjfx/17/default.nix')
-rw-r--r-- | pkgs/development/compilers/openjdk/openjfx/17/default.nix | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/pkgs/development/compilers/openjdk/openjfx/17/default.nix b/pkgs/development/compilers/openjdk/openjfx/17/default.nix new file mode 100644 index 0000000000000..1b19ee30eca69 --- /dev/null +++ b/pkgs/development/compilers/openjdk/openjfx/17/default.nix @@ -0,0 +1,94 @@ +{ stdenv, lib, pkgs, fetchFromGitHub, writeText, openjdk17_headless, gradle_7 +, pkg-config, perl, cmake, gperf, gtk2, gtk3, libXtst, libXxf86vm, glib, alsa-lib +, ffmpeg_6-headless, python3, ruby +, withMedia ? true +, withWebKit ? false +}: + +let + pname = "openjfx-modular-sdk"; + major = "17"; + update = ".0.11"; + build = "-ga"; + repover = "${major}${update}${build}"; + jdk = openjdk17_headless; + gradle = gradle_7; + +in stdenv.mkDerivation { + inherit pname; + version = "${major}${update}${build}"; + + src = fetchFromGitHub { + owner = "openjdk"; + repo = "jfx${major}u"; + rev = repover; + sha256 = "sha256-9VfXk2EfMebMyVKPohPRP2QXRFf8XemUtfY0JtBCHyw="; + }; + + patches = [ + ../backport-ffmpeg-6-support-jfx11.patch + ]; + + buildInputs = [ gtk2 gtk3 libXtst libXxf86vm glib alsa-lib ffmpeg_6-headless ]; + nativeBuildInputs = [ gradle perl pkg-config cmake gperf python3 ruby ]; + + dontUseCmakeConfigure = true; + + config = writeText "gradle.properties" '' + CONF = Release + JDK_HOME = ${jdk.home} + COMPILE_MEDIA = ${lib.boolToString withMedia} + COMPILE_WEBKIT = ${lib.boolToString withWebKit} + ''; + + postPatch = '' + # Add missing includes for gcc-13 for webkit build: + sed -e '1i #include <cstdio>' \ + -i modules/javafx.web/src/main/native/Source/bmalloc/bmalloc/Heap.cpp \ + modules/javafx.web/src/main/native/Source/bmalloc/bmalloc/IsoSharedPageInlines.h + + ln -s $config gradle.properties + ''; + + mitmCache = gradle.fetchDeps { + attrPath = "openjfx${major}"; + pkg = pkgs."openjfx${major}".override { withWebKit = true; }; + data = ./deps.json; + }; + + __darwinAllowLocalNetworking = true; + + preBuild = '' + export NUMBER_OF_PROCESSORS=$NIX_BUILD_CORES + export NIX_CFLAGS_COMPILE="$(pkg-config --cflags glib-2.0) $NIX_CFLAGS_COMPILE" + ''; + + enableParallelBuilding = false; + + gradleBuildTask = "sdk"; + + installPhase = '' + cp -r build/modular-sdk $out + ''; + + stripDebugList = [ "." ]; + + postFixup = '' + # Remove references to bootstrap. + export openjdkOutPath='${jdk.outPath}' + find "$out" -name \*.so | while read lib; do + new_refs="$(patchelf --print-rpath "$lib" | perl -pe 's,:?\Q$ENV{openjdkOutPath}\E[^:]*,,')" + patchelf --set-rpath "$new_refs" "$lib" + done + ''; + + disallowedReferences = [ jdk gradle.jdk ]; + + meta = with lib; { + homepage = "http://openjdk.java.net/projects/openjfx/"; + license = licenses.gpl2; + description = "Next-generation Java client toolkit"; + maintainers = with maintainers; [ abbradar ]; + platforms = platforms.unix; + }; +} |