summary refs log tree commit diff
path: root/gnu/packages/java.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/java.scm')
-rw-r--r--gnu/packages/java.scm40
1 files changed, 27 insertions, 13 deletions
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index e55684d2a3..ba10b3013f 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -233,15 +233,23 @@
                      "openjdk.src/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c")
                  (("#include <sys/sysctl.h>")
                   "#include <linux/sysctl.h>"))
+
+               ;; XXX 'ldd' in glibc 2.35 segfaults upon reading
+               ;;   openjdk.build-boot/lib/amd64/libnio.so (!).
+               ;; It is only used as a verification step, so ignore it;
+               ;; try removing this substitution for newer versions of glibc.
+               (substitute* "openjdk.src/jdk/make/common/shared/Defs-linux.gmk"
+                 (("\\$\\(LDD\\) \\$1 &&")
+                  ""))
+
                ;; It looks like the "h = 31 * h + c" line of the jsum()
                ;; function gets miscompiled. After a few iterations of the loop
                ;; the result of "31 * h" is always 0x8000000000000000.
-               ;; Bad optimization maybe...
-               ;; Transform "31 * h + c" into a convoluted "32 * h + c - h"
-               ;; as a workaround.
-               (substitute* "openjdk.src/hotspot/src/share/vm/memory/dump.cpp"
-                 (("h = 31 \\* h \\+ c;")
-                  "jlong h0 = h;\nfor(int i = 0; i < 5; i++) h += h;\nh += c - h0;"))))
+               ;; Disable optimizations of dump.cpp as a workaround.
+               (substitute* "openjdk.src/hotspot/make/linux/makefiles/gcc.make"
+                 (("OPT_CFLAGS/NOOPT.*" all)
+                  (string-append all "\n"
+                                 "OPT_CFLAGS/dump.o += -O0")))))
            (add-after 'unpack 'fix-x11-extension-include-path
              (lambda* (#:key inputs #:allow-other-keys)
                (substitute* "openjdk.src/jdk/make/sun/awt/mawt.gmk"
@@ -617,7 +625,8 @@
               (base32
                "17bdv39n4lh8l5737c96f3xgamx4y305m067p01cywgp7zaddqws"))
              (patches (search-patches
-                       "icedtea-7-hotspot-aarch64-use-c++98.patch"))))
+                       "icedtea-7-hotspot-aarch64-use-c++98.patch"
+                       "icedtea-7-hotspot-pointer-comparison.patch"))))
          ("ant" ,ant-bootstrap)
          ("attr" ,attr)
          ("classpath" ,classpath-devel)
@@ -858,6 +867,9 @@ new Date();"))
               (sha256
                (base32
                 "01ihmyf7k5z17wbr7xig7y40l9f01d5zjgkcmawn1102hw5kchpq"))
+              (patches (search-patches
+                        "openjdk-9-hotspot-pointer-comparison.patch"
+                        "openjdk-9-hotspot-stack-size.patch"))
               (modules '((guix build utils)))
               (snippet
                `(begin
@@ -1043,12 +1055,12 @@ new Date();"))
                (base32
                 "0zywq2203b4hx4jms9vbwvjcj1d3k2v3qpx4s33729fkpmid97r4"))
               (patches (search-patches
-                        "openjdk-10-idlj-reproducibility.patch"))
+                        "openjdk-10-idlj-reproducibility.patch"
+                        "openjdk-10-hotspot-pointer-comparison.patch"
+                        "openjdk-10-hotspot-stack-size.patch"))
               (modules '((guix build utils)))
               (snippet
-               `(begin
-                  (for-each delete-file (find-files "." ".*.(bin|exe|jar)$"))
-                  #t))))
+               '(for-each delete-file (find-files "." "\\.(bin|exe|jar)$")))))
     (arguments
      (substitute-keyword-arguments (package-arguments openjdk9)
        ((#:phases phases)
@@ -1420,7 +1432,8 @@ new Date();"))
         "0mbhdrk12b6878kby0flnbak7444dlpm0ihlmf92vk59y1c02bc2"))
       (modules '((guix build utils)))
       (snippet
-       '(for-each delete-file (find-files "." "\\.(bin|exe|jar)$")))))
+       '(for-each delete-file (find-files "." "\\.(bin|exe|jar)$")))
+      (patches (search-patches "openjdk-10-hotspot-stack-size.patch"))))
    (arguments
     (substitute-keyword-arguments (package-arguments openjdk11)
       ((#:phases phases)
@@ -1461,7 +1474,8 @@ blacklisted.certs.pem"
              (modules '())
              (snippet #f)
              (patches
-              (search-patches "openjdk-15-xcursor-no-dynamic.patch"))))
+              (append (search-patches "openjdk-15-xcursor-no-dynamic.patch")
+                      (origin-patches (package-source base))))))
    (inputs
     (modify-inputs (package-inputs base)
       (append libxcursor)))             ;for our patch to work