summary refs log tree commit diff
diff options
context:
space:
mode:
authorMatt McHenry <github@matt.mchenryfamily.org>2019-10-09 08:02:18 -0400
committerMatt McHenry <github@matt.mchenryfamily.org>2019-10-17 11:47:41 -0400
commitd00559ebb84af84b48a207a5a0a0762ce9d577eb (patch)
tree5f5716eccd1858615c44b172ed6aa1991c7dd179
parentd9d5b737ee41832a859014a74f632dd430a6f5b6 (diff)
downloadnixpkgs-d00559ebb84af84b48a207a5a0a0762ce9d577eb.tar
nixpkgs-d00559ebb84af84b48a207a5a0a0762ce9d577eb.tar.gz
nixpkgs-d00559ebb84af84b48a207a5a0a0762ce9d577eb.tar.bz2
nixpkgs-d00559ebb84af84b48a207a5a0a0762ce9d577eb.tar.lz
nixpkgs-d00559ebb84af84b48a207a5a0a0762ce9d577eb.tar.xz
nixpkgs-d00559ebb84af84b48a207a5a0a0762ce9d577eb.tar.zst
nixpkgs-d00559ebb84af84b48a207a5a0a0762ce9d577eb.zip
openjdk: 12.0.2 -> 13.0.1
-rw-r--r--pkgs/development/compilers/openjdk/12.nix155
-rw-r--r--pkgs/development/compilers/openjdk/darwin/default.nix4
-rw-r--r--pkgs/development/compilers/openjdk/default.nix22
-rw-r--r--pkgs/development/compilers/openjdk/increase-javadoc-heap-jdk13.patch12
-rw-r--r--pkgs/development/compilers/openjdk/openjfx/11.nix3
-rw-r--r--pkgs/development/compilers/openjdk/openjfx/13.nix (renamed from pkgs/development/compilers/openjdk/openjfx/12.nix)16
-rw-r--r--pkgs/development/compilers/openjdk/openjfx/openjfx-mesa-license.patch17
-rw-r--r--pkgs/development/compilers/openjdk/swing-use-gtk-jdk13.patch22
-rw-r--r--pkgs/top-level/all-packages.nix28
9 files changed, 253 insertions, 26 deletions
diff --git a/pkgs/development/compilers/openjdk/12.nix b/pkgs/development/compilers/openjdk/12.nix
new file mode 100644
index 00000000000..094bd57e6e9
--- /dev/null
+++ b/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
diff --git a/pkgs/development/compilers/openjdk/darwin/default.nix b/pkgs/development/compilers/openjdk/darwin/default.nix
index 58e4ba99014..d080bcf3829 100644
--- a/pkgs/development/compilers/openjdk/darwin/default.nix
+++ b/pkgs/development/compilers/openjdk/darwin/default.nix
@@ -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/";
     };
 
diff --git a/pkgs/development/compilers/openjdk/default.nix b/pkgs/development/compilers/openjdk/default.nix
index 094bd57e6e9..616d946ef66 100644
--- a/pkgs/development/compilers/openjdk/default.nix
+++ b/pkgs/development/compilers/openjdk/default.nix
@@ -1,7 +1,7 @@
 { 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
@@ -9,24 +9,24 @@
 }:
 
 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
     ];
@@ -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
@@ -45,7 +45,7 @@ let
         sha256 = "082lmc30x64x583vqq00c8y0wqih3y4r0mp1c4bqq36l22qv6b6r";
       })
     ] ++ lib.optionals (!headless && enableGnome2) [
-      ./swing-use-gtk-jdk10.patch
+      ./swing-use-gtk-jdk13.patch
     ];
 
     prePatch = ''
@@ -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"
@@ -137,7 +137,7 @@ let
       done
     '';
 
-    disallowedReferences = [ openjdk11 ];
+    disallowedReferences = [ openjdk13-bootstrap ];
 
     meta = with stdenv.lib; {
       homepage = http://openjdk.java.net/;
diff --git a/pkgs/development/compilers/openjdk/increase-javadoc-heap-jdk13.patch b/pkgs/development/compilers/openjdk/increase-javadoc-heap-jdk13.patch
new file mode 100644
index 00000000000..6e48db6ac3b
--- /dev/null
+++ b/pkgs/development/compilers/openjdk/increase-javadoc-heap-jdk13.patch
@@ -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
diff --git a/pkgs/development/compilers/openjdk/openjfx/11.nix b/pkgs/development/compilers/openjdk/openjfx/11.nix
index 43fe8ed8387..a65aea642a4 100644
--- a/pkgs/development/compilers/openjdk/openjfx/11.nix
+++ b/pkgs/development/compilers/openjdk/openjfx/11.nix
@@ -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
 
diff --git a/pkgs/development/compilers/openjdk/openjfx/12.nix b/pkgs/development/compilers/openjdk/openjfx/13.nix
index 356ac4800d9..4def48ac647 100644
--- a/pkgs/development/compilers/openjdk/openjfx/12.nix
+++ b/pkgs/development/compilers/openjdk/openjfx/13.nix
@@ -3,7 +3,7 @@
 , ffmpeg, python, ruby }:
 
 let
-  major = "12";
+  major = "13";
   update = "";
   build = "14";
   repover = "${major}${update}+${build}";
@@ -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 ];
@@ -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
 
@@ -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");
   };
 
@@ -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 \
diff --git a/pkgs/development/compilers/openjdk/openjfx/openjfx-mesa-license.patch b/pkgs/development/compilers/openjdk/openjfx/openjfx-mesa-license.patch
new file mode 100644
index 00000000000..d3bf9e17c22
--- /dev/null
+++ b/pkgs/development/compilers/openjdk/openjfx/openjfx-mesa-license.patch
@@ -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>
diff --git a/pkgs/development/compilers/openjdk/swing-use-gtk-jdk13.patch b/pkgs/development/compilers/openjdk/swing-use-gtk-jdk13.patch
new file mode 100644
index 00000000000..8a1b9b6149b
--- /dev/null
+++ b/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);
+ 
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index f6e3f63a451..ba71a1cee9c 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -8039,7 +8039,7 @@ in
 
   openjfx11 = callPackage ../development/compilers/openjdk/openjfx/11.nix { };
 
-  openjfx12 = callPackage ../development/compilers/openjdk/openjfx/12.nix { };
+  openjfx13 = callPackage ../development/compilers/openjdk/openjfx/13.nix { };
 
   openjdk8-bootstrap =
     if adoptopenjdk-hotspot-bin-8.meta.available then
@@ -8084,21 +8084,33 @@ in
     else
       openjdk11.override { headless = true; };
 
+  openjdk13-bootstrap =
+    if adoptopenjdk-hotspot-bin-13.meta.available then
+      adoptopenjdk-hotspot-bin-13
+    else
+      /* adoptopenjdk not available for i686, so fall back to our old build of 12 for bootstrapping */
+      callPackage ../development/compilers/openjdk/12.nix {
+        openjfx = openjfx11; /* need this despite next line :-( */
+        enableJavaFX = false;
+        headless = true;
+        inherit (gnome2) GConf gnome_vfs;
+      };
+
   /* current JDK */
-  openjdk12 =
+  openjdk13 =
     if stdenv.isDarwin then
       callPackage ../development/compilers/openjdk/darwin { }
     else
       callPackage ../development/compilers/openjdk {
-        openjfx = openjfx12;
+        openjfx = openjfx13;
         inherit (gnome2) GConf gnome_vfs;
       };
 
-  openjdk12_headless =
+  openjdk13_headless =
     if stdenv.isDarwin then
-      openjdk12
+      openjdk13
     else
-      openjdk12.override { headless = true; };
+      openjdk13.override { headless = true; };
 
   openjdk = openjdk8;
   openjdk_headless = openjdk8_headless;
@@ -8110,8 +8122,8 @@ in
   jdk11 = openjdk11;
   jdk11_headless = openjdk11_headless;
 
-  jdk12 = openjdk12;
-  jdk12_headless = openjdk12_headless;
+  jdk13 = openjdk13;
+  jdk13_headless = openjdk13_headless;
 
   jdk = jdk8;
   jre = jre8;