Source: ncurses
Version: 5.9+20140913-1
Severity: wishlist
Tags: patch
User: reproducible-builds@lists.alioth.debian.org
Usertags: timestamps

Hi!

While working on the “reproducible builds” effort [1], we have noticed
that ncurses could not be built reproducibly.

The attached patch will add calls to strip-nondeterminism on static
libraries. Once applied, the package can be built reproducibly with our
current experimental framework.

I've initially tried to run `ar` in deterministic mode by passing
ARFLAGS="Dcrv". Unfortunately, `ranlib` is called after `ar` and there
doesn't seem to be a way to pass the `-D` flag to it, and so it will
write a timestamp in the newly created index.

 [1]: https://wiki.debian.org/ReproducibleBuilds

-- 
Lunar                                .''`. 
lu...@debian.org                    : :Ⓐ  :  # apt-get install anarchism
                                    `. `'` 
                                      `-   
From 914efd4f2ca07ada794bc70e6ecc8eb39725303c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Bobbio?= <lu...@debian.org>
Date: Sat, 3 Jan 2015 13:54:20 +0100
Subject: [PATCH] Call strip-nondeterminism on static libraries

Static libraries will unfortunately contain timestamps, preventing the
package to be built reproducibly. strip-nondeterminism will take care
of normalizing the libraries.

Passing 'Dcvr' as ARFLAGS to configure is unfortunately not enough.
The build process also calls ranlib, and there doesn't seem to be
a way to give it the '-D' flag.
---
 debian/control | 1 +
 debian/rules   | 5 +++++
 2 files changed, 6 insertions(+)

diff --git a/debian/control b/debian/control
index 5c32f76..2cbbd67 100644
--- a/debian/control
+++ b/debian/control
@@ -9,6 +9,7 @@ Build-Depends: debhelper (>= 8.1.3),
                libgpm-dev [linux-any],
                pkg-config,
                autotools-dev,
+               strip-nondeterminism,
 Standards-Version: 3.9.5
 Vcs-Browser: http://anonscm.debian.org/gitweb/?p=collab-maint/ncurses.git
 Vcs-Git: git://anonscm.debian.org/collab-maint/ncurses.git
diff --git a/debian/rules b/debian/rules
index 1c0bc1a..924e7dd 100755
--- a/debian/rules
+++ b/debian/rules
@@ -344,6 +344,11 @@ install: build
 	dh_testroot
 	dh_prep
 
+	find $(objdir) $(objdir-static) $(objdir-32) $(objdir-64) \
+		$(wobjdir) $(wobjdir-static) $(wobjdir-32) \
+		$(objdir-debug) $(wobjdir-debug) -type f -name '*.a' -print0 | \
+		xargs -0r strip-nondeterminism --type ar
+
 	# Static debug libraries need _g suffix to avoid file clashes
 	set -e; \
 	for lib in $(objdir-debug)/lib/*.a; do \
-- 
2.1.4

Attachment: signature.asc
Description: Digital signature

_______________________________________________
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

Reply via email to