[SLOF] [PATCH] Allow to override build date with SOURCE_DATE_EPOCH

Bernhard M. Wiedemann bwiedemann at suse.de
Mon Oct 23 19:39:49 AEDT 2023


in order to make builds reproducible.
See https://reproducible-builds.org/ for why this is good
and https://reproducible-builds.org/specs/source-date-epoch/
for the definition of this variable.

Without this patch, openSUSE's qemu package
always varied between builds.

This patch was done while working on reproducible builds for openSUSE.

This is an alternative to
https://lists.ozlabs.org/pipermail/slof/2023-October/002895.html

Signed-off-by: Bernhard M. Wiedemann <bwiedemann at suse.de>
---
 romfs/tools/create_crc.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/romfs/tools/create_crc.c b/romfs/tools/create_crc.c
index abc373b..9122e3c 100644
--- a/romfs/tools/create_crc.c
+++ b/romfs/tools/create_crc.c
@@ -95,7 +95,13 @@ createHeaderImage(int notime)
 
 	if (!notime) {
 		/* read time and write it into data stream */
-		if ((caltime = time(NULL)) == -1) {
+		char *source_date_epoch;
+		/* This assumes that (if used) the SOURCE_DATE_EPOCH environment variable
+		   will contain a correct, positive integer in the time_t range */
+		if ((source_date_epoch = getenv("SOURCE_DATE_EPOCH")) == NULL ||
+			(caltime = (time_t)strtoll(source_date_epoch, NULL, 10)) <= 0)
+			time(&caltime);
+		if (caltime == -1) {
 			printf("time error\n");
 		}
 		if ((tm = localtime(&caltime)) == NULL) {
-- 
2.26.2



More information about the SLOF mailing list