openjdk: 14.0.2 -> 15.0.1

* update two explicit references to jdk14 to just jdk, which no longer
  points at jdk8 after #89731.

* patch an explicit -XX:+UseConcMarkSweepGC to -XX:UseG1GC, as the
  former now throws an error (after having been deprecated since jdk 9)
This commit is contained in:
Matt McHenry 2020-10-01 09:36:31 -04:00
parent e9158eca70
commit 13e3d2bc4b
8 changed files with 214 additions and 43 deletions

@ -1,4 +1,4 @@
{ stdenv, fetchurl, jdk14, makeWrapper, autoPatchelfHook, makeDesktopItem, glib, libsecret }: { stdenv, fetchurl, jdk, makeWrapper, autoPatchelfHook, makeDesktopItem, glib, libsecret }:
let let
desktopItem = makeDesktopItem { desktopItem = makeDesktopItem {
@ -39,7 +39,7 @@ stdenv.mkDerivation rec {
makeWrapper "$dest/ApacheDirectoryStudio" \ makeWrapper "$dest/ApacheDirectoryStudio" \
"$out/bin/ApacheDirectoryStudio" \ "$out/bin/ApacheDirectoryStudio" \
--prefix PATH : "${jdk14}/bin" --prefix PATH : "${jdk}/bin"
install -D icon.xpm "$out/share/pixmaps/apache-directory-studio.xpm" install -D icon.xpm "$out/share/pixmaps/apache-directory-studio.xpm"
install -D -t "$out/share/applications" ${desktopItem}/share/applications/* install -D -t "$out/share/applications" ${desktopItem}/share/applications/*
''; '';

@ -0,0 +1,157 @@
{ stdenv, lib, fetchurl, 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, openjdk14-bootstrap
, setJavaClassPath
, headless ? false
, enableJavaFX ? openjfx.meta.available, openjfx
, enableGnome2 ? true, gtk3, gnome_vfs, glib, GConf
}:
let
major = "14";
update = ".0.2";
build = "-ga";
openjdk = stdenv.mkDerivation rec {
pname = "openjdk" + lib.optionalString headless "-headless";
version = "${major}${update}${build}";
src = fetchurl {
url = "https://hg.openjdk.java.net/jdk-updates/jdk${major}u/archive/jdk-${version}.tar.gz";
sha256 = "1s1pc6ihzf0awp4hbaqfxmbica0hnrg8nr7s0yd2hfn7nan8xmf3";
};
nativeBuildInputs = [ pkg-config autoconf ];
buildInputs = [
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 openjdk14-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=${openjdk14-bootstrap.home}"
"--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 = [ openjdk14-bootstrap ];
meta = with stdenv.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

@ -7,11 +7,11 @@ let
}; };
jdk = stdenv.mkDerivation rec { jdk = stdenv.mkDerivation rec {
name = "zulu14.28.21-ca-jdk14.0.1"; name = "zulu15.28.51-ca-jdk15.0.1";
src = fetchurl { src = fetchurl {
url = "https://cdn.azul.com/zulu/bin/${name}-macosx_x64.tar.gz"; url = "https://cdn.azul.com/zulu/bin/${name}-macosx_x64.tar.gz";
sha256 = "1pc0y3fxhlf42a51qbdha1fabci61yzq70kk5c1rzk0ai78d92q8"; sha256 = "0h738pbnwcn7pjp0qyryzazqj5nw5sy2f8l0ycl39crm9ia6akvh";
curlOpts = "-H Referer:https://www.azul.com/downloads/zulu/"; curlOpts = "-H Referer:https://www.azul.com/downloads/zulu/";
}; };

@ -1,7 +1,7 @@
{ stdenv, lib, fetchurl, bash, pkgconfig, autoconf, cpio, file, which, unzip { stdenv, lib, fetchurl, bash, pkg-config, autoconf, cpio, file, which, unzip
, zip, perl, cups, freetype, alsaLib, libjpeg, giflib, libpng, zlib, lcms2 , zip, perl, cups, freetype, alsaLib, libjpeg, giflib, libpng, zlib, lcms2
, libX11, libICE, libXrender, libXext, libXt, libXtst, libXi, libXinerama , libX11, libICE, libXrender, libXext, libXt, libXtst, libXi, libXinerama
, libXcursor, libXrandr, fontconfig, openjdk14-bootstrap , libXcursor, libXrandr, fontconfig, openjdk15-bootstrap
, setJavaClassPath , setJavaClassPath
, headless ? false , headless ? false
, enableJavaFX ? openjfx.meta.available, openjfx , enableJavaFX ? openjfx.meta.available, openjfx
@ -9,8 +9,8 @@
}: }:
let let
major = "14"; major = "15";
update = ".0.2"; update = ".0.1";
build = "-ga"; build = "-ga";
openjdk = stdenv.mkDerivation rec { openjdk = stdenv.mkDerivation rec {
@ -18,15 +18,15 @@ let
version = "${major}${update}${build}"; version = "${major}${update}${build}";
src = fetchurl { src = fetchurl {
url = "http://hg.openjdk.java.net/jdk-updates/jdk${major}u/archive/jdk-${version}.tar.gz"; url = "https://hg.openjdk.java.net/jdk-updates/jdk${major}u/archive/jdk-${version}.tar.gz";
sha256 = "1s1pc6ihzf0awp4hbaqfxmbica0hnrg8nr7s0yd2hfn7nan8xmf3"; sha256 = "1h8n5figc9q0k9p8b0qggyhvqagvxanfih1lj5j492c74cd1mx1l";
}; };
nativeBuildInputs = [ pkgconfig autoconf ]; nativeBuildInputs = [ pkg-config autoconf ];
buildInputs = [ buildInputs = [
cpio file which unzip 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 openjdk14-bootstrap libXi libXinerama libXcursor libXrandr fontconfig openjdk15-bootstrap
] ++ lib.optionals (!headless && enableGnome2) [ ] ++ lib.optionals (!headless && enableGnome2) [
gtk3 gnome_vfs GConf glib gtk3 gnome_vfs GConf glib
]; ];
@ -54,7 +54,7 @@ let
''; '';
configureFlags = [ configureFlags = [
"--with-boot-jdk=${openjdk14-bootstrap.home}" "--with-boot-jdk=${openjdk15-bootstrap.home}"
"--enable-unlimited-crypto" "--enable-unlimited-crypto"
"--with-native-debug-symbols=internal" "--with-native-debug-symbols=internal"
"--with-libjpeg=system" "--with-libjpeg=system"
@ -138,10 +138,10 @@ let
done done
''; '';
disallowedReferences = [ openjdk14-bootstrap ]; disallowedReferences = [ openjdk15-bootstrap ];
meta = with stdenv.lib; { meta = with stdenv.lib; {
homepage = "http://openjdk.java.net/"; homepage = "https://openjdk.java.net/";
license = licenses.gpl2; license = licenses.gpl2;
description = "The open-source Java Development Kit"; description = "The open-source Java Development Kit";
maintainers = with maintainers; [ edwtjo ]; maintainers = with maintainers; [ edwtjo ];

@ -3,9 +3,9 @@
, ffmpeg_3, python, ruby }: , ffmpeg_3, python, ruby }:
let let
major = "14"; major = "15";
update = ""; update = ".0.1";
build = "-ga"; build = "+1";
repover = "${major}${update}${build}"; repover = "${major}${update}${build}";
gradle_ = (gradleGen.override { gradle_ = (gradleGen.override {
java = openjdk11_headless; java = openjdk11_headless;
@ -18,7 +18,7 @@ let
owner = "openjdk"; owner = "openjdk";
repo = "jfx"; repo = "jfx";
rev = repover; rev = repover;
sha256 = "16aj15xksc266gv3y42m0g277pfvp71901lrngndcnpr7i2zshnr"; sha256 = "019glq8rhn6amy3n5jc17vi2wpf1pxpmmywvyz1ga8n09w7xscq1";
}; };
buildInputs = [ gtk2 gtk3 libXtst libXxf86vm glib alsaLib ffmpeg_3 ]; buildInputs = [ gtk2 gtk3 libXtst libXxf86vm glib alsaLib ffmpeg_3 ];
@ -64,8 +64,10 @@ let
outputHashMode = "recursive"; outputHashMode = "recursive";
# Downloaded AWT jars differ by platform. # Downloaded AWT jars differ by platform.
outputHash = { outputHash = {
x86_64-linux = "077zss95iq6iskx7ghz1c57ymydpzj0wm7r1pkznw99l9xwvdmqi"; x86_64-linux = "0hmyr5nnjgwyw3fcwqf0crqg9lny27jfirycg3xmkzbcrwqd6qkw";
i686-linux = "03gglr2sh77cyg16qw9g45ji33dg7i93s5s30hz3mh420g112qa0"; # The build-time dependencies don't currently build for i686, so no
# reason to fetch this one correctly either...
i686-linux = "0000000000000000000000000000000000000000000000000000";
}.${stdenv.system} or (throw "Unsupported platform"); }.${stdenv.system} or (throw "Unsupported platform");
}; };

@ -3,7 +3,7 @@
, makeDesktopItem , makeDesktopItem
, fetchFromGitHub , fetchFromGitHub
, gradleGen , gradleGen
, jdk14 , jdk
, perl , perl
, jre , jre
, alsaLib , alsaLib
@ -51,7 +51,7 @@ let
''; '';
# The default one still uses jdk8 (#89731) # The default one still uses jdk8 (#89731)
gradle_6 = (gradleGen.override (old: { java = jdk14; })).gradle_6_7; gradle_6 = (gradleGen.override (old: { java = jdk; })).gradle_6_7;
# fake build to pre-download deps into fixed-output derivation # fake build to pre-download deps into fixed-output derivation
deps = stdenv.mkDerivation { deps = stdenv.mkDerivation {

@ -1,4 +1,4 @@
{ stdenv, fetchurl, dpkg, jre_headless, nixosTests }: { stdenv, fetchurl, makeWrapper, dpkg, jre_headless, nixosTests }:
let let
pname = "jitsi-videobridge2"; pname = "jitsi-videobridge2";
@ -15,6 +15,8 @@ stdenv.mkDerivation {
unpackCmd = "${dpkg}/bin/dpkg-deb -x $src debcontents"; unpackCmd = "${dpkg}/bin/dpkg-deb -x $src debcontents";
buildInputs = [ makeWrapper ];
installPhase = '' installPhase = ''
substituteInPlace usr/share/jitsi-videobridge/jvb.sh \ substituteInPlace usr/share/jitsi-videobridge/jvb.sh \
--replace "exec java" "exec ${jre_headless}/bin/java" --replace "exec java" "exec ${jre_headless}/bin/java"
@ -24,6 +26,10 @@ stdenv.mkDerivation {
cp ${./logging.properties-journal} $out/etc/jitsi/videobridge/logging.properties-journal cp ${./logging.properties-journal} $out/etc/jitsi/videobridge/logging.properties-journal
mv usr/share/jitsi-videobridge/* $out/share/jitsi-videobridge/ mv usr/share/jitsi-videobridge/* $out/share/jitsi-videobridge/
ln -s $out/share/jitsi-videobridge/jvb.sh $out/bin/jitsi-videobridge ln -s $out/share/jitsi-videobridge/jvb.sh $out/bin/jitsi-videobridge
# work around https://github.com/jitsi/jitsi-videobridge/issues/1547
wrapProgram $out/bin/jitsi-videobridge \
--set VIDEOBRIDGE_GC_TYPE G1GC
''; '';
passthru.tests = { passthru.tests = {

@ -9507,7 +9507,7 @@ in
openjfx11 = callPackage ../development/compilers/openjdk/openjfx/11.nix { }; openjfx11 = callPackage ../development/compilers/openjdk/openjfx/11.nix { };
openjfx14 = callPackage ../development/compilers/openjdk/openjfx/14.nix { }; openjfx15 = callPackage ../development/compilers/openjdk/openjfx/15.nix { };
openjdk8-bootstrap = openjdk8-bootstrap =
if adoptopenjdk-hotspot-bin-8.meta.available then if adoptopenjdk-hotspot-bin-8.meta.available then
@ -9557,21 +9557,27 @@ in
else else
openjdk11.override { headless = true; }; openjdk11.override { headless = true; };
openjdk14-bootstrap = openjdk15-bootstrap =
if adoptopenjdk-hotspot-bin-13.meta.available then if adoptopenjdk-hotspot-bin-14.meta.available then
adoptopenjdk-hotspot-bin-13 adoptopenjdk-hotspot-bin-14
else else
/* adoptopenjdk not available for i686, so fall back to our old builds of 12 & 13 for bootstrapping */ /* adoptopenjdk not available for i686, so fall back to our old builds of 12, 13, & 14 for bootstrapping */
callPackage ../development/compilers/openjdk/13.nix { 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 {
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 {
openjfx = openjfx11; /* need this despite next line :-( */
enableJavaFX = false;
headless = true;
inherit (gnome2) GConf gnome_vfs;
};
}; };
}; };
@ -9579,27 +9585,27 @@ in
jdk11_headless = openjdk11_headless; jdk11_headless = openjdk11_headless;
/* Latest JDK */ /* Latest JDK */
openjdk14 = openjdk15 =
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 {
openjfx = openjfx14; openjfx = openjfx15;
inherit (gnome2) GConf gnome_vfs; inherit (gnome2) GConf gnome_vfs;
}; };
openjdk14_headless = openjdk15_headless =
if stdenv.isDarwin then if stdenv.isDarwin then
openjdk14 openjdk15
else else
openjdk14.override { headless = true; }; openjdk15.override { headless = true; };
jdk14 = openjdk14; jdk15 = openjdk15;
jdk14_headless = openjdk14_headless; jdk15_headless = openjdk15_headless;
/* default JDK */ /* default JDK */
jdk = jdk14; jdk = jdk15;
# 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.
@ -9608,13 +9614,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 = jdk14; jre = jdk15;
jre_headless = jdk14_headless; jre_headless = jdk15_headless;
jre_minimal = callPackage ../development/compilers/openjdk/jre.nix { }; jre_minimal = callPackage ../development/compilers/openjdk/jre.nix { };
openjdk = openjdk14; openjdk = openjdk15;
openjdk_headless = openjdk14_headless; openjdk_headless = openjdk15_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;