jdk: 15.0.1-ga -> 16+36

wip/yesman
Milan Pässler 3 years ago committed by Milan
parent df175b7f61
commit 9dde9d8b9e
  1. 4
      pkgs/development/compilers/openjdk/15.nix
  2. 164
      pkgs/development/compilers/openjdk/16.nix
  3. 44
      pkgs/top-level/all-packages.nix

@ -22,9 +22,9 @@ let
sha256 = "1h8n5figc9q0k9p8b0qggyhvqagvxanfih1lj5j492c74cd1mx1l";
};
nativeBuildInputs = [ pkg-config autoconf unzip ];
nativeBuildInputs = [ pkg-config autoconf ];
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
libXi libXinerama libXcursor libXrandr fontconfig openjdk15-bootstrap
] ++ lib.optionals (!headless && enableGnome2) [

@ -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

@ -10738,27 +10738,33 @@ in
else
openjdk11.override { headless = true; };
openjdk15-bootstrap =
if adoptopenjdk-hotspot-bin-14.meta.available then
adoptopenjdk-hotspot-bin-14
openjdk16-bootstrap =
if adoptopenjdk-hotspot-bin-15.meta.available then
adoptopenjdk-hotspot-bin-15
else
/* 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 :-( */
enableJavaFX = false;
headless = true;
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 :-( */
enableJavaFX = false;
headless = true;
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 */
openjdk14-bootstrap = callPackage ../development/compilers/openjdk/13.nix {
openjfx = openjfx11; /* need this despite next line :-( */
enableJavaFX = false;
headless = true;
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;
/* Latest JDK */
openjdk15 =
openjdk16 =
if stdenv.isDarwin then
callPackage ../development/compilers/openjdk/darwin { }
else
callPackage ../development/compilers/openjdk {
callPackage ../development/compilers/openjdk/16.nix {
openjfx = openjfx15;
inherit (gnome2) GConf gnome_vfs;
};
openjdk15_headless =
openjdk16_headless =
if stdenv.isDarwin then
openjdk15
openjdk16
else
openjdk15.override { headless = true; };
openjdk16.override { headless = true; };
jdk15 = openjdk15;
jdk15_headless = openjdk15_headless;
jdk16 = openjdk16;
jdk16_headless = openjdk16_headless;
/* default JDK */
jdk = jdk15;
jdk = jdk16;
# Since the introduction of the Java Platform Module System in Java 9, Java
# 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.
#
# For a general-purpose system, 'jre' defaults to the full JDK:
jre = jdk15;
jre_headless = jdk15_headless;
jre = jdk16;
jre_headless = jdk16_headless;
jre_minimal = callPackage ../development/compilers/openjdk/jre.nix { };
openjdk = openjdk15;
openjdk_headless = openjdk15_headless;
openjdk = openjdk16;
openjdk_headless = openjdk16_headless;
inherit (callPackages ../development/compilers/graalvm {
gcc = if stdenv.targetPlatform.isDarwin then gcc8 else gcc;

Loading…
Cancel
Save