diff options
author | Danny Milosavljevic <dannym@scratchpost.org> | 2023-07-31 20:09:15 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2024-08-31 10:44:39 +0200 |
commit | edf8fc9a485298e9bdb3793221c75d0a4a18177d (patch) | |
tree | b5f66c94b7b923285a2bc5261b13ba635f4bbf2b /gnu | |
parent | 48ea1a2b3b8bc4c8b2247972401ab5a6f7f4ecc7 (diff) | |
download | guix-edf8fc9a485298e9bdb3793221c75d0a4a18177d.tar guix-edf8fc9a485298e9bdb3793221c75d0a4a18177d.tar.gz |
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
Diffstat (limited to 'gnu')
-rw-r--r-- | gnu/local.mk | 1 | ||||
-rw-r--r-- | gnu/packages/java.scm | 21 | ||||
-rw-r--r-- | gnu/packages/patches/openjdk-11-classlist-reproducibility.patch | 11 |
3 files changed, 30 insertions, 3 deletions
diff --git a/gnu/local.mk b/gnu/local.mk index d8966dd016..591c415ea2 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -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 \ diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm index 91ab61ad13..4188285a07 100644 --- a/gnu/packages/java.scm +++ b/gnu/packages/java.scm @@ -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 diff --git a/gnu/packages/patches/openjdk-11-classlist-reproducibility.patch b/gnu/packages/patches/openjdk-11-classlist-reproducibility.patch new file mode 100644 index 0000000000..2ac7c2b664 --- /dev/null +++ b/gnu/packages/patches/openjdk-11-classlist-reproducibility.patch @@ -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 |