Skip to content

Commit

Permalink
openjdk: 12.0.2 -> 13.0.1
Browse files Browse the repository at this point in the history
  • Loading branch information
jerith666 committed Oct 17, 2019
1 parent d9d5b73 commit d00559e
Show file tree
Hide file tree
Showing 9 changed files with 253 additions and 26 deletions.
155 changes: 155 additions & 0 deletions pkgs/development/compilers/openjdk/12.nix
@@ -0,0 +1,155 @@
{ stdenv, lib, fetchurl, bash, pkgconfig, 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, openjdk11
, setJavaClassPath
, headless ? false
, enableJavaFX ? openjfx.meta.available, openjfx
, enableGnome2 ? true, gtk3, gnome_vfs, glib, GConf
}:

let
major = "12";
update = ".0.2";
build = "ga";

openjdk = stdenv.mkDerivation rec {
pname = "openjdk" + lib.optionalString headless "-headless";
version = "${major}${update}-${build}";

src = fetchurl {
url = "http://hg.openjdk.java.net/jdk-updates/jdk${major}u/archive/jdk-${version}.tar.gz";
sha256 = "1ndlxmikyy298z7lqpr1bd0zxq7yx6xidj8y3c8mw9m9fy64h9c7";
};

nativeBuildInputs = [ pkgconfig 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 openjdk11
] ++ 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.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-jdk10.patch
];

prePatch = ''
chmod +x configure
patchShebangs --build configure
'';

configureFlags = [
"--with-boot-jdk=${openjdk11.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 = 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
# 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 = [ openjdk11 ];

meta = with stdenv.lib; {
homepage = http://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";
};
};
in openjdk
4 changes: 2 additions & 2 deletions pkgs/development/compilers/openjdk/darwin/default.nix
Expand Up @@ -7,11 +7,11 @@ let
};

jdk = stdenv.mkDerivation rec {
name = "zulu12.1.3-ca-jdk12";
name = "zulu13.28.11-ca-jdk13.0.1";

src = fetchurl {
url = "https://cdn.azul.com/zulu/bin/${name}-macosx_x64.tar.gz";
sha256 = "05q3v4vwjd7xhqr21bzlip5x4xhq5rpdshfpb8i86n4zvn7l0mxy";
sha256 = "0j148gq7vwhda6y9sazy0qg6ka7milywrdhbvmd31a1xp303r37b";
curlOpts = "-H Referer:https://www.azul.com/downloads/zulu/";
};

Expand Down
22 changes: 11 additions & 11 deletions pkgs/development/compilers/openjdk/default.nix
@@ -1,32 +1,32 @@
{ stdenv, lib, fetchurl, bash, pkgconfig, 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, openjdk11
, libXcursor, libXrandr, fontconfig, openjdk13-bootstrap
, setJavaClassPath
, headless ? false
, enableJavaFX ? openjfx.meta.available, openjfx
, enableGnome2 ? true, gtk3, gnome_vfs, glib, GConf
}:

let
major = "12";
update = ".0.2";
build = "ga";
major = "13";
update = ".0.1";
build = "-ga";

openjdk = stdenv.mkDerivation rec {
pname = "openjdk" + lib.optionalString headless "-headless";
version = "${major}${update}-${build}";
version = "${major}${update}${build}";

src = fetchurl {
url = "http://hg.openjdk.java.net/jdk-updates/jdk${major}u/archive/jdk-${version}.tar.gz";
sha256 = "1ndlxmikyy298z7lqpr1bd0zxq7yx6xidj8y3c8mw9m9fy64h9c7";
sha256 = "1pmgbzlr97ns9fvi3a193miziv5v8fvk9jgymspllsvmb6x9lppk";
};

nativeBuildInputs = [ pkgconfig 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 openjdk11
libXi libXinerama libXcursor libXrandr fontconfig openjdk13-bootstrap
] ++ lib.optionals (!headless && enableGnome2) [
gtk3 gnome_vfs GConf glib
];
Expand All @@ -35,7 +35,7 @@ let
./fix-java-home-jdk10.patch
./read-truststore-from-env-jdk10.patch
./currency-date-range-jdk10.patch
./increase-javadoc-heap.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
Expand All @@ -45,7 +45,7 @@ let
sha256 = "082lmc30x64x583vqq00c8y0wqih3y4r0mp1c4bqq36l22qv6b6r";
})
] ++ lib.optionals (!headless && enableGnome2) [
./swing-use-gtk-jdk10.patch
./swing-use-gtk-jdk13.patch
];

prePatch = ''
Expand All @@ -54,7 +54,7 @@ let
'';

configureFlags = [
"--with-boot-jdk=${openjdk11.home}"
"--with-boot-jdk=${openjdk13-bootstrap.home}"
"--enable-unlimited-crypto"
"--with-native-debug-symbols=internal"
"--with-libjpeg=system"
Expand Down Expand Up @@ -137,7 +137,7 @@ let
done
'';

disallowedReferences = [ openjdk11 ];
disallowedReferences = [ openjdk13-bootstrap ];

meta = with stdenv.lib; {
homepage = http://openjdk.java.net/;
Expand Down
@@ -0,0 +1,12 @@
diff -uw -r a/make/Docs.gmk b/make/Docs.gmk
--- a/make/Docs.gmk 2019-10-09 08:05:43.107349180 -0400
+++ b/make/Docs.gmk 2019-10-09 08:09:29.330118790 -0400
@@ -277,7 +277,7 @@
$1_ALL_MODULES := $$(sort $$($1_MODULES) $$($1_INDIRECT_EXPORTS))

$1_JAVA_ARGS := -Dextlink.spec.version=$$(VERSION_SPECIFICATION) \
- -Djspec.version=$$(VERSION_SPECIFICATION)
+ -Djspec.version=$$(VERSION_SPECIFICATION) -Xmx1G

ifeq ($$(ENABLE_FULL_DOCS), true)
# Tell the ModuleGraph taglet to generate html links to soon-to-be-created
3 changes: 3 additions & 0 deletions pkgs/development/compilers/openjdk/openjfx/11.nix
Expand Up @@ -29,6 +29,9 @@ let
JDK_HOME = ${openjdk11-bootstrap.home}
'' + args.gradleProperties or "");

#avoids errors about deprecation of GTypeDebugFlags, GTimeVal, etc.
NIX_CFLAGS_COMPILE = [ "-DGLIB_DISABLE_DEPRECATION_WARNINGS" ];

buildPhase = ''
runHook preBuild
Expand Down
Expand Up @@ -3,7 +3,7 @@
, ffmpeg, python, ruby }:

let
major = "12";
major = "13";
update = "";
build = "14";
repover = "${major}${update}+${build}";
Expand All @@ -15,8 +15,8 @@ let
version = "${major}${update}-${build}";

src = fetchurl {
url = "https://hg.openjdk.java.net/openjfx/${major}/rt/archive/${repover}.tar.gz";
sha256 = "16jjfjkrg57wsj9mmm52i2kl3byz3ba1f9f8wwc8zwqm4cpjzliz";
url = "https://hg.openjdk.java.net/openjfx/${major}-dev/rt/archive/${repover}.tar.gz";
sha256 = "0nviv9fiwzp1z4gjbp8iz9mf601nadzcy0sx74f5y3v41a3l59qb";
};

buildInputs = [ gtk2 gtk3 libXtst libXxf86vm glib alsaLib ffmpeg ];
Expand All @@ -29,6 +29,9 @@ let
JDK_HOME = ${openjdk11_headless.home}
'' + args.gradleProperties or "");

#avoids errors about deprecation of GTypeDebugFlags, GTimeVal, etc.
NIX_CFLAGS_COMPILE = [ "-DGLIB_DISABLE_DEPRECATION_WARNINGS" ];

buildPhase = ''
runHook preBuild
Expand Down Expand Up @@ -59,8 +62,8 @@ let
outputHashMode = "recursive";
# Downloaded AWT jars differ by platform.
outputHash = {
x86_64-linux = "1z5qar5l28ja4pkf5l5m48xbv3x1yrnilsv9lpf2j3vkdk9h1nci";
i686-linux = "0rbygvjc7w197fi5nxldqdrm6mpiyd3n45042g3gd4s5qk08spjd";
x86_64-linux = "077zss95iq6iskx7ghz1c57ymydpzj0wm7r1pkznw99l9xwvdmqi";
i686-linux = "03gglr2sh77cyg16qw9g45ji33dg7i93s5s30hz3mh420g112qa0";
}.${stdenv.system} or (throw "Unsupported platform");
};

Expand All @@ -72,6 +75,9 @@ in makePackage {
COMPILE_WEBKIT = true
'';

#openjdk build fails if licenses are identical, so we must patch this trivial difference
patches = [ ./openjfx-mesa-license.patch ];

preBuild = ''
swtJar="$(find ${deps} -name org.eclipse.swt\*.jar)"
substituteInPlace build.gradle \
Expand Down
@@ -0,0 +1,17 @@
--- a/modules/javafx.graphics/src/main/legal/mesa3d.md 1969-12-31 19:00:01.000000000 -0500
+++ b/modules/javafx.graphics/src/main/legal/mesa3d.md 2019-08-08 01:05:04.000000000 -0400
@@ -1,7 +1,7 @@
## Mesa 3-D Graphics Library v5.0

### Mesa License
-```
+<pre>

Mesa 3-D graphics library
Version: 5.0
@@ -25,4 +25,4 @@
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-```
+</pre>
22 changes: 22 additions & 0 deletions pkgs/development/compilers/openjdk/swing-use-gtk-jdk13.patch
@@ -0,0 +1,22 @@
--- a/src/java.desktop/share/classes/javax/swing/UIManager.java 2019-08-08 01:05:04.000000000 -0400
+++ b/src/java.desktop/share/classes/javax/swing/UIManager.java 2019-10-09 08:20:31.791606748 -0400
@@ -660,9 +660,8 @@
Toolkit toolkit = Toolkit.getDefaultToolkit();
if (toolkit instanceof SunToolkit) {
SunToolkit suntk = (SunToolkit)toolkit;
- String desktop = suntk.getDesktop();
boolean gtkAvailable = suntk.isNativeGTKAvailable();
- if ("gnome".equals(desktop) && gtkAvailable) {
+ if (gtkAvailable) {
return "com.sun.java.swing.plaf.gtk.GTKLookAndFeel";
}
}
@@ -1397,7 +1396,7 @@
lafName = lafData.remove("defaultlaf");
}
if (lafName == null) {
- lafName = getCrossPlatformLookAndFeelClassName();
+ lafName = getSystemLookAndFeelClassName();
}
lafName = swingProps.getProperty(defaultLAFKey, lafName);

0 comments on commit d00559e

Please sign in to comment.