1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
From: Rob Browning <rlb@defaultvalue.org>
Date: Sat, 3 May 2025 16:25:44 -0500
Subject: write-pom: make pom.properties generated date reproducible
Defer to SOURCE_DATE_EPOCH for pom.properties generated date, and
switch to TZ-invariant UTC representation.
Bug-Debian: https://bugs.debian.org/1095578
Forwarded: https://ask.clojure.org/index.php/14389/please-consider-making-properties-reproducible-generated
---
.../clojure/clojure/tools/build/tasks/write_pom.clj | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/src/main/clojure/clojure/tools/build/tasks/write_pom.clj b/src/main/clojure/clojure/tools/build/tasks/write_pom.clj
index fa9cb5b..ea1cce3 100644
--- a/src/main/clojure/clojure/tools/build/tasks/write_pom.clj
+++ b/src/main/clojure/clojure/tools/build/tasks/write_pom.clj
@@ -21,7 +21,8 @@
[clojure.tools.build.util.file :as file])
(:import [clojure.data.xml.node Element]
[java.io Reader]
- [java.util Date]))
+ [java.time Instant ZoneId ZonedDateTime]
+ [java.time.format DateTimeFormatter]))
(xml/alias-uri 'pom "http://maven.apache.org/POM/4.0.0")
(def ^:private pom-ns (name (.-name ^clojure.lang.Namespace (get (ns-aliases *ns*) 'pom))))
@@ -271,7 +272,13 @@
(spit (jio/file pom-dir-file "pom.properties")
(str/join (System/lineSeparator)
["# Generated by org.clojure/tools.build"
- (format "# %tc" (Date.))
+ (let [dtf (DateTimeFormatter/ofPattern "E MMM d HH:mm:ss 'UTC' u")
+ inst (or (some-> "SOURCE_DATE_EPOCH"
+ System/getenv
+ parse-long
+ Instant/ofEpochSecond)
+ (Instant/now))]
+ (str "# " (.format dtf (ZonedDateTime/ofInstant inst (ZoneId/of "Z")))))
(format "version=%s" version)
(format "groupId=%s" (namespace lib))
(format "artifactId=%s" (name lib))]))))
--
2.47.2
|