diff options
Diffstat (limited to 'pkgs/development/compilers/openjdk')
25 files changed, 375 insertions, 681 deletions
diff --git a/pkgs/development/compilers/openjdk/12.nix b/pkgs/development/compilers/openjdk/12.nix index e717a910f70..ab0696e172c 100644 --- a/pkgs/development/compilers/openjdk/12.nix +++ b/pkgs/development/compilers/openjdk/12.nix @@ -1,5 +1,5 @@ { stdenv, lib, fetchurl, bash, pkg-config, autoconf, cpio, file, which, unzip -, zip, perl, cups, freetype, harfbuzz, alsa-lib, libjpeg, giflib, libpng, zlib, lcms2 +, zip, perl, cups, freetype, alsa-lib, libjpeg, giflib, libpng, zlib, lcms2 , libX11, libICE, libXrender, libXext, libXt, libXtst, libXi, libXinerama , libXcursor, libXrandr, fontconfig, openjdk11-bootstrap, fetchpatch , setJavaClassPath @@ -27,7 +27,7 @@ let nativeBuildInputs = [ pkg-config autoconf unzip ]; buildInputs = [ - cpio file which zip perl zlib cups freetype harfbuzz alsa-lib libjpeg giflib + cpio file which zip perl zlib cups freetype alsa-lib libjpeg giflib libpng zlib lcms2 libX11 libICE libXrender libXext libXtst libXt libXtst libXi libXinerama libXcursor libXrandr fontconfig openjdk-bootstrap ] ++ lib.optionals (!headless && enableGnome2) [ @@ -67,7 +67,6 @@ let "--enable-unlimited-crypto" "--with-native-debug-symbols=internal" "--with-freetype=system" - "--with-harfbuzz=system" "--with-libjpeg=system" "--with-giflib=system" "--with-libpng=system" @@ -96,6 +95,12 @@ let buildFlags = [ "all" ]; + postBuild = '' + cd build/linux* + make images + cd - + ''; + installPhase = '' mkdir -p $out/lib diff --git a/pkgs/development/compilers/openjdk/13.nix b/pkgs/development/compilers/openjdk/13.nix index b012459ba04..5d5d9f77477 100644 --- a/pkgs/development/compilers/openjdk/13.nix +++ b/pkgs/development/compilers/openjdk/13.nix @@ -1,5 +1,5 @@ { stdenv, lib, fetchurl, bash, pkg-config, autoconf, cpio, file, which, unzip -, zip, perl, cups, freetype, harfbuzz, alsa-lib, libjpeg, giflib, libpng, zlib, lcms2 +, zip, perl, cups, freetype, alsa-lib, libjpeg, giflib, libpng, zlib, lcms2 , libX11, libICE, libXrender, libXext, libXt, libXtst, libXi, libXinerama , libXcursor, libXrandr, fontconfig, openjdk13-bootstrap, fetchpatch , setJavaClassPath @@ -27,7 +27,7 @@ let nativeBuildInputs = [ pkg-config autoconf unzip ]; buildInputs = [ - cpio file which zip perl zlib cups freetype harfbuzz alsa-lib libjpeg giflib + cpio file which zip perl zlib cups freetype alsa-lib libjpeg giflib libpng zlib lcms2 libX11 libICE libXrender libXext libXtst libXt libXtst libXi libXinerama libXcursor libXrandr fontconfig openjdk-bootstrap ] ++ lib.optionals (!headless && enableGnome2) [ @@ -72,7 +72,6 @@ let "--enable-unlimited-crypto" "--with-native-debug-symbols=internal" "--with-freetype=system" - "--with-harfbuzz=system" "--with-libjpeg=system" "--with-giflib=system" "--with-libpng=system" @@ -101,6 +100,12 @@ let buildFlags = [ "all" ]; + postBuild = '' + cd build/linux* + make images + cd - + ''; + installPhase = '' mkdir -p $out/lib @@ -161,7 +166,7 @@ let disallowedReferences = [ openjdk-bootstrap ]; - meta = import ./meta.nix lib version; + meta = (import ./meta.nix lib version) // { broken = true; }; passthru = { architecture = ""; diff --git a/pkgs/development/compilers/openjdk/14.nix b/pkgs/development/compilers/openjdk/14.nix index 0f4f17d078e..348fd3996c9 100644 --- a/pkgs/development/compilers/openjdk/14.nix +++ b/pkgs/development/compilers/openjdk/14.nix @@ -1,5 +1,5 @@ { stdenv, lib, fetchurl, bash, pkg-config, autoconf, cpio, file, which, unzip -, zip, perl, cups, freetype, harfbuzz, alsa-lib, libjpeg, giflib, libpng, zlib, lcms2 +, zip, perl, cups, freetype, alsa-lib, libjpeg, giflib, libpng, zlib, lcms2 , libX11, libICE, libXrender, libXext, libXt, libXtst, libXi, libXinerama , libXcursor, libXrandr, fontconfig, openjdk14-bootstrap , setJavaClassPath @@ -27,7 +27,7 @@ let nativeBuildInputs = [ pkg-config autoconf unzip ]; buildInputs = [ - cpio file which zip perl zlib cups freetype harfbuzz alsa-lib libjpeg giflib + cpio file which zip perl zlib cups freetype alsa-lib libjpeg giflib libpng zlib lcms2 libX11 libICE libXrender libXext libXtst libXt libXtst libXi libXinerama libXcursor libXrandr fontconfig openjdk-bootstrap ] ++ lib.optionals (!headless && enableGnome2) [ @@ -67,7 +67,6 @@ let "--enable-unlimited-crypto" "--with-native-debug-symbols=internal" "--with-freetype=system" - "--with-harfbuzz=system" "--with-libjpeg=system" "--with-giflib=system" "--with-libpng=system" @@ -96,6 +95,12 @@ let buildFlags = [ "all" ]; + postBuild = '' + cd build/linux* + make images + cd - + ''; + installPhase = '' mkdir -p $out/lib @@ -157,7 +162,7 @@ let disallowedReferences = [ openjdk-bootstrap ]; - meta = import ./meta.nix lib version; + meta = (import ./meta.nix lib version) // { broken = true; }; passthru = { architecture = ""; diff --git a/pkgs/development/compilers/openjdk/15.nix b/pkgs/development/compilers/openjdk/15.nix index 54bce680a18..2447b0783ca 100644 --- a/pkgs/development/compilers/openjdk/15.nix +++ b/pkgs/development/compilers/openjdk/15.nix @@ -1,5 +1,5 @@ { stdenv, lib, fetchurl, bash, pkg-config, autoconf, cpio, file, which, unzip -, zip, perl, cups, freetype, harfbuzz, alsa-lib, libjpeg, giflib, libpng, zlib, lcms2 +, zip, perl, cups, freetype, alsa-lib, libjpeg, giflib, libpng, zlib, lcms2 , libX11, libICE, libXrender, libXext, libXt, libXtst, libXi, libXinerama , libXcursor, libXrandr, fontconfig, openjdk15-bootstrap , setJavaClassPath @@ -30,7 +30,7 @@ let nativeBuildInputs = [ pkg-config autoconf unzip zip file which ]; buildInputs = [ - cpio perl zlib cups freetype harfbuzz alsa-lib libjpeg giflib + cpio perl zlib cups freetype alsa-lib libjpeg giflib libpng zlib lcms2 libX11 libICE libXrender libXext libXtst libXt libXtst libXi libXinerama libXcursor libXrandr fontconfig openjdk-bootstrap ] ++ lib.optionals (!headless && enableGnome2) [ @@ -70,15 +70,13 @@ let "--enable-unlimited-crypto" "--with-native-debug-symbols=internal" "--with-freetype=system" - "--with-harfbuzz=system" "--with-libjpeg=system" "--with-giflib=system" "--with-libpng=system" "--with-zlib=system" "--with-lcms=system" "--with-stdc++lib=dynamic" - ] ++ lib.optional stdenv.isx86_64 "--with-jvm-features=zgc" - ++ lib.optional headless "--enable-headless-only" + ] ++ lib.optional headless "--enable-headless-only" ++ lib.optional (!headless && enableJavaFX) "--with-import-modules=${openjfx}"; separateDebugInfo = true; @@ -99,6 +97,12 @@ let buildFlags = [ "all" ]; + postBuild = '' + cd build/linux* + make images + cd - + ''; + installPhase = '' mkdir -p $out/lib diff --git a/pkgs/development/compilers/openjdk/16.nix b/pkgs/development/compilers/openjdk/16.nix index 802449e4027..4b0874a03a4 100644 --- a/pkgs/development/compilers/openjdk/16.nix +++ b/pkgs/development/compilers/openjdk/16.nix @@ -1,5 +1,5 @@ { stdenv, lib, fetchurl, fetchFromGitHub, bash, pkg-config, autoconf, cpio -, file, which, unzip, zip, perl, cups, freetype, harfbuzz, alsa-lib, libjpeg, giflib +, file, which, unzip, zip, perl, cups, freetype, alsa-lib, libjpeg, giflib , libpng, zlib, lcms2, libX11, libICE, libXrender, libXext, libXt, libXtst , libXi, libXinerama, libXcursor, libXrandr, fontconfig, openjdk16-bootstrap , setJavaClassPath @@ -31,7 +31,7 @@ let nativeBuildInputs = [ pkg-config autoconf unzip ]; buildInputs = [ - cpio file which zip perl zlib cups freetype harfbuzz alsa-lib libjpeg giflib + cpio file which zip perl zlib cups freetype alsa-lib libjpeg giflib libpng zlib lcms2 libX11 libICE libXrender libXext libXtst libXt libXtst libXi libXinerama libXcursor libXrandr fontconfig openjdk-bootstrap ] ++ lib.optionals (!headless && enableGnome2) [ @@ -74,15 +74,13 @@ let "--enable-unlimited-crypto" "--with-native-debug-symbols=internal" "--with-freetype=system" - "--with-harfbuzz=system" "--with-libjpeg=system" "--with-giflib=system" "--with-libpng=system" "--with-zlib=system" "--with-lcms=system" "--with-stdc++lib=dynamic" - ] ++ lib.optional stdenv.isx86_64 "--with-jvm-features=zgc" - ++ lib.optional headless "--enable-headless-only" + ] ++ lib.optional headless "--enable-headless-only" ++ lib.optional (!headless && enableJavaFX) "--with-import-modules=${openjfx}"; separateDebugInfo = true; @@ -103,6 +101,12 @@ let buildFlags = [ "all" ]; + postBuild = '' + cd build/linux* + make images + cd - + ''; + installPhase = '' mkdir -p $out/lib diff --git a/pkgs/development/compilers/openjdk/17.nix b/pkgs/development/compilers/openjdk/17.nix index 9aa952156d2..d2c71683c9b 100644 --- a/pkgs/development/compilers/openjdk/17.nix +++ b/pkgs/development/compilers/openjdk/17.nix @@ -98,8 +98,7 @@ let "--with-zlib=system" "--with-lcms=system" "--with-stdc++lib=dynamic" - ] ++ lib.optional stdenv.isx86_64 "--with-jvm-features=zgc" - ++ lib.optional headless "--enable-headless-only" + ] ++ lib.optional headless "--enable-headless-only" ++ lib.optional (!headless && enableJavaFX) "--with-import-modules=${openjfx}"; separateDebugInfo = true; diff --git a/pkgs/development/compilers/openjdk/18.nix b/pkgs/development/compilers/openjdk/18.nix index 48d68f7b071..2c496721be0 100644 --- a/pkgs/development/compilers/openjdk/18.nix +++ b/pkgs/development/compilers/openjdk/18.nix @@ -88,8 +88,7 @@ let "--with-zlib=system" "--with-lcms=system" "--with-stdc++lib=dynamic" - ] ++ lib.optional stdenv.isx86_64 "--with-jvm-features=zgc" - ++ lib.optional headless "--enable-headless-only" + ] ++ lib.optional headless "--enable-headless-only" ++ lib.optional (!headless && enableJavaFX) "--with-import-modules=${openjfx}"; separateDebugInfo = true; @@ -110,6 +109,12 @@ let buildFlags = [ "images" ]; + postBuild = '' + cd build/linux* + make images + cd - + ''; + installPhase = '' mkdir -p $out/lib diff --git a/pkgs/development/compilers/openjdk/19.nix b/pkgs/development/compilers/openjdk/19.nix index 214831a3d56..51fd0d8eb53 100644 --- a/pkgs/development/compilers/openjdk/19.nix +++ b/pkgs/development/compilers/openjdk/19.nix @@ -98,8 +98,7 @@ let "--with-zlib=system" "--with-lcms=system" "--with-stdc++lib=dynamic" - ] ++ lib.optional stdenv.isx86_64 "--with-jvm-features=zgc" - ++ lib.optional headless "--enable-headless-only" + ] ++ lib.optional headless "--enable-headless-only" ++ lib.optional (!headless && enableJavaFX) "--with-import-modules=${openjfx}"; separateDebugInfo = true; diff --git a/pkgs/development/compilers/openjdk/20.nix b/pkgs/development/compilers/openjdk/20.nix index 105a1cc7b35..2be834a27b5 100644 --- a/pkgs/development/compilers/openjdk/20.nix +++ b/pkgs/development/compilers/openjdk/20.nix @@ -98,8 +98,7 @@ let "--with-zlib=system" "--with-lcms=system" "--with-stdc++lib=dynamic" - ] ++ lib.optional stdenv.isx86_64 "--with-jvm-features=zgc" - ++ lib.optional headless "--enable-headless-only" + ] ++ lib.optional headless "--enable-headless-only" ++ lib.optional (!headless && enableJavaFX) "--with-import-modules=${openjfx}"; separateDebugInfo = true; diff --git a/pkgs/development/compilers/openjdk/21.nix b/pkgs/development/compilers/openjdk/21.nix new file mode 100644 index 00000000000..623ac281acf --- /dev/null +++ b/pkgs/development/compilers/openjdk/21.nix @@ -0,0 +1,188 @@ +{ stdenv, lib, fetchurl, fetchpatch, fetchFromGitHub, bash, pkg-config, autoconf, cpio +, file, which, unzip, zip, perl, cups, freetype, alsa-lib, libjpeg, giflib +, libpng, zlib, lcms2, libX11, libICE, libXrender, libXext, libXt, libXtst +, libXi, libXinerama, libXcursor, libXrandr, fontconfig, openjdk21-bootstrap +, ensureNewerSourcesForZipFilesHook +, setJavaClassPath +# TODO(@sternenseemann): gtk3 fails to evaluate in pkgsCross.ghcjs.buildPackages +# which should be fixable, this is a no-rebuild workaround for GHC. +, headless ? stdenv.targetPlatform.isGhcjs +, enableJavaFX ? false, openjfx +, enableGnome2 ? true, gtk3, gnome_vfs, glib, GConf +}: + +let + version = { + feature = "21"; + interim = ""; + build = "35"; + }; + + # when building a headless jdk, also bootstrap it with a headless jdk + openjdk-bootstrap = openjdk21-bootstrap.override { gtkSupport = !headless; }; + + openjdk = stdenv.mkDerivation { + pname = "openjdk" + lib.optionalString headless "-headless"; + version = "${version.feature}${version.interim}+${version.build}"; + + src = fetchFromGitHub { + owner = "openjdk"; + repo = "jdk${version.feature}u"; + rev = "jdk-${version.feature}${version.interim}+${version.build}"; + hash = "sha256-fA8nRWBuTL87S8mwapmNfCPPQoI2aKHjbHJ6PDN3khs="; + }; + + nativeBuildInputs = [ pkg-config autoconf unzip ensureNewerSourcesForZipFilesHook ]; + buildInputs = [ + cpio file which zip perl zlib cups freetype alsa-lib libjpeg giflib + libpng zlib lcms2 libX11 libICE libXrender libXext libXtst libXt libXtst + libXi libXinerama libXcursor libXrandr fontconfig openjdk-bootstrap + ] ++ lib.optionals (!headless && enableGnome2) [ + gtk3 gnome_vfs GConf glib + ]; + + patches = [ + ./fix-java-home-jdk21.patch + ./read-truststore-from-env-jdk10.patch + ./currency-date-range-jdk10.patch + ./increase-javadoc-heap-jdk13.patch + ./ignore-LegalNoticeFilePlugin-jdk18.patch + + # -Wformat etc. are stricter in newer gccs, per + # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79677 + # so grab the work-around from + # https://src.fedoraproject.org/rpms/java-openjdk/pull-request/24 + (fetchurl { + url = "https://src.fedoraproject.org/rpms/java-openjdk/raw/06c001c7d87f2e9fe4fedeef2d993bcd5d7afa2a/f/rh1673833-remove_removal_of_wformat_during_test_compilation.patch"; + sha256 = "082lmc30x64x583vqq00c8y0wqih3y4r0mp1c4bqq36l22qv6b6r"; + }) + + # Fix build for gnumake-4.4.1: + # https://github.com/openjdk/jdk/pull/12992 + (fetchpatch { + name = "gnumake-4.4.1"; + url = "https://github.com/openjdk/jdk/commit/9341d135b855cc208d48e47d30cd90aafa354c36.patch"; + hash = "sha256-Qcm3ZmGCOYLZcskNjj7DYR85R4v07vYvvavrVOYL8vg="; + }) + ] ++ lib.optionals (!headless && enableGnome2) [ + ./swing-use-gtk-jdk13.patch + ]; + + postPatch = '' + chmod +x configure + patchShebangs --build configure + ''; + + # JDK's build system attempts to specifically detect + # and special-case WSL, and we don't want it to do that, + # so pass the correct platform names explicitly + configurePlatforms = ["build" "host"]; + + configureFlags = [ + "--with-boot-jdk=${openjdk-bootstrap.home}" + "--with-version-build=${version.build}" + "--with-version-opt=nixos" + "--with-version-pre=" + "--enable-unlimited-crypto" + "--with-native-debug-symbols=internal" + "--with-libjpeg=system" + "--with-giflib=system" + "--with-libpng=system" + "--with-zlib=system" + "--with-lcms=system" + "--with-stdc++lib=dynamic" + ] ++ lib.optional stdenv.isx86_64 "--with-jvm-features=zgc" + ++ lib.optional headless "--enable-headless-only" + ++ lib.optional (!headless && enableJavaFX) "--with-import-modules=${openjfx}"; + + separateDebugInfo = true; + + env.NIX_CFLAGS_COMPILE = "-Wno-error"; + + NIX_LDFLAGS = toString (lib.optionals (!headless) [ + "-lfontconfig" "-lcups" "-lXinerama" "-lXrandr" "-lmagic" + ] ++ lib.optionals (!headless && enableGnome2) [ + "-lgtk-3" "-lgio-2.0" "-lgnomevfs-2" "-lgconf-2" + ]); + + # -j flag is explicitly rejected by the build system: + # Error: 'make -jN' is not supported, use 'make JOBS=N' + # Note: it does not make build sequential. Build system + # still runs in parallel. + enableParallelBuilding = false; + + buildFlags = [ "images" ]; + + installPhase = '' + mkdir -p $out/lib + + mv build/*/images/jdk $out/lib/openjdk + + # Remove some broken manpages. + rm -rf $out/lib/openjdk/man/ja* + + # Mirror some stuff in top-level. + mkdir -p $out/share + ln -s $out/lib/openjdk/include $out/include + ln -s $out/lib/openjdk/man $out/share/man + + # IDEs use the provided src.zip to navigate the Java codebase (https://github.com/NixOS/nixpkgs/pull/95081) + ln -s $out/lib/openjdk/lib/src.zip $out/lib/src.zip + + # jni.h expects jni_md.h to be in the header search path. + ln -s $out/include/linux/*_md.h $out/include/ + + # Remove crap from the installation. + rm -rf $out/lib/openjdk/demo + ${lib.optionalString headless '' + rm $out/lib/openjdk/lib/{libjsound,libfontmanager}.so + ''} + + ln -s $out/lib/openjdk/bin $out/bin + ''; + + preFixup = '' + # Propagate the setJavaClassPath setup hook so that any package + # that depends on the JDK has $CLASSPATH set up properly. + mkdir -p $out/nix-support + #TODO or printWords? cf https://github.com/NixOS/nixpkgs/pull/27427#issuecomment-317293040 + echo -n "${setJavaClassPath}" > $out/nix-support/propagated-build-inputs + + # Set JAVA_HOME automatically. + mkdir -p $out/nix-support + cat <<EOF > $out/nix-support/setup-hook + if [ -z "\''${JAVA_HOME-}" ]; then export JAVA_HOME=$out/lib/openjdk; fi + EOF + ''; + + postFixup = '' + # Build the set of output library directories to rpath against + LIBDIRS="" + for output in $(getAllOutputNames); 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 $(getAllOutputNames); 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 + patchelf --shrink-rpath "$i" || true + done + done + ''; + + disallowedReferences = [ openjdk-bootstrap ]; + + pos = builtins.unsafeGetAttrPos "feature" version; + meta = import ./meta.nix lib version.feature; + + passthru = { + architecture = ""; + home = "${openjdk}/lib/openjdk"; + inherit gtk3; + }; + }; +in openjdk diff --git a/pkgs/development/compilers/openjdk/darwin/11.nix b/pkgs/development/compilers/openjdk/darwin/11.nix deleted file mode 100644 index 48de3767938..00000000000 --- a/pkgs/development/compilers/openjdk/darwin/11.nix +++ /dev/null @@ -1,92 +0,0 @@ -{ lib -, stdenv -, fetchurl -, unzip -, setJavaClassPath -, enableJavaFX ? false -}: -let - # Details from https://www.azul.com/downloads/?version=java-11-lts&os=macos&package=jdk - # Note that the latest build may differ by platform - dist = { - x86_64-darwin = { - arch = "x64"; - zuluVersion = "11.66.15"; - jdkVersion = "11.0.20"; - hash = - if enableJavaFX then "sha256-pVgCJkgYTlFeL7nkkMWLeJ/J8ELhgvWb7gzf3erZP7Y=" - else "sha256-vKqxHP5Yb651g8bZ0xHGQ4Q1T7JjjrmgEuykw/Gh2f0="; - }; - - aarch64-darwin = { - arch = "aarch64"; - zuluVersion = "11.66.15"; - jdkVersion = "11.0.20"; - hash = - if enableJavaFX then "sha256-VoZo34SCUU+HHnTl6iLe0QBC+4VDkPP14N98oqSg9EQ=" - else "sha256-djK8Kfikt9SSuT87x1p7YWMIlNuF0TZFYDWrKiTTiIU="; - }; - }."${stdenv.hostPlatform.system}"; - - jce-policies = fetchurl { - url = "https://web.archive.org/web/20211126120343/http://cdn.azul.com/zcek/bin/ZuluJCEPolicies.zip"; - hash = "sha256-gCGii4ysQbRPFCH9IQoKCCL8r4jWLS5wo1sv9iioZ1o="; - }; - - javaPackage = if enableJavaFX then "ca-fx-jdk" else "ca-jdk"; - - jdk = stdenv.mkDerivation rec { - pname = "zulu${dist.zuluVersion}-${javaPackage}"; - version = dist.jdkVersion; - - src = fetchurl { - url = "https://cdn.azul.com/zulu/bin/zulu${dist.zuluVersion}-${javaPackage}${dist.jdkVersion}-macosx_${dist.arch}.tar.gz"; - inherit (dist) hash; - curlOpts = "-H Referer:https://www.azul.com/downloads/zulu/"; - }; - - nativeBuildInputs = [ unzip ]; - - installPhase = '' - mkdir -p $out - mv * $out - - unzip ${jce-policies} - mv -f ZuluJCEPolicies/*.jar $out/lib/security/ - - # jni.h expects jni_md.h to be in the header search path. - ln -s $out/include/darwin/*_md.h $out/include/ - - if [ -f $out/LICENSE ]; then - install -D $out/LICENSE $out/share/zulu/LICENSE - rm $out/LICENSE - fi - ''; - - preFixup = '' - # Propagate the setJavaClassPath setup hook from the JDK so that - # any package that depends on the JDK has $CLASSPATH set up - # properly. - mkdir -p $out/nix-support - printWords ${setJavaClassPath} > $out/nix-support/propagated-build-inputs - - # Set JAVA_HOME automatically. - cat <<EOF >> $out/nix-support/setup-hook - if [ -z "\''${JAVA_HOME-}" ]; then export JAVA_HOME=$out; fi - EOF - ''; - - # fixupPhase is moving the man to share/man which breaks it because it's a - # relative symlink. - postFixup = '' - ln -nsf ../zulu-11.jdk/Contents/Home/man $out/share/man - ''; - - passthru = { - home = jdk; - }; - - meta = import ./meta.nix lib version; - }; -in -jdk diff --git a/pkgs/development/compilers/openjdk/darwin/16.nix b/pkgs/development/compilers/openjdk/darwin/16.nix deleted file mode 100644 index 657b3eeafea..00000000000 --- a/pkgs/development/compilers/openjdk/darwin/16.nix +++ /dev/null @@ -1,92 +0,0 @@ -{ lib -, stdenv -, fetchurl -, unzip -, setJavaClassPath -, enableJavaFX ? false -}: -let - # Details from https://www.azul.com/downloads/?version=java-16-sts&os=macos&package=jdk - # Note that the latest build may differ by platform - dist = { - x86_64-darwin = { - arch = "x64"; - zuluVersion = "16.32.15"; - jdkVersion = "16.0.2"; - hash = - if enableJavaFX then "sha256-6URaSBNHQWLauO//kCuKXb4Z7AqyshWnoeJEyVRKgaY=" - else "sha256-NXgBj/KixTknaCYbo3B+rOo11NImH5CDUIU0LhTCtMo="; - }; - - aarch64-darwin = { - arch = "aarch64"; - zuluVersion = "16.32.15"; - jdkVersion = "16.0.2"; - hash = - if enableJavaFX then "sha256-QuyhIAxUY3Vv1adGihW+LIsXtpDX2taCmFsMFj9o5vs=" - else "sha256-3bUfDcLLyahLeURFAgLAVapBZHvqtam8GHbWTA6MQog="; - }; - }."${stdenv.hostPlatform.system}"; - - jce-policies = fetchurl { - url = "https://web.archive.org/web/20211126120343/http://cdn.azul.com/zcek/bin/ZuluJCEPolicies.zip"; - hash = "sha256-gCGii4ysQbRPFCH9IQoKCCL8r4jWLS5wo1sv9iioZ1o="; - }; - - javaPackage = if enableJavaFX then "ca-fx-jdk" else "ca-jdk"; - - jdk = stdenv.mkDerivation rec { - pname = "zulu${dist.zuluVersion}-${javaPackage}"; - version = dist.jdkVersion; - - src = fetchurl { - url = "https://cdn.azul.com/zulu/bin/zulu${dist.zuluVersion}-${javaPackage}${dist.jdkVersion}-macosx_${dist.arch}.tar.gz"; - inherit (dist) hash; - curlOpts = "-H Referer:https://www.azul.com/downloads/zulu/"; - }; - - nativeBuildInputs = [ unzip ]; - - installPhase = '' - mkdir -p $out - mv * $out - - unzip ${jce-policies} - mv -f ZuluJCEPolicies/*.jar $out/lib/security/ - - # jni.h expects jni_md.h to be in the header search path. - ln -s $out/include/darwin/*_md.h $out/include/ - - if [ -f $out/LICENSE ]; then - install -D $out/LICENSE $out/share/zulu/LICENSE - rm $out/LICENSE - fi - ''; - - preFixup = '' - # Propagate the setJavaClassPath setup hook from the JDK so that - # any package that depends on the JDK has $CLASSPATH set up - # properly. - mkdir -p $out/nix-support - printWords ${setJavaClassPath} > $out/nix-support/propagated-build-inputs - - # Set JAVA_HOME automatically. - cat <<EOF >> $out/nix-support/setup-hook - if [ -z "\''${JAVA_HOME-}" ]; then export JAVA_HOME=$out; fi - EOF - ''; - - # fixupPhase is moving the man to share/man which breaks it because it's a - # relative symlink. - postFixup = '' - ln -nsf ../zulu-${lib.versions.major version}.jdk/Contents/Home/man $out/share/man - ''; - - passthru = { - home = jdk; - }; - - meta = import ./meta.nix lib version; - }; -in -jdk diff --git a/pkgs/development/compilers/openjdk/darwin/17.nix b/pkgs/development/compilers/openjdk/darwin/17.nix deleted file mode 100644 index 3034e164e64..00000000000 --- a/pkgs/development/compilers/openjdk/darwin/17.nix +++ /dev/null @@ -1,92 +0,0 @@ -{ lib -, stdenv -, fetchurl -, unzip -, setJavaClassPath -, enableJavaFX ? false -}: -let - # Details from https://www.azul.com/downloads/?version=java-17-lts&os=macos&package=jdk - # Note that the latest build may differ by platform - dist = { - x86_64-darwin = { - arch = "x64"; - zuluVersion = "17.44.15"; - jdkVersion = "17.0.8"; - hash = - if enableJavaFX then "sha256-gmDku/AkWzO+eDRitezM9wCtTYDrUMtXyMulxqi9tNI=" - else "sha256-Ci18gBkAv/UUIQw9KlnfibcQMXwQRGx6K7L/NBB7b7Q="; - }; - - aarch64-darwin = { - arch = "aarch64"; - zuluVersion = "17.44.15"; - jdkVersion = "17.0.8"; - hash = - if enableJavaFX then "sha256-mvyfqpnAoA05HJB9EBewW2MDuhQBOvp6svzyayV1irI=" - else "sha256-8b81QY6DGXVOsTKM8QDzJnYjXV0ipCbYWaaz6oF2A6k="; - }; - }."${stdenv.hostPlatform.system}"; - - jce-policies = fetchurl { - url = "https://web.archive.org/web/20211126120343/http://cdn.azul.com/zcek/bin/ZuluJCEPolicies.zip"; - hash = "sha256-gCGii4ysQbRPFCH9IQoKCCL8r4jWLS5wo1sv9iioZ1o="; - }; - - javaPackage = if enableJavaFX then "ca-fx-jdk" else "ca-jdk"; - - jdk = stdenv.mkDerivation rec { - pname = "zulu${dist.zuluVersion}-${javaPackage}"; - version = dist.jdkVersion; - - src = fetchurl { - url = "https://cdn.azul.com/zulu/bin/zulu${dist.zuluVersion}-${javaPackage}${dist.jdkVersion}-macosx_${dist.arch}.tar.gz"; - inherit (dist) hash; - curlOpts = "-H Referer:https://www.azul.com/downloads/zulu/"; - }; - - nativeBuildInputs = [ unzip ]; - - installPhase = '' - mkdir -p $out - mv * $out - - unzip ${jce-policies} - mv -f ZuluJCEPolicies/*.jar $out/lib/security/ - - # jni.h expects jni_md.h to be in the header search path. - ln -s $out/include/darwin/*_md.h $out/include/ - - if [ -f $out/LICENSE ]; then - install -D $out/LICENSE $out/share/zulu/LICENSE - rm $out/LICENSE - fi - ''; - - preFixup = '' - # Propagate the setJavaClassPath setup hook from the JDK so that - # any package that depends on the JDK has $CLASSPATH set up - # properly. - mkdir -p $out/nix-support - printWords ${setJavaClassPath} > $out/nix-support/propagated-build-inputs - - # Set JAVA_HOME automatically. - cat <<EOF >> $out/nix-support/setup-hook - if [ -z "\''${JAVA_HOME-}" ]; then export JAVA_HOME=$out; fi - EOF - ''; - - # fixupPhase is moving the man to share/man which breaks it because it's a - # relative symlink. - postFixup = '' - ln -nsf ../zulu-${lib.versions.major version}.jdk/Contents/Home/man $out/share/man - ''; - - passthru = { - home = jdk; - }; - - meta = import ./meta.nix lib version; - }; -in -jdk diff --git a/pkgs/development/compilers/openjdk/darwin/18.nix b/pkgs/development/compilers/openjdk/darwin/18.nix deleted file mode 100644 index 30a61b4b1fa..00000000000 --- a/pkgs/development/compilers/openjdk/darwin/18.nix +++ /dev/null @@ -1,92 +0,0 @@ -{ lib -, stdenv -, fetchurl -, unzip -, setJavaClassPath -, enableJavaFX ? false -}: -let - # Details from https://www.azul.com/downloads/?version=java-18-sts&os=macos&package=jdk - # Note that the latest build may differ by platform - dist = { - x86_64-darwin = { - arch = "x64"; - zuluVersion = "18.32.13"; - jdkVersion = "18.0.2.1"; - hash = - if enableJavaFX then "sha256-ZVZ1gbpJwxTduq2PPOCKqbSl+shq2NTFgqG++OXvFcg=" - else "sha256-uHPcyOgxUdTgzmIVRp/awtwve9zSt+1TZNef7DUuoRg="; - }; - - aarch64-darwin = { - arch = "aarch64"; - zuluVersion = "18.32.13"; - jdkVersion = "18.0.2.1"; - hash = - if enableJavaFX then "sha256-tNx0a1u9iamcN9VFOJ3eqDEA6C204dtIBJZvuAH2Vjk=" - else "sha256-jAZDgxtWMq/74yKAxA69oOU0C9nXvKG5MjmZLsK04iM="; - }; - }."${stdenv.hostPlatform.system}"; - - jce-policies = fetchurl { - url = "https://web.archive.org/web/20211126120343/http://cdn.azul.com/zcek/bin/ZuluJCEPolicies.zip"; - hash = "sha256-gCGii4ysQbRPFCH9IQoKCCL8r4jWLS5wo1sv9iioZ1o="; - }; - - javaPackage = if enableJavaFX then "ca-fx-jdk" else "ca-jdk"; - - jdk = stdenv.mkDerivation rec { - pname = "zulu${dist.zuluVersion}-${javaPackage}"; - version = dist.jdkVersion; - - src = fetchurl { - url = "https://cdn.azul.com/zulu/bin/zulu${dist.zuluVersion}-${javaPackage}${dist.jdkVersion}-macosx_${dist.arch}.tar.gz"; - inherit (dist) hash; - curlOpts = "-H Referer:https://www.azul.com/downloads/zulu/"; - }; - - nativeBuildInputs = [ unzip ]; - - installPhase = '' - mkdir -p $out - mv * $out - - unzip ${jce-policies} - mv -f ZuluJCEPolicies/*.jar $out/lib/security/ - - # jni.h expects jni_md.h to be in the header search path. - ln -s $out/include/darwin/*_md.h $out/include/ - - if [ -f $out/LICENSE ]; then - install -D $out/LICENSE $out/share/zulu/LICENSE - rm $out/LICENSE - fi - ''; - - preFixup = '' - # Propagate the setJavaClassPath setup hook from the JDK so that - # any package that depends on the JDK has $CLASSPATH set up - # properly. - mkdir -p $out/nix-support - printWords ${setJavaClassPath} > $out/nix-support/propagated-build-inputs - - # Set JAVA_HOME automatically. - cat <<EOF >> $out/nix-support/setup-hook - if [ -z "\''${JAVA_HOME-}" ]; then export JAVA_HOME=$out; fi - EOF - ''; - - # fixupPhase is moving the man to share/man which breaks it because it's a - # relative symlink. - postFixup = '' - ln -nsf ../zulu-${lib.versions.major version}.jdk/Contents/Home/man $out/share/man - ''; - - passthru = { - home = jdk; - }; - - meta = import ./meta.nix lib version; - }; -in -jdk diff --git a/pkgs/development/compilers/openjdk/darwin/19.nix b/pkgs/development/compilers/openjdk/darwin/19.nix deleted file mode 100644 index a087de1b572..00000000000 --- a/pkgs/development/compilers/openjdk/darwin/19.nix +++ /dev/null @@ -1,92 +0,0 @@ -{ lib -, stdenv -, fetchurl -, unzip -, setJavaClassPath -, enableJavaFX ? false -}: -let - # Details from https://www.azul.com/downloads/?version=java-19-sts&os=macos&package=jdk - # Note that the latest build may differ by platform - dist = { - x86_64-darwin = { - arch = "x64"; - zuluVersion = if enableJavaFX then "19.32.15" else "19.32.13"; - jdkVersion = "19.0.2"; - hash = - if enableJavaFX then "sha256-AwLcIId0gH5D6DUU8CgJ3qnKVQm28LXYirBeXBHwPYE=" - else "sha256-KARXWumsY+OcqpEOV2EL9SsPni1nGSipjRji/Mn2KsE="; - }; - - aarch64-darwin = { - arch = "aarch64"; - zuluVersion = if enableJavaFX then "19.32.15" else "19.32.13"; - jdkVersion = "19.0.2"; - hash = - if enableJavaFX then "sha256-/R2rrcBr64qPGEtvhruXBhPwnvurt/hiR1ICzZAdYxE=" - else "sha256-F30FjZaLL756X/Xs6xjNwW9jds4pEATxoxOeeLL7Y5E="; - }; - }."${stdenv.hostPlatform.system}"; - - jce-policies = fetchurl { - url = "https://web.archive.org/web/20211126120343/http://cdn.azul.com/zcek/bin/ZuluJCEPolicies.zip"; - hash = "sha256-gCGii4ysQbRPFCH9IQoKCCL8r4jWLS5wo1sv9iioZ1o="; - }; - - javaPackage = if enableJavaFX then "ca-fx-jdk" else "ca-jdk"; - - jdk = stdenv.mkDerivation rec { - pname = "zulu${dist.zuluVersion}-${javaPackage}"; - version = dist.jdkVersion; - - src = fetchurl { - url = "https://cdn.azul.com/zulu/bin/zulu${dist.zuluVersion}-${javaPackage}${dist.jdkVersion}-macosx_${dist.arch}.tar.gz"; - inherit (dist) hash; - curlOpts = "-H Referer:https://www.azul.com/downloads/zulu/"; - }; - - nativeBuildInputs = [ unzip ]; - - installPhase = '' - mkdir -p $out - mv * $out - - unzip ${jce-policies} - mv -f ZuluJCEPolicies/*.jar $out/lib/security/ - - # jni.h expects jni_md.h to be in the header search path. - ln -s $out/include/darwin/*_md.h $out/include/ - - if [ -f $out/LICENSE ]; then - install -D $out/LICENSE $out/share/zulu/LICENSE - rm $out/LICENSE - fi - ''; - - preFixup = '' - # Propagate the setJavaClassPath setup hook from the JDK so that - # any package that depends on the JDK has $CLASSPATH set up - # properly. - mkdir -p $out/nix-support - printWords ${setJavaClassPath} > $out/nix-support/propagated-build-inputs - - # Set JAVA_HOME automatically. - cat <<EOF >> $out/nix-support/setup-hook - if [ -z "\''${JAVA_HOME-}" ]; then export JAVA_HOME=$out; fi - EOF - ''; - - # fixupPhase is moving the man to share/man which breaks it because it's a - # relative symlink. - postFixup = '' - ln -nsf ../zulu-${lib.versions.major version}.jdk/Contents/Home/man $out/share/man - ''; - - passthru = { - home = jdk; - }; - - meta = import ./meta.nix lib version; - }; -in -jdk diff --git a/pkgs/development/compilers/openjdk/darwin/20.nix b/pkgs/development/compilers/openjdk/darwin/20.nix deleted file mode 100644 index b0c62aafd78..00000000000 --- a/pkgs/development/compilers/openjdk/darwin/20.nix +++ /dev/null @@ -1,92 +0,0 @@ -{ lib -, stdenv -, fetchurl -, unzip -, setJavaClassPath -, enableJavaFX ? false -}: -let - # Details from https://www.azul.com/downloads/?version=java-19-sts&os=macos&package=jdk - # Note that the latest build may differ by platform - dist = { - x86_64-darwin = { - arch = "x64"; - zuluVersion = "20.32.11"; - jdkVersion = "20.0.2"; - hash = - if enableJavaFX then "sha256-hyxQAivZAXtqMebe30L+EYa7p+TdSdKNYj7Rl/ZwRNQ=" - else "sha256-Ev9KG6DvuBnsZrOguLsO1KQzudHCBcJNwKh45Inpnfo="; - }; - - aarch64-darwin = { - arch = "aarch64"; - zuluVersion = "20.32.11"; - jdkVersion = "20.0.2"; - hash = - if enableJavaFX then "sha256-iPQzZS4CwaoqT8cSzg4kWCT1OyGBSJLq+NETcbucLo4=" - else "sha256-15uNZ6uMfSASV3QU2q2oA/jBk2PCHOfSjn1GY7/7qIY="; - }; - }."${stdenv.hostPlatform.system}"; - - jce-policies = fetchurl { - url = "https://web.archive.org/web/20211126120343/http://cdn.azul.com/zcek/bin/ZuluJCEPolicies.zip"; - hash = "sha256-gCGii4ysQbRPFCH9IQoKCCL8r4jWLS5wo1sv9iioZ1o="; - }; - - javaPackage = if enableJavaFX then "ca-fx-jdk" else "ca-jdk"; - - jdk = stdenv.mkDerivation rec { - pname = "zulu${dist.zuluVersion}-${javaPackage}"; - version = dist.jdkVersion; - - src = fetchurl { - url = "https://cdn.azul.com/zulu/bin/zulu${dist.zuluVersion}-${javaPackage}${dist.jdkVersion}-macosx_${dist.arch}.tar.gz"; - inherit (dist) hash; - curlOpts = "-H Referer:https://www.azul.com/downloads/zulu/"; - }; - - nativeBuildInputs = [ unzip ]; - - installPhase = '' - mkdir -p $out - mv * $out - - unzip ${jce-policies} - mv -f ZuluJCEPolicies/*.jar $out/lib/security/ - - # jni.h expects jni_md.h to be in the header search path. - ln -s $out/include/darwin/*_md.h $out/include/ - - if [ -f $out/LICENSE ]; then - install -D $out/LICENSE $out/share/zulu/LICENSE - rm $out/LICENSE - fi - ''; - - preFixup = '' - # Propagate the setJavaClassPath setup hook from the JDK so that - # any package that depends on the JDK has $CLASSPATH set up - # properly. - mkdir -p $out/nix-support - printWords ${setJavaClassPath} > $out/nix-support/propagated-build-inputs - - # Set JAVA_HOME automatically. - cat <<EOF >> $out/nix-support/setup-hook - if [ -z "\''${JAVA_HOME-}" ]; then export JAVA_HOME=$out; fi - EOF - ''; - - # fixupPhase is moving the man to share/man which breaks it because it's a - # relative symlink. - postFixup = '' - ln -nsf ../zulu-${lib.versions.major version}.jdk/Contents/Home/man $out/share/man - ''; - - passthru = { - home = jdk; - }; - - meta = import ./meta.nix lib version; - }; -in -jdk diff --git a/pkgs/development/compilers/openjdk/darwin/8.nix b/pkgs/development/compilers/openjdk/darwin/8.nix deleted file mode 100644 index 9bfd9a8db1a..00000000000 --- a/pkgs/development/compilers/openjdk/darwin/8.nix +++ /dev/null @@ -1,96 +0,0 @@ -{ lib -, stdenv -, fetchurl -, unzip -, setJavaClassPath -, enableJavaFX ? false -}: -let - # Details from https://www.azul.com/downloads/?version=java-8-lts&os=macos&package=jdk - # Note that the latest build may differ by platform - dist = { - x86_64-darwin = { - arch = "x64"; - zuluVersion = "8.72.0.17"; - jdkVersion = "8.0.382"; - hash = - if enableJavaFX then "sha256-/x8FqygivzddXsOwIV8aj/u+LPXMmokgu97vLAVEv80=" - else "sha256-3dTPIPGUeT6nb3gncNvEa4VTRyQIBJpp8oZadrT2ToE="; - }; - - aarch64-darwin = { - arch = "aarch64"; - zuluVersion = "8.72.0.17"; - jdkVersion = "8.0.382"; - hash = - if enableJavaFX then "sha256-FkQ+0MzSZWUzc/HmiDVZEHGOrdKAVCdK5pm9wXXzzaU=" - else "sha256-rN5AI4xAWppE4kJlzMod0JmGyHdHjTXYtx8/wOW6CFk="; - }; - }."${stdenv.hostPlatform.system}"; - - jce-policies = fetchurl { - url = "https://web.archive.org/web/20211126120343/http://cdn.azul.com/zcek/bin/ZuluJCEPolicies.zip"; - hash = "sha256-gCGii4ysQbRPFCH9IQoKCCL8r4jWLS5wo1sv9iioZ1o="; - }; - - javaPackage = if enableJavaFX then "ca-fx-jdk" else "ca-jdk"; - - jdk = stdenv.mkDerivation rec { - # @hlolli: Later version than 1.8.0_202 throws error when building jvmci. - # dyld: lazy symbol binding failed: Symbol not found: _JVM_BeforeHalt - # Referenced from: ../libjava.dylib Expected in: .../libjvm.dylib - pname = "zulu${dist.zuluVersion}-${javaPackage}"; - version = dist.jdkVersion; - - src = fetchurl { - url = "https://cdn.azul.com/zulu/bin/zulu${dist.zuluVersion}-${javaPackage}${dist.jdkVersion}-macosx_${dist.arch}.tar.gz"; - inherit (dist) hash; - curlOpts = "-H Referer:https://www.azul.com/downloads/zulu/"; - }; - - nativeBuildInputs = [ unzip ]; - - installPhase = '' - mkdir -p $out - mv * $out - - unzip ${jce-policies} - mv -f ZuluJCEPolicies/*.jar $out/jre/lib/security/ - - # jni.h expects jni_md.h to be in the header search path. - ln -s $out/include/darwin/*_md.h $out/include/ - - if [ -f $out/LICENSE ]; then - install -D $out/LICENSE $out/share/zulu/LICENSE - rm $out/LICENSE - fi - ''; - - preFixup = '' - # Propagate the setJavaClassPath setup hook from the JRE so that - # any package that depends on the JRE has $CLASSPATH set up - # properly. - mkdir -p $out/nix-support - printWords ${setJavaClassPath} > $out/nix-support/propagated-build-inputs - - # Set JAVA_HOME automatically. - cat <<EOF >> $out/nix-support/setup-hook - if [ -z "\''${JAVA_HOME-}" ]; then export JAVA_HOME=$out; fi - EOF - ''; - - # fixupPhase is moving the man to share/man which breaks it because it's a - # relative symlink. - postFixup = '' - ln -nsf ../zulu-${lib.versions.major version}.jdk/Contents/Home/man $out/share/man - ''; - - passthru = { - jre = jdk; - home = jdk; - }; - - meta = import ./meta.nix lib version; - }; -in -jdk diff --git a/pkgs/development/compilers/openjdk/darwin/meta.nix b/pkgs/development/compilers/openjdk/darwin/meta.nix deleted file mode 100644 index f07a7f38a45..00000000000 --- a/pkgs/development/compilers/openjdk/darwin/meta.nix +++ /dev/null @@ -1,4 +0,0 @@ -lib: version: (removeAttrs (import ../meta.nix lib version) [ "maintainers" ]) // { - platforms = lib.platforms.darwin; - homepage = "https://www.azul.com/"; -} diff --git a/pkgs/development/compilers/openjdk/fix-java-home-jdk21.patch b/pkgs/development/compilers/openjdk/fix-java-home-jdk21.patch new file mode 100644 index 00000000000..ede201ed1ad --- /dev/null +++ b/pkgs/development/compilers/openjdk/fix-java-home-jdk21.patch @@ -0,0 +1,14 @@ +--- a/src/hotspot/os/linux/os_linux.cpp 2017-07-04 23:09:02.533972226 -0400 ++++ b/src/hotspot/os/linux/os_linux.cpp 2017-07-04 23:07:52.118338845 -0400 +@@ -2270,8 +2270,5 @@ + assert(ret, "cannot locate libjvm"); + char *rp = nullptr; + if (ret && dli_fname[0] != '\0') { +- rp = os::Posix::realpath(dli_fname, buf, buflen); +- } +- if (rp == nullptr) { +- return; ++ snprintf(buf, buflen, "%s", dli_fname); + } + + if (Arguments::sun_java_launcher_is_altjvm()) { diff --git a/pkgs/development/compilers/openjdk/openjfx/11.nix b/pkgs/development/compilers/openjdk/openjfx/11.nix index d5ec912bfed..6d550538b08 100644 --- a/pkgs/development/compilers/openjdk/openjfx/11.nix +++ b/pkgs/development/compilers/openjdk/openjfx/11.nix @@ -42,6 +42,7 @@ let buildPhase = '' runHook preBuild + export NUMBER_OF_PROCESSORS=$NIX_BUILD_CORES export GRADLE_USER_HOME=$(mktemp -d) ln -s $config gradle.properties export NIX_CFLAGS_COMPILE="$(pkg-config --cflags glib-2.0) $NIX_CFLAGS_COMPILE" diff --git a/pkgs/development/compilers/openjdk/openjfx/15.nix b/pkgs/development/compilers/openjdk/openjfx/15.nix index b7ee8a02581..5ec888e49e5 100644 --- a/pkgs/development/compilers/openjdk/openjfx/15.nix +++ b/pkgs/development/compilers/openjdk/openjfx/15.nix @@ -47,6 +47,7 @@ let buildPhase = '' runHook preBuild + export NUMBER_OF_PROCESSORS=$NIX_BUILD_CORES export GRADLE_USER_HOME=$(mktemp -d) ln -s $config gradle.properties export NIX_CFLAGS_COMPILE="$(pkg-config --cflags glib-2.0) $NIX_CFLAGS_COMPILE" diff --git a/pkgs/development/compilers/openjdk/openjfx/17.nix b/pkgs/development/compilers/openjdk/openjfx/17.nix index a6300c38581..65d6697c6ef 100644 --- a/pkgs/development/compilers/openjdk/openjfx/17.nix +++ b/pkgs/development/compilers/openjdk/openjfx/17.nix @@ -49,6 +49,7 @@ let buildPhase = '' runHook preBuild + export NUMBER_OF_PROCESSORS=$NIX_BUILD_CORES export GRADLE_USER_HOME=$(mktemp -d) ln -s $config gradle.properties export NIX_CFLAGS_COMPILE="$(pkg-config --cflags glib-2.0) $NIX_CFLAGS_COMPILE" diff --git a/pkgs/development/compilers/openjdk/openjfx/19.nix b/pkgs/development/compilers/openjdk/openjfx/19.nix index bb909a31624..802a0eb9b45 100644 --- a/pkgs/development/compilers/openjdk/openjfx/19.nix +++ b/pkgs/development/compilers/openjdk/openjfx/19.nix @@ -51,6 +51,7 @@ let buildPhase = '' runHook preBuild + export NUMBER_OF_PROCESSORS=$NIX_BUILD_CORES export GRADLE_USER_HOME=$(mktemp -d) ln -s $config gradle.properties export NIX_CFLAGS_COMPILE="$(pkg-config --cflags glib-2.0) $NIX_CFLAGS_COMPILE" diff --git a/pkgs/development/compilers/openjdk/openjfx/20.nix b/pkgs/development/compilers/openjdk/openjfx/20.nix index 430b32187b3..d570db3b9ae 100644 --- a/pkgs/development/compilers/openjdk/openjfx/20.nix +++ b/pkgs/development/compilers/openjdk/openjfx/20.nix @@ -38,6 +38,7 @@ let buildPhase = '' runHook preBuild + export NUMBER_OF_PROCESSORS=$NIX_BUILD_CORES export GRADLE_USER_HOME=$(mktemp -d) ln -s $config gradle.properties export NIX_CFLAGS_COMPILE="$(pkg-config --cflags glib-2.0) $NIX_CFLAGS_COMPILE" diff --git a/pkgs/development/compilers/openjdk/openjfx/21.nix b/pkgs/development/compilers/openjdk/openjfx/21.nix new file mode 100644 index 00000000000..2f0d83f9f25 --- /dev/null +++ b/pkgs/development/compilers/openjdk/openjfx/21.nix @@ -0,0 +1,114 @@ +{ stdenv, lib, fetchFromGitHub, fetchpatch, writeText, openjdk17_headless +, openjdk19_headless, gradle_7, pkg-config, perl, cmake, gperf, gtk2, gtk3, libXtst +, libXxf86vm, glib, alsa-lib, ffmpeg_4, python3, ruby, icu68 +, withMedia ? true +, withWebKit ? false +}: + +let + major = "21"; + update = ""; + build = "-ga"; + repover = "${major}${update}${build}"; + gradle_ = (gradle_7.override { + # note: gradle does not yet support running on 19 + java = openjdk17_headless; + }); + + makePackage = args: stdenv.mkDerivation ({ + version = "${major}${update}${build}"; + + src = fetchFromGitHub { + owner = "openjdk"; + repo = "jfx"; + rev = repover; + hash = "sha256-deNAGfnA6gwcAa64l0AWdkX+vJd3ZOfIgAifSl+/m+s="; + }; + + buildInputs = [ gtk2 gtk3 libXtst libXxf86vm glib alsa-lib ffmpeg_4 icu68 ]; + nativeBuildInputs = [ gradle_ perl pkg-config cmake gperf python3 ruby ]; + + dontUseCmakeConfigure = true; + + config = writeText "gradle.properties" ('' + CONF = Release + JDK_HOME = ${openjdk19_headless.home} + '' + args.gradleProperties or ""); + + buildPhase = '' + runHook preBuild + + export NUMBER_OF_PROCESSORS=$NIX_BUILD_CORES + export GRADLE_USER_HOME=$(mktemp -d) + ln -s $config gradle.properties + export NIX_CFLAGS_COMPILE="$(pkg-config --cflags glib-2.0) $NIX_CFLAGS_COMPILE" + gradle --no-daemon $gradleFlags sdk + + runHook postBuild + ''; + } // args); + + # Fake build to pre-download deps into fixed-output derivation. + # We run nearly full build because I see no other way to download everything that's needed. + # Anyone who knows a better way? + deps = makePackage { + pname = "openjfx-deps"; + + # perl code mavenizes pathes (com.squareup.okio/okio/1.13.0/a9283170b7305c8d92d25aff02a6ab7e45d06cbe/okio-1.13.0.jar -> com/squareup/okio/okio/1.13.0/okio-1.13.0.jar) + installPhase = '' + find $GRADLE_USER_HOME -type f -regex '.*/modules.*\.\(jar\|pom\)' \ + | perl -pe 's#(.*/([^/]+)/([^/]+)/([^/]+)/[0-9a-f]{30,40}/([^/\s]+))$# ($x = $2) =~ tr|\.|/|; "install -Dm444 $1 \$out/$x/$3/$4/$5" #e' \ + | sh + rm -rf $out/tmp + ''; + + outputHashAlgo = "sha256"; + outputHashMode = "recursive"; + # suspiciously the same as for openjfx 17 ... + # could they really not have changed any of their dependencies? + # or did we miss changing another upstream hash when copy-pasting? + outputHash = "sha256-dV7/U5GpFxhI13smZ587C6cVE4FRNPY0zexZkYK4Yqo="; + }; + +in makePackage { + pname = "openjfx-modular-sdk"; + + gradleProperties = '' + COMPILE_MEDIA = ${lib.boolToString withMedia} + COMPILE_WEBKIT = ${lib.boolToString withWebKit} + ''; + + preBuild = '' + swtJar="$(find ${deps} -name org.eclipse.swt\*.jar)" + substituteInPlace build.gradle \ + --replace 'mavenCentral()' 'mavenLocal(); maven { url uri("${deps}") }' \ + --replace 'name: SWT_FILE_NAME' "files('$swtJar')" + ''; + + installPhase = '' + cp -r build/modular-sdk $out + ''; + + stripDebugList = [ "." ]; + + postFixup = '' + # Remove references to bootstrap. + export openjdkOutPath='${openjdk19_headless.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 = [ openjdk17_headless openjdk19_headless ]; + + passthru.deps = deps; + + meta = with lib; { + homepage = "https://openjdk.org/projects/openjfx/"; + license = licenses.gpl2Classpath; + description = "The next-generation Java client toolkit"; + maintainers = with maintainers; [ abbradar ]; + platforms = platforms.unix; + }; +} |