From 08bc29fba8f2e660e454c9e93ab44b558d109498 Mon Sep 17 00:00:00 2001 From: "Bernhard M. Wiedemann" Date: Mon, 23 Oct 2023 09:12:42 +0000 Subject: Allow to override build date with SOURCE_DATE_EPOCH 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 Reviewed-by: Thomas Huth Signed-off-by: Alexey Kardashevskiy --- 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..4a30e48 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 set) 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) + caltime = time(NULL); + if (caltime == -1) { printf("time error\n"); } if ((tm = localtime(&caltime)) == NULL) { -- cgit v1.1