[Reproducible-commits] [dpkg] 03/09: Support SOURCE_DATE_EPOCH for ar headers

Jérémy Bobbio lunar at moszumanska.debian.org
Thu Oct 8 17:43:28 UTC 2015


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

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

commit dc8e1d59c4d3f76d9a70640647aa3ceee3356d94
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 91197f8..5f669c9 100644
--- a/dpkg-deb/build.c
+++ b/dpkg-deb/build.c
@@ -465,6 +465,24 @@ gen_dest_pathname_from_pkg(const char *dir, struct pkginfo *pkg)
   return path;
 }
 
+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;
+}
+
 /**
  * Overly complex function that builds a .deb file.
  */
@@ -509,7 +527,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