jdk: 15.0.1-ga -> 16+36

This commit is contained in:
Milan Pässler 2021-03-18 09:55:02 +01:00 committed by Milan
parent df175b7f61
commit 9dde9d8b9e
3 changed files with 191 additions and 21 deletions

View File

@ -22,9 +22,9 @@ let
sha256 = "1h8n5figc9q0k9p8b0qggyhvqagvxanfih1lj5j492c74cd1mx1l"; sha256 = "1h8n5figc9q0k9p8b0qggyhvqagvxanfih1lj5j492c74cd1mx1l";
}; };
nativeBuildInputs = [ pkg-config autoconf unzip ]; nativeBuildInputs = [ pkg-config autoconf ];
buildInputs = [ buildInputs = [
cpio file which zip perl zlib cups freetype alsaLib libjpeg giflib cpio file which unzip zip perl zlib cups freetype alsaLib libjpeg giflib
libpng zlib lcms2 libX11 libICE libXrender libXext libXtst libXt libXtst libpng zlib lcms2 libX11 libICE libXrender libXext libXtst libXt libXtst
libXi libXinerama libXcursor libXrandr fontconfig openjdk15-bootstrap libXi libXinerama libXcursor libXrandr fontconfig openjdk15-bootstrap
] ++ lib.optionals (!headless && enableGnome2) [ ] ++ lib.optionals (!headless && enableGnome2) [

View File

@ -0,0 +1,164 @@
{ stdenv, lib, fetchurl, fetchFromGitHub, bash, pkg-config, autoconf, cpio
, file, which, unzip, zip, perl, cups, freetype, alsaLib, libjpeg, giflib
, libpng, zlib, lcms2, libX11, libICE, libXrender, libXext, libXt, libXtst
, libXi, libXinerama, libXcursor, libXrandr, fontconfig, openjdk16-bootstrap
, setJavaClassPath
, headless ? false
, enableJavaFX ? openjfx.meta.available, openjfx
, enableGnome2 ? true, gtk3, gnome_vfs, glib, GConf
}:
let
version = {
feature = "16";
interim = "0";
build = "36";
};
openjdk = stdenv.mkDerivation {
pname = "openjdk" + lib.optionalString headless "-headless";
version = "${version.feature}+${version.build}";
src = fetchFromGitHub {
owner = "openjdk";
repo = "jdk${version.feature}u";
rev = "jdk-${version.feature}+${version.build}";
sha256 = "165nr15dqfcxzsl5z95g4iklln4rlfkgdigdma576mx8813ldi44";
};
nativeBuildInputs = [ pkg-config autoconf unzip ];
buildInputs = [
cpio file which zip perl zlib cups freetype alsaLib libjpeg giflib
libpng zlib lcms2 libX11 libICE libXrender libXext libXtst libXt libXtst
libXi libXinerama libXcursor libXrandr fontconfig openjdk16-bootstrap
] ++ lib.optionals (!headless && enableGnome2) [
gtk3 gnome_vfs GConf glib
];
patches = [
./fix-java-home-jdk10.patch
./read-truststore-from-env-jdk10.patch
./currency-date-range-jdk10.patch
./increase-javadoc-heap-jdk13.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";
})
] ++ lib.optionals (!headless && enableGnome2) [
./swing-use-gtk-jdk13.patch
];
prePatch = ''
chmod +x configure
patchShebangs --build configure
'';
configureFlags = [
"--with-boot-jdk=${openjdk16-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;
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"
]);
buildFlags = [ "all" ];
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
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 $outputs; do
if [ "$output" = debug ]; then continue; fi
LIBDIRS="$(find $(eval echo \$$output) -name \*.so\* -exec dirname {} \+ | sort | uniq | tr '\n' ':'):$LIBDIRS"
done
# Add the local library paths to remove dependencies on the bootstrap
for output in $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
patchelf --shrink-rpath "$i" || true
done
done
'';
disallowedReferences = [ openjdk16-bootstrap ];
meta = with lib; {
homepage = "https://openjdk.java.net/";
license = licenses.gpl2;
description = "The open-source Java Development Kit";
maintainers = with maintainers; [ edwtjo ];
platforms = [ "i686-linux" "x86_64-linux" "aarch64-linux" "armv7l-linux" "armv6l-linux" ];
};
passthru = {
architecture = "";
home = "${openjdk}/lib/openjdk";
inherit gtk3;
};
};
in openjdk

View File

@ -10738,27 +10738,33 @@ in
else else
openjdk11.override { headless = true; }; openjdk11.override { headless = true; };
openjdk15-bootstrap = openjdk16-bootstrap =
if adoptopenjdk-hotspot-bin-14.meta.available then if adoptopenjdk-hotspot-bin-15.meta.available then
adoptopenjdk-hotspot-bin-14 adoptopenjdk-hotspot-bin-15
else else
/* adoptopenjdk not available for i686, so fall back to our old builds of 12, 13, & 14 for bootstrapping */ /* adoptopenjdk not available for i686, so fall back to our old builds of 12, 13, & 14 for bootstrapping */
callPackage ../development/compilers/openjdk/14.nix { callPackage ../development/compilers/openjdk/15.nix {
openjfx = openjfx11; /* need this despite next line :-( */ openjfx = openjfx11; /* need this despite next line :-( */
enableJavaFX = false; enableJavaFX = false;
headless = true; headless = true;
inherit (gnome2) GConf gnome_vfs; inherit (gnome2) GConf gnome_vfs;
openjdk14-bootstrap = callPackage ../development/compilers/openjdk/13.nix { openjdk15-bootstrap = callPackage ../development/compilers/openjdk/14.nix {
openjfx = openjfx11; /* need this despite next line :-( */ openjfx = openjfx11; /* need this despite next line :-( */
enableJavaFX = false; enableJavaFX = false;
headless = true; headless = true;
inherit (gnome2) GConf gnome_vfs; inherit (gnome2) GConf gnome_vfs;
openjdk13-bootstrap = callPackage ../development/compilers/openjdk/12.nix { openjdk14-bootstrap = callPackage ../development/compilers/openjdk/13.nix {
stdenv = gcc8Stdenv; /* build segfaults with gcc9 or newer, so use gcc8 like Debian does */
openjfx = openjfx11; /* need this despite next line :-( */ openjfx = openjfx11; /* need this despite next line :-( */
enableJavaFX = false; enableJavaFX = false;
headless = true; headless = true;
inherit (gnome2) GConf gnome_vfs; inherit (gnome2) GConf gnome_vfs;
openjdk13-bootstrap = callPackage ../development/compilers/openjdk/12.nix {
stdenv = gcc8Stdenv; /* build segfaults with gcc9 or newer, so use gcc8 like Debian does */
openjfx = openjfx11; /* need this despite next line :-( */
enableJavaFX = false;
headless = true;
inherit (gnome2) GConf gnome_vfs;
};
}; };
}; };
}; };
@ -10767,27 +10773,27 @@ in
jdk11_headless = openjdk11_headless; jdk11_headless = openjdk11_headless;
/* Latest JDK */ /* Latest JDK */
openjdk15 = openjdk16 =
if stdenv.isDarwin then if stdenv.isDarwin then
callPackage ../development/compilers/openjdk/darwin { } callPackage ../development/compilers/openjdk/darwin { }
else else
callPackage ../development/compilers/openjdk { callPackage ../development/compilers/openjdk/16.nix {
openjfx = openjfx15; openjfx = openjfx15;
inherit (gnome2) GConf gnome_vfs; inherit (gnome2) GConf gnome_vfs;
}; };
openjdk15_headless = openjdk16_headless =
if stdenv.isDarwin then if stdenv.isDarwin then
openjdk15 openjdk16
else else
openjdk15.override { headless = true; }; openjdk16.override { headless = true; };
jdk15 = openjdk15; jdk16 = openjdk16;
jdk15_headless = openjdk15_headless; jdk16_headless = openjdk16_headless;
/* default JDK */ /* default JDK */
jdk = jdk15; jdk = jdk16;
# Since the introduction of the Java Platform Module System in Java 9, Java # Since the introduction of the Java Platform Module System in Java 9, Java
# no longer ships a separate JRE package. # no longer ships a separate JRE package.
@ -10796,13 +10802,13 @@ in
# 'jre_minimal' to build a bespoke JRE containing only the modules you need. # 'jre_minimal' to build a bespoke JRE containing only the modules you need.
# #
# For a general-purpose system, 'jre' defaults to the full JDK: # For a general-purpose system, 'jre' defaults to the full JDK:
jre = jdk15; jre = jdk16;
jre_headless = jdk15_headless; jre_headless = jdk16_headless;
jre_minimal = callPackage ../development/compilers/openjdk/jre.nix { }; jre_minimal = callPackage ../development/compilers/openjdk/jre.nix { };
openjdk = openjdk15; openjdk = openjdk16;
openjdk_headless = openjdk15_headless; openjdk_headless = openjdk16_headless;
inherit (callPackages ../development/compilers/graalvm { inherit (callPackages ../development/compilers/graalvm {
gcc = if stdenv.targetPlatform.isDarwin then gcc8 else gcc; gcc = if stdenv.targetPlatform.isDarwin then gcc8 else gcc;