Source: liblopsub
Version: 1.0.2-1
Severity: wishlist
Tags: patch
User: [email protected]
Usertags: toolchain timestamps
X-Debbugs-Cc: [email protected]
Hi,
Whilst working on the Reproducible Builds effort [0], we noticed
that liblopsub generates output that is not reproducible. The
lopsubgen utility does not respect SOURCE_DATE_EPOCH [1] and thus
packages such as src:tfortune are rendered unreproducible as they
then encode the build date and time.
Patch attached.
[0] https://reproducible-builds.org/
[1] https://reproducible-builds.org/specs/source-date-epoch/
Regards,
--
,''`.
: :' : Chris Lamb
`. `'` [email protected] / chris-lamb.co.uk
`-
diff --git a/lsg.c b/lsg.c
index 54b7816..bbad187 100644
--- a/lsg.c
+++ b/lsg.c
@@ -626,12 +626,19 @@ static void gen_man(struct lls_parse_result *lpr, const
char *cmdline)
if (suite.commands[0].name.orig) {
char date[200];
const char *version_string;
-
if (!suite.date) {
- t = time(NULL);
- tmp = localtime(&t);
+ /* Assume that the SOURCE_DATE_EPOCH environment
+ * variable will contan a correct, positive integer in
+ * the time_t range. See:
+ *
<https://reproducible-builds.org/specs/source-date-epoch/>
+ * for more information */
+ char *source_date_epoch;
+ if ((source_date_epoch = getenv("SOURCE_DATE_EPOCH"))
== NULL ||
+ (t = (time_t)strtoll(source_date_epoch, NULL,
10)) <= 0)
+ time(&t);
+ tmp = gmtime(&t);
if (tmp == NULL) {
- perror("localtime");
+ perror("gmtime");
exit(EXIT_FAILURE);
}
if (strftime(date, sizeof(date), "%B %Y", tmp) == 0) {