File reproducible.patch of Package mxml
From b79d3e0f07495b4a113f1ad95ae08c19664ea5ac Mon Sep 17 00:00:00 2001
From: Michael Sweet <michael.r.sweet@gmail.com>
Date: Sun, 23 Apr 2017 12:49:40 -0400
Subject: [PATCH] Add support for SOURCE_DATE_EPOCH environment variable (Issue
#193)
---
CHANGES.md | 2 ++
doc/mxml.man | 2 +-
mxmldoc.c | 9 ++++++++-
3 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/mxmldoc.c b/mxmldoc.c
index 7f475ef..4abe707 100644
--- a/mxmldoc.c
+++ b/mxmldoc.c
@@ -5604,6 +5604,7 @@ write_man(const char *man_name, /* I - Name of manpage */
*parent; /* Parent class */
int inscope; /* Variable/method scope */
char prefix; /* Prefix character */
+ const char *source_date_epoch; /* SOURCE_DATE_EPOCH environment variable */
time_t curtime; /* Current time */
struct tm *curdate; /* Current date */
char buffer[1024]; /* String buffer */
@@ -5617,9 +5618,15 @@ write_man(const char *man_name, /* I - Name of manpage */
/*
* Standard man page...
+ *
+ * Get the current date, using the SOURCE_DATE_EPOCH environment variable, if
+ * present, for the number of seconds since the epoch - this enables
+ * reproducible builds (Issue #193).
*/
- curtime = time(NULL);
+ if ((source_date_epoch = getenv("SOURCE_DATE_EPOCH")) == NULL || (curtime = (time_t)strtol(source_date_epoch, NULL, 10)) <= 0)
+ curtime = time(NULL);
+
curdate = localtime(&curtime);
strftime(buffer, sizeof(buffer), "%x", curdate);