[Reproducible-commits] [dpkg] 26/32: Support SOURCE_DATE_EPOCH for ar headers

Jérémy Bobbio lunar at moszumanska.debian.org
Fri Nov 6 14:02:20 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 a18b1b71445a9357f848b191b24f9985328f2236
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 5afaa47..7a9d104 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;
+}
+
 typedef void filenames_feed_func(const char *dir, int fd_out);
 
 /**
@@ -564,7 +582,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