Control: tags -1 + patch
Here is a patch adding SOURCE_DATE_EPOCH support to the javadoc tool.
Description: Makes the timestamp in the javadoc files reproducible when SOURCE_DATE_EPOCH is specified Author: Emmanuel Bourg <ebo...@apache.org> Forwarded: no --- 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 @@ -256,6 +256,9 @@ */ public Content toContent() { Date now = showTimestamp ? calendar.getTime() : null; + if (now != null && System.getenv("SOURCE_DATE_EPOCH") != null) { + now = new Date(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH"))); + } HtmlTree tree = new HtmlTree(HtmlTag.HEAD); if (showGeneratedBy) { @@ -269,6 +272,9 @@ if (showMetaCreated) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + if (System.getenv("SOURCE_DATE_EPOCH") != null) { + dateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); + } tree.addContent(HtmlTree.META( (htmlVersion == HtmlVersion.HTML5) ? "dc.created" : "date", dateFormat.format(now))); @@ -298,7 +304,14 @@ private Comment getGeneratedBy(boolean timestamp, Date now) { String text = "Generated by javadoc"; // marker string, deliberately not localized if (timestamp) { - text += " ("+ docletVersion + ") on " + now; + text += " ("+ docletVersion + ") 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); }