~ruther/guix-local

edf8fc9a485298e9bdb3793221c75d0a4a18177d — Danny Milosavljevic 2 years ago 48ea1a2
gnu: openjdk11: Make more reproducible.

* gnu/packages/java.scm (openjdk11)[source]: Add patch.
[arguments]<#:phases>[remove-timestamping]: Add phase.
* gnu/packages/patches/openjdk-11-classlist-reproducibility.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.

Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Modified-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Change-Id: I67f1b7746a2c7016aec32c438b94d24a16bc77b2
M gnu/local.mk => gnu/local.mk +1 -0
@@ 1840,6 1840,7 @@ dist_patch_DATA =						\
  %D%/packages/patches/openjdk-10-module4-reproducibility.patch	\
  %D%/packages/patches/openjdk-10-pointer-comparison.patch      \
  %D%/packages/patches/openjdk-10-setsignalhandler.patch        \
  %D%/packages/patches/openjdk-11-classlist-reproducibility.patch	\
  %D%/packages/patches/openjdk-15-xcursor-no-dynamic.patch	\
  %D%/packages/patches/openjdk-21-fix-rpath.patch		\
  %D%/packages/patches/openmpi-mtl-priorities.patch		\

M gnu/packages/java.scm => gnu/packages/java.scm +18 -3
@@ 1303,8 1303,14 @@ new Date();"))
              (modules '((guix build utils)))
              (snippet
               '(for-each delete-file (find-files "." "\\.(bin|exe|jar)$")))
              (patches (search-patches
                        "openjdk-currency-time-bomb2.patch"))))
              (patches
               (search-patches "openjdk-10-module3-reproducibility.patch"
                               "openjdk-10-module4-reproducibility.patch"
                               "openjdk-10-char-reproducibility.patch"
                               "openjdk-11-classlist-reproducibility.patch"
                               "openjdk-10-jar-reproducibility.patch"
                               "openjdk-10-jtask-reproducibility.patch"
                               "openjdk-currency-time-bomb2.patch"))))
    (build-system gnu-build-system)
    (outputs '("out" "jdk" "doc"))
    (arguments


@@ 1338,6 1344,10 @@ new Date();"))
         "--with-libjpeg=system"
         "--with-libpng=system"
         "--with-version-pre="
         ;; Should be set by SOURCE_DATE_EPOCH handler, but isn't being
         ;; set; do it manually.
         "--with-hotspot-build-time=1970-01-01T00:00:01"
         "--enable-reproducible-build"  ; to be sure
         ;; Allow the build system to locate the system freetype.
         (string-append "--with-freetype-include="
                        #$(this-package-input "freetype") "/include")


@@ 1351,6 1361,11 @@ new Date();"))
              ;; this exact first line.
              (substitute* "make/data/blockedcertsconverter/blocked.certs.pem"
                (("^#!.*") "#! java BlockedCertsConverter SHA-256\n"))))
          (add-after 'unpack 'remove-timestamping
            (lambda _
              (substitute* "src/hotspot/share/runtime/abstract_vm_version.cpp"
                (("__DATE__") "")
                (("__TIME__") ""))))
          (add-after 'unpack 'patch-jni-libs
            ;; Hardcode dynamically loaded libraries.
            (lambda _


@@ 1551,7 1566,7 @@ new Date();"))
           libxtst))
    (native-inputs
     (list autoconf
           bash                     ; not bash-minimal, needs ulimit
           bash                         ; not bash-minimal, needs ulimit
           openjdk10
           `(,openjdk10 "jdk")
           gnu-make-4.2

A gnu/packages/patches/openjdk-11-classlist-reproducibility.patch => gnu/packages/patches/openjdk-11-classlist-reproducibility.patch +11 -0
@@ 0,0 1,11 @@
--- jdk-11.0.13-ga/make/GenerateLinkOptData.gmk.orig	2022-04-04 17:18:56.801929954 +0200
+++ jdk-11.0.13-ga/make/GenerateLinkOptData.gmk	2022-04-04 17:19:14.962422622 +0200
@@ -66,7 +66,7 @@
 	    -cp $(SUPPORT_OUTPUTDIR)/classlist.jar \
 	    build.tools.classlist.HelloClasslist \
 	    $(LOG_DEBUG) 2>&1 > $(JLI_TRACE_FILE)
-	$(GREP) -v HelloClasslist $@.raw > $@
+	$(GREP) -v HelloClasslist $@.raw |sort > $@
 
 # The jli trace is created by the same recipe as classlist. By declaring these
 # dependencies, make will correctly rebuild both jli trace and classlist