[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