[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 1/3] mkstandalone: add argument --fixed-time to override mtime
From: |
Alexander Couzens |
Subject: |
[PATCH v3 1/3] mkstandalone: add argument --fixed-time to override mtime of files |
Date: |
Fri, 4 Dec 2015 19:32:20 +0100 |
mkstandalone adds several files to an archive. Doing this it uses the
mtime to give these files a timestamp.
--fixed-time <TIME_EPOCH> overrides these timestamps with a given.
Replacing all timestamps with a specific one is required
to get reproducible builds. See source epoch specification of
reproducible-builds.org
---
util/grub-mkstandalone.c | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/util/grub-mkstandalone.c b/util/grub-mkstandalone.c
index 4907d44..779c13c 100644
--- a/util/grub-mkstandalone.c
+++ b/util/grub-mkstandalone.c
@@ -30,6 +30,7 @@
#pragma GCC diagnostic error "-Wmissing-prototypes"
#pragma GCC diagnostic error "-Wmissing-declarations"
+static time_t fixed_time;
static char *output_image;
static char **files;
static int nfiles;
@@ -48,6 +49,7 @@ static struct argp_option options[] = {
0, N_("save output in FILE [required]"), 2},
{"format", 'O', N_("FILE"), 0, 0, 2},
{"compression", 'C', "xz|none|auto", OPTION_HIDDEN, 0, 2},
+ {"fixed-time", 0, N_("TIMEEPOCH"), 0, N_("Use a fixed timestamp to override
mtime of all files. Time since epoch is used."), 2},
{0, 0, 0, 0, 0, 0}
};
@@ -72,6 +74,7 @@ help_filter (int key, const char *text, void *input
__attribute__ ((unused)))
static error_t
argp_parser (int key, char *arg, struct argp_state *state)
{
+ char *b;
if (key == 'C')
key = GRUB_INSTALL_OPTIONS_INSTALL_CORE_COMPRESS;
@@ -80,6 +83,14 @@ argp_parser (int key, char *arg, struct argp_state *state)
switch (key)
{
+ case 't':
+ fixed_time = strtoll (arg, &b, 10);
+ if (*b !='\0') {
+ printf (_("invalid fixed time number: %s\n"), arg);
+ argp_usage (state);
+ exit (1);
+ }
+ break;
case 'o':
if (output_image)
@@ -192,7 +203,8 @@ add_tar_file (const char *from,
if (grub_util_is_special_file (from))
return;
- mtime = grub_util_get_mtime (from);
+ /* use fixed_time if given for mtime */
+ mtime = fixed_time != -1 ? fixed_time : grub_util_get_mtime (from);
optr = tcn = xmalloc (strlen (to) + 1);
for (iptr = to; *iptr == '/'; iptr++);
@@ -293,6 +305,7 @@ main (int argc, char *argv[])
const char *pkglibdir;
int i;
+ fixed_time = -1;
grub_util_host_init (&argc, &argv);
grub_util_disable_fd_syncs ();
--
2.6.3