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
This commit is contained in:
Danny Milosavljevic 2023-07-31 20:09:15 +02:00 committed by Ludovic Courtès
parent 48ea1a2b3b
commit edf8fc9a48
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5
3 changed files with 30 additions and 3 deletions

View file

@ -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 \

View file

@ -1303,7 +1303,13 @@ (define-public openjdk11
(modules '((guix build utils)))
(snippet
'(for-each delete-file (find-files "." "\\.(bin|exe|jar)$")))
(patches (search-patches
(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"))
@ -1338,6 +1344,10 @@ (define-public openjdk11
"--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 @@ (define-public openjdk11
;; 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 _

View file

@ -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