File reproducible.patch of Package fonttosfnt

From 5fb8b61537b832561f074a6d400956c8cb6b31a5 Mon Sep 17 00:00:00 2001
From: "Bernhard M. Wiedemann" <bwiedemann@suse.de>
Date: Wed, 24 Jul 2024 16:27:35 +0200
Subject: [PATCH 1/2] Use long long for timestamp diff

to avoid integer overflows in the future

Part-of: <https://gitlab.freedesktop.org/xorg/app/fonttosfnt/-/merge_requests/22>
---
 util.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/util.c b/util.c
index a393e55..a810c87 100644
--- a/util.c
+++ b/util.c
@@ -181,7 +181,7 @@ mktime_gmt(struct tm *tm)
 int
 macTime(int *hi, unsigned *lo)
 {
-    unsigned long diff;		/* Not time_t */
+    unsigned long long diff;		/* Not time_t */
     time_t macEpoch, current;
     struct tm tm;
     tm.tm_sec = 0;
-- 
GitLab


From 2a6a5574001d7a9959ba4d924522b96f8cc57b43 Mon Sep 17 00:00:00 2001
From: "Bernhard M. Wiedemann" <bwiedemann@suse.de>
Date: Wed, 24 Jul 2024 16:28:43 +0200
Subject: [PATCH 2/2] Allow to override build date with SOURCE_DATE_EPOCH

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.

This patch was done while working on reproducible builds for openSUSE, sponsored by the NLnet NGI0 fund.

Part-of: <https://gitlab.freedesktop.org/xorg/app/fonttosfnt/-/merge_requests/22>
---
 util.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/util.c b/util.c
index a810c87..a7207f8 100644
--- a/util.c
+++ b/util.c
@@ -182,6 +182,7 @@ int
 macTime(int *hi, unsigned *lo)
 {
     unsigned long long diff;		/* Not time_t */
+    char *source_date_epoch;
     time_t macEpoch, current;
     struct tm tm;
     tm.tm_sec = 0;
@@ -195,7 +196,11 @@ macTime(int *hi, unsigned *lo)
     macEpoch = mktime_gmt(&tm);
     if(macEpoch == -1) return -1;
 
-    current = time(NULL);
+    /* This assumes that 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 ||
+        (current = (time_t)strtoll(source_date_epoch, NULL, 10)) <= 0)
+            current = time(NULL);
     if(current == -1)
         return -1;
 
-- 
GitLab

openSUSE Build Service is sponsored by