Remove "--mtime" option introduced in commit 18c9faa032 ("tools: zip:
add option for reproducible archives") and instead fetch SOURCE_DATE_EPOCH
environment variable directly in the code.
Ref: https://sourceforge.net/p/infozip/patches/25/
Signed-off-by: Sungbo Eo <mans0n@gorani.run>
		
	
		
			
				
	
	
		
			42 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
From 501ae4e93fd6fa2f7d20d00d1b011f9006802eae Mon Sep 17 00:00:00 2001
 | 
						|
From: "Bernhard M. Wiedemann" <bwiedemann@suse.de>
 | 
						|
Date: Fri, 3 May 2019 16:32:24 +0200
 | 
						|
Subject: [PATCH] Override mtime with zip -X
 | 
						|
 | 
						|
with SOURCE_DATE_EPOCH
 | 
						|
to allow for reproducible builds of .zip files
 | 
						|
 | 
						|
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.
 | 
						|
 | 
						|
Uses clamping to keep older mtimes than SOURCE_DATE_EPOCH intact.
 | 
						|
---
 | 
						|
 zipup.c | 8 ++++++++
 | 
						|
 1 file changed, 8 insertions(+)
 | 
						|
 | 
						|
--- a/zipup.c
 | 
						|
+++ b/zipup.c
 | 
						|
@@ -414,6 +414,7 @@ struct zlist far *z;    /* zip entry to
 | 
						|
   ush tempcext = 0;
 | 
						|
   char *tempextra = NULL;
 | 
						|
   char *tempcextra = NULL;
 | 
						|
+  const char *source_date_epoch;
 | 
						|
 
 | 
						|
 
 | 
						|
 #ifdef WINDLL
 | 
						|
@@ -674,6 +675,13 @@ struct zlist far *z;    /* zip entry to
 | 
						|
 
 | 
						|
   } /* strcmp(z->name, "-") == 0 */
 | 
						|
 
 | 
						|
+  if (extra_fields == 0 && (source_date_epoch = getenv("SOURCE_DATE_EPOCH")) != NULL) {
 | 
						|
+     time_t epoch = strtoull(source_date_epoch, NULL, 10);
 | 
						|
+     if (epoch > 0) {
 | 
						|
+       ulg epochtim = unix2dostime(&epoch);
 | 
						|
+       if (z->tim > epochtim) z->tim = epochtim;
 | 
						|
+     }
 | 
						|
+  }
 | 
						|
   if (extra_fields == 2) {
 | 
						|
     unsigned len;
 | 
						|
     char *p;
 |