From b0a26e7f25f07bc7eb0cb4a2b54fa42e287963cecda2a1d5183d357f5bf84155 Mon Sep 17 00:00:00 2001 From: Fridrich Strba Date: Fri, 4 Aug 2023 17:13:32 +0000 Subject: [PATCH] OBS-URL: https://build.opensuse.org/package/show/Java:Factory/java-17-openjdk?expand=0&rev=104 --- java-17-openjdk.changes | 8 ++++ java-17-openjdk.spec | 4 ++ reproducible-javadoc-timestamp.patch | 60 ++++++++++++++++++++++++++++ 3 files changed, 72 insertions(+) create mode 100644 reproducible-javadoc-timestamp.patch diff --git a/java-17-openjdk.changes b/java-17-openjdk.changes index 94d06b9..0828cb0 100644 --- a/java-17-openjdk.changes +++ b/java-17-openjdk.changes @@ -1,3 +1,11 @@ +------------------------------------------------------------------- +Fri Aug 4 15:49:22 UTC 2023 - Fridrich Strba + +- Added patch: + * reproducible-javadoc-timestamp.patch + + use SOURCE_DATE_EPOCH in javadoc and make the javadoc + generation more reproducible + ------------------------------------------------------------------- Tue Jul 25 06:21:18 UTC 2023 - Fridrich Strba diff --git a/java-17-openjdk.spec b/java-17-openjdk.spec index c4f7ca0..80ff71e 100644 --- a/java-17-openjdk.spec +++ b/java-17-openjdk.spec @@ -170,6 +170,8 @@ Patch17: nss-security-provider.patch # Patch20: loadAssistiveTechnologies.patch # +Patch21: reproducible-javadoc-timestamp.patch +# # OpenJDK specific patches # Patch200: ppc_stack_overflow_fix.patch @@ -413,6 +415,8 @@ rm -rvf src/java.desktop/share/native/liblcms/lcms2* %patch20 -p1 +%patch21 -p1 + %patch200 -p1 %patch300 -p1 diff --git a/reproducible-javadoc-timestamp.patch b/reproducible-javadoc-timestamp.patch new file mode 100644 index 0000000..35a6332 --- /dev/null +++ b/reproducible-javadoc-timestamp.patch @@ -0,0 +1,60 @@ +--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlConfiguration.java ++++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlConfiguration.java +@@ -213,6 +213,12 @@ public class HtmlConfiguration extends BaseConfiguration { + } + docletVersion = v; + ++ if (System.getenv("SOURCE_DATE_EPOCH") != null) { ++ startTime = new Date(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH"))); ++ } else { ++ startTime = new Date(); ++ } ++ + conditionalPages = EnumSet.noneOf(ConditionalPage.class); + } + protected void initConfiguration(DocletEnvironment docEnv, +@@ -223,7 +229,7 @@ public class HtmlConfiguration extends BaseConfiguration { + } + + private final Runtime.Version docletVersion; +- public final Date startTime = new Date(); ++ public final Date startTime; + + @Override + public Runtime.Version getDocletVersion() { +--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Head.java ++++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Head.java +@@ -33,6 +33,7 @@ import java.util.Arrays; + import java.util.Collections; + import java.util.Date; + import java.util.List; ++import java.util.TimeZone; + + import jdk.javadoc.internal.doclets.toolkit.Content; + import jdk.javadoc.internal.doclets.toolkit.util.DocPath; +@@ -265,6 +266,9 @@ public class Head extends Content { + + if (showTimestamp) { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); ++ if (System.getenv("SOURCE_DATE_EPOCH") != null) { ++ dateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); ++ } + tree.add(HtmlTree.META("dc.created", dateFormat.format(generatedDate))); + } + +@@ -298,7 +302,14 @@ public class Head extends Content { + String text = "Generated by javadoc"; // marker string, deliberately not localized + text += " (" + docletVersion.feature() + ")"; + if (timestamp) { +- text += " on " + now; ++ text += " on "; ++ if (System.getenv("SOURCE_DATE_EPOCH") == null) { ++ text += now; ++ } else { ++ SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z"); ++ fmt.setTimeZone(TimeZone.getTimeZone("UTC")); ++ text += fmt.format(now); ++ } + } + return new Comment(text); + }