Fix variation in timestamps caused by timezone differences.
When building with SOURCE_DATE_EPOCH set, avoid use of mktime in default_image.c, which converts the timestamp into localtime. This causes variation based on timezone when building u-boot.img and u-boot-sunxi-with-spl.bin targets. Signed-off-by: Vagrant Cascadian <vagrant@debian.org> Tested-by: Paul Kocialkowski <contact@paulk.fr> Acked-by: Paul Kocialkowski <contact@paulk.fr>utp
parent
1fec3c5d83
commit
0219e4bfb4
|
@ -89,7 +89,6 @@ static void image_set_header(void *ptr, struct stat *sbuf, int ifd,
|
||||||
{
|
{
|
||||||
uint32_t checksum;
|
uint32_t checksum;
|
||||||
char *source_date_epoch;
|
char *source_date_epoch;
|
||||||
struct tm *time_universal;
|
|
||||||
time_t time;
|
time_t time;
|
||||||
|
|
||||||
image_header_t * hdr = (image_header_t *)ptr;
|
image_header_t * hdr = (image_header_t *)ptr;
|
||||||
|
@ -103,13 +102,10 @@ static void image_set_header(void *ptr, struct stat *sbuf, int ifd,
|
||||||
if (source_date_epoch != NULL) {
|
if (source_date_epoch != NULL) {
|
||||||
time = (time_t) strtol(source_date_epoch, NULL, 10);
|
time = (time_t) strtol(source_date_epoch, NULL, 10);
|
||||||
|
|
||||||
time_universal = gmtime(&time);
|
if (gmtime(&time) == NULL) {
|
||||||
if (time_universal == NULL) {
|
|
||||||
fprintf(stderr, "%s: SOURCE_DATE_EPOCH is not valid\n",
|
fprintf(stderr, "%s: SOURCE_DATE_EPOCH is not valid\n",
|
||||||
__func__);
|
__func__);
|
||||||
time = 0;
|
time = 0;
|
||||||
} else {
|
|
||||||
time = mktime(time_universal);
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
time = sbuf->st_mtime;
|
time = sbuf->st_mtime;
|
||||||
|
|
Loading…
Reference in New Issue