Subject: [bug#33041] [PATCH] gnu: icedtea-6: Make javadoc reproducible.

From: Kei Kebreau <[email-masked]>
Date: Thu, 10 Dec 2020 16:31:33 -0500

Hi all,

I came across this bug and had some time to attempt to make the
suggested changes.  Please find the updated patch attached and let me
know if it still works as intended.

Best,
Kei

From e3bc8635e8730e33c2e4f9658dacb6f2f669d8bb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?G=C3=A1bor=20Boskovits?= <[email-masked]>
Date: Sun, 14 Oct 2018 21:06:55 +0200
Subject: [PATCH] gnu: icedtea-6: Make javadoc reproducible.

* gnu/packages/patches/icedtea-6-javadoc-reproducibility.patch: New file.
* gnu/packages/java.scm[icedtea-6](native-inputs): Add patch to langtools-src.
(phases)[unpack]: Adjust unpacking of patched source.
* gnu/local.mk[dist_patch_DATA]: Register it.
---
 gnu/local.mk                                  |  1 +
 gnu/packages/java.scm                         |  9 +++++--
 .../icedtea-6-javadoc-reproducibility.patch   | 25 +++++++++++++++++++
 3 files changed, 33 insertions(+), 2 deletions(-)
 create mode 100644 gnu/packages/patches/icedtea-6-javadoc-reproducibility.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 9284e487fe..9a1b98eb16 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1169,6 +1169,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/icecat-use-system-graphite2+harfbuzz.patch	\
   %D%/packages/patches/icecat-use-system-media-libs.patch	\
   %D%/packages/patches/icedtea-6-extend-hotspot-aarch64-support.patch	\
+  %D%/packages/patches/icedtea-6-javadoc-reproducibility.patch	\
   %D%/packages/patches/icedtea-7-hotspot-aarch64-use-c++98.patch	\
   %D%/packages/patches/icu4c-CVE-2020-10531.patch  		\
   %D%/packages/patches/id3lib-CVE-2007-4460.patch			\
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index e298fd9537..deaa9e1fcd 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -892,7 +892,10 @@ machine.")))
                                        (string-append part "-src"))
                             part))
                          '("jdk" "hotspot" "corba"
-                           "langtools" "jaxp" "jaxws")))
+                           "jaxp" "jaxws")))
+             (with-directory-excursion "openjdk"
+               (invoke "tar" "xvf" (assoc-ref inputs "langtools-src"))
+               (rename-file "hg-checkout" "langtools"))
              (substitute* "patches/freetypeversion.patch"
                (("REQUIRED_FREETYPE_VERSION = 2.2.1")
                 "REQUIRED_FREETYPE_VERSION = 2.10.1"))
@@ -1136,7 +1139,9 @@ machine.")))
                  (changeset "jdk6-b41")))
            (sha256
             (base32
-             "1x52wd67fynbbd9ild6fb4wvba3f5hhwk03qdjfazd0a1qr37z3d"))))
+             "1x52wd67fynbbd9ild6fb4wvba3f5hhwk03qdjfazd0a1qr37z3d"))
+           (patches
+            (search-patches "icedtea-6-javadoc-reproducibility.patch"))))
        ("jaxp-src"
         ,(origin
            (method hg-fetch)
diff --git a/gnu/packages/patches/icedtea-6-javadoc-reproducibility.patch b/gnu/packages/patches/icedtea-6-javadoc-reproducibility.patch
new file mode 100644
index 0000000000..dd472a9c66
--- /dev/null
+++ b/gnu/packages/patches/icedtea-6-javadoc-reproducibility.patch
@@ -0,0 +1,25 @@
+# HG changeset patch
+# User Gábor Boskovits <[email-masked]>
+# Date 1539456874 -7200
+#      Sat Oct 13 20:54:34 2018 +0200
+# Node ID 6e5f716a659247888c104f66c58bf40fb959c8a4
+# Parent  06656286f572cbf716397b9d983f8dee7d94f913
+Make javadoc respect SOURCE_DATE_EPOCH.
+
+diff -r 06656286f572 src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlDocWriter.java
+--- a/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlDocWriter.java	Mon Aug 22 10:53:55 2016 -0700
++++ b/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlDocWriter.java	Wed Dec 09 21:40:00 2020 -0500
+@@ -396,6 +396,12 @@
+      */
+     public String today() {
+         Calendar calendar = new GregorianCalendar(TimeZone.getDefault());
+-        return calendar.getTime().toString();
++        Date date=calendar.getTime();
++        String epoch=System.getenv("SOURCE_DATE_EPOCH");
++        if(epoch != null) {
++            long unixtime=Long.parseLong(epoch);
++            date=new Date(unixtime*1000L);
++	}
++	return date.toString();
+     }
+ }
-- 
2.29.2

Gábor Boskovits <[email-masked]> writes:

> Ok, I will look into it.
>
> Ricardo Wurmus <[email-masked]> ezt írta (időpont: 2020. máj. 14., Csü 19:59):
>
>  Hi Gábor,
>
>  looks like we dropped this issue.  Would you like to rebase it, include
>  Danny’s suggestions, and push it?  I’d very much like to close bug #30927.
>
>  -- 
>  Ricardo