[Reproducible-commits] [dpkg] 50/54: Support SOURCE_DATE_EPOCH for ar headers

Mattia Rizzolo mattia at debian.org
Fri Jan 15 18:54:04 UTC 2016


This is an automated email from the git hooks/post-receive script.

mattia pushed a commit to branch pu/reproducible_builds
in repository dpkg.

commit 75f634b0e4e6b0340c0f588e209052738c4dc296
Author: Jérémy Bobbio <lunar at debian.org>
Date:   Thu Oct 8 15:02:12 2015 +0000

    Support SOURCE_DATE_EPOCH for ar headers
    
    In order to allow Debian packages to be built reproducibly, we need a way for
    users to reproduce the dates captured in the ar headers of the .deb archives.
    
    We now support the SOURCE_DATE_EPOCH environment variable. If set we will use
    its value instead of the current time. SOURCE_DATE_EPOCH specification is
    available at: https://reproducible-builds.org/specs/source-date-epoch/
---
 dpkg-deb/build.c | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/dpkg-deb/build.c b/dpkg-deb/build.c
index 117e424..7112876 100644
--- a/dpkg-deb/build.c
+++ b/dpkg-deb/build.c
@@ -462,6 +462,24 @@ gen_dest_pathname_from_pkg(const char *dir, struct pkginfo *pkg)
                  arch_sep, pkg->available.arch->name, DEBEXT);
 }
 
+static time_t
+get_build_timestamp(void)
+{
+  time_t timestamp;
+  const char *value;
+  char *end;
+
+  errno = 0;
+  value = getenv("SOURCE_DATE_EPOCH");
+  if (!value)
+    return time(NULL);
+
+  timestamp = strtol(value, &end, 10);
+  if (value == end || *end || errno != 0)
+    ohshite(_("unable to parse SOURCE_DATE_EPOCH"));
+  return timestamp;
+}
+
 typedef void filenames_feed_func(const char *dir, int fd_out);
 
 /**
@@ -561,7 +579,7 @@ do_build(const char *const *argv)
   }
   m_output(stdout, _("<standard output>"));
 
-  build_timestamp = time(NULL);
+  build_timestamp = get_build_timestamp();
 
   /* Now that we have verified everything its time to actually
    * build something. Let's start by making the ar-wrapper. */

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/reproducible/dpkg.git



More information about the Reproducible-commits mailing list