From b2942c76adc5bb6a3e073aa5cee57834ee3a9813 Mon Sep 17 00:00:00 2001 From: Malte Poll <1780588+malt3@users.noreply.github.com> Date: Fri, 20 Oct 2023 12:59:41 +0000 Subject: [PATCH] mkfs-util: set timezone to UTC when copying files into fat partition mcopy will set the modification time of created directories to the mtime of the source directories but converts it to the timezone of the host. This behavior is identical to Windows / DOS: > The FAT file system stores time values based on the local time of the computer. -- https://learn.microsoft.com/en-us/windows/win32/sysinfo/file-times To achieve reproducible builds, mcopy should be invoked with TZ=UTC. Co-authored-by: Paul Meyer <49727155+katexochen@users.noreply.github.com> --- src/shared/mkfs-util.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shared/mkfs-util.c b/src/shared/mkfs-util.c index 89384d92df..e8356de2b7 100644 --- a/src/shared/mkfs-util.c +++ b/src/shared/mkfs-util.c @@ -161,7 +161,7 @@ static int do_mcopy(const char *node, const char *root) { if (r == 0) { /* Avoid failures caused by mismatch in expectations between mkfs.vfat and mcopy by disabling * the stricter mcopy checks using MTOOLS_SKIP_CHECK. */ - execve(mcopy, argv, STRV_MAKE("MTOOLS_SKIP_CHECK=1", strv_find_prefix(environ, "SOURCE_DATE_EPOCH="))); + execve(mcopy, argv, STRV_MAKE("MTOOLS_SKIP_CHECK=1", "TZ=UTC", strv_find_prefix(environ, "SOURCE_DATE_EPOCH="))); log_error_errno(errno, "Failed to execute mcopy: %m");