grub-devel.gnu.org archive mirror
 help / color / mirror / Atom feed
From: Alexander Couzens <lynxis@fe80.eu>
To: grub-devel@gnu.org
Cc: Alexander Couzens <lynxis@fe80.eu>
Subject: [PATCH v3 1/3] mkstandalone: add argument --fixed-time to override mtime of files
Date: Fri,  4 Dec 2015 19:32:20 +0100	[thread overview]
Message-ID: <1449253942-29510-2-git-send-email-lynxis@fe80.eu> (raw)
In-Reply-To: <1449253942-29510-1-git-send-email-lynxis@fe80.eu>
In-Reply-To: <1449245444-17579-1-git-send-email-lynxis@fe80.eu>

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



  parent reply	other threads:[~2015-12-04 18:32 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-04 16:10 [PATCH 0/3] reproducible builds Alexander Couzens
2015-12-04 16:10 ` [PATCH 1/3] mkstandalone: add argument --fixed-time to override mtime of files Alexander Couzens
2015-12-04 18:00   ` Vladimir 'φ-coder/phcoder' Serbinenko
2015-12-05  6:35     ` Andrei Borzenkov
2015-12-04 16:10 ` [PATCH 2/3] mkrescue: add argument --fixed-time to get reproducible uuids Alexander Couzens
2015-12-04 16:10 ` [PATCH 3/3] Makefile: use FIXED_TIMESTAMP for mkstandalone if set Alexander Couzens
2015-12-04 16:48   ` Alexander Couzens
2015-12-04 17:09     ` [PATCH] Makefile/coreboot use SOURCE_DATE_EPOCH as time source " Alexander Couzens
2015-12-04 18:01   ` [PATCH 3/3] Makefile: use FIXED_TIMESTAMP for mkstandalone " Vladimir 'φ-coder/phcoder' Serbinenko
2015-12-04 18:32 ` [PATCH v3 0/3] reproducible builds Alexander Couzens
2015-12-05  6:28   ` Andrei Borzenkov
2015-12-05 11:43     ` Alexander Couzens
2015-12-04 18:32 ` Alexander Couzens [this message]
2015-12-14 14:47   ` [PATCH v3 1/3] mkstandalone: add argument --fixed-time to override mtime of files Vladimir 'φ-coder/phcoder' Serbinenko
2015-12-04 18:32 ` [PATCH v3 2/3] mkrescue: add argument --fixed-time to get reproducible uuids Alexander Couzens
2015-12-14 15:22   ` Vladimir 'φ-coder/phcoder' Serbinenko
2015-12-15 15:46     ` Andrei Borzenkov
2015-12-15 16:02       ` Vladimir 'phcoder' Serbinenko
2015-12-15 16:48       ` Thomas Schmitt
2015-12-04 18:32 ` [PATCH v3 3/3] Makefile/coreboot use SOURCE_DATE_EPOCH as time source if set Alexander Couzens
2015-12-14 15:23   ` Vladimir 'φ-coder/phcoder' Serbinenko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1449253942-29510-2-git-send-email-lynxis@fe80.eu \
    --to=lynxis@fe80.eu \
    --cc=grub-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).