mtd-utils/mkfs.jffs2: honor env SOURCE_DATE_EPOCH
Use the timestamp from the enviroment SOURCE_DATE_EPOCH if set instead of the build time. Signed-off-by: Alexander Couzens <lynxis@fe80.eu>
This commit is contained in:
		| @@ -0,0 +1,62 @@ | ||||
| Index: mtd-utils-1.5.2/mkfs.jffs2.c | ||||
| =================================================================== | ||||
| --- mtd-utils-1.5.2.orig/mkfs.jffs2.c | ||||
| +++ mtd-utils-1.5.2/mkfs.jffs2.c | ||||
| @@ -108,7 +108,7 @@ static char *rootdir = default_rootdir; | ||||
|  static int verbose = 0; | ||||
|  static int squash_uids = 0; | ||||
|  static int squash_perms = 0; | ||||
| -static int fake_times = 0; | ||||
| +static time_t fixed_timestamp = -1; | ||||
|  int target_endian = __BYTE_ORDER; | ||||
|   | ||||
|  uint32_t find_hardlink(struct filesystem_entry *e) | ||||
| @@ -249,8 +249,8 @@ static struct filesystem_entry *add_host | ||||
|  			mode &= ~(S_ISUID | S_ISGID); | ||||
|  		} | ||||
|  	} | ||||
| -	if (fake_times) { | ||||
| -		timestamp = 0; | ||||
| +	if (fixed_timestamp != -1) { | ||||
| +		timestamp = fixed_timestamp; | ||||
|  	} | ||||
|   | ||||
|  	entry = xcalloc(1, sizeof(struct filesystem_entry)); | ||||
| @@ -1554,6 +1554,20 @@ void parse_image(){ | ||||
|  	close(in_fd); | ||||
|  } | ||||
|   | ||||
| +static void set_source_date_epoch() { | ||||
| +	char *env = getenv("SOURCE_DATE_EPOCH"); | ||||
| +	char *endptr = env; | ||||
| +	errno = 0; | ||||
| +	if (env && *env) { | ||||
| +		fixed_timestamp = strtoull(env, &endptr, 10); | ||||
| +		if (errno || (endptr && *endptr != '\0')) { | ||||
| +			fprintf(stderr, "Invalid SOURCE_DATE_EPOCH"); | ||||
| +			exit(1); | ||||
| +		} | ||||
| +	} | ||||
| +} | ||||
| + | ||||
| + | ||||
|  int main(int argc, char **argv) | ||||
|  { | ||||
|  	int c, opt; | ||||
| @@ -1572,6 +1586,7 @@ int main(int argc, char **argv) | ||||
|  		warn_page_size = 1; /* warn user if page size not 4096 */ | ||||
|   | ||||
|  	jffs2_compressors_init(); | ||||
| +	set_source_date_epoch(); | ||||
|   | ||||
|  	while ((opt = getopt_long(argc, argv, | ||||
|  					"D:d:r:s:o:qUPfh?vVe:lbp::nc:m:x:X:Lty:i:", long_options, &c)) >= 0) | ||||
| @@ -1622,7 +1637,7 @@ int main(int argc, char **argv) | ||||
|  				break; | ||||
|   | ||||
|  			case 'f': | ||||
| -				fake_times = 1; | ||||
| +				fixed_timestamp = 0; | ||||
|  				break; | ||||
|   | ||||
|  			case 'h': | ||||
		Reference in New Issue
	
	Block a user
	 Alexander Couzens
					Alexander Couzens