Bug#1017348: autopkgtest regression on ppc64el

2022-09-10 Thread Alexis Bienvenüe
Control: reassign -1 libopencv-imgproc406 
Control: severity -1 normal
Control: retitle -1 libopencv-imgproc406: cv::boundingRect fails on ppc64el

Hi.

I'm afraid I could not find why cv::boundingRect behaves like that.
Anyway I reassign this bug to opencv.

Regards,
Alexis Bienvenüe.



Bug#1017348: autopkgtest regression on ppc64el

2022-08-21 Thread Alexis Bienvenüe
Hi.

Thanks for the report.

This autopkgtest fail comes from a call to cv::boundingRect that works
differently between OpenCV versions 4.6.0+dfsg-4+b1 from testing and
4.6.0+dfsg-6+b1 from unstable, on a ppc64el virtual machine.

Running the sample code below, which computes a bounding rectangle for
three points, the output with OpenCV 4.6.0+dfsg-4+b1 is
  x: 3+4   y: 98+13
(which is what I was waiting for), and with OpenCV 4.6.0+dfsg-6+b1 is
  x: 3+4   y: 0+1
(I think the values for y are not correct here).
However, the output seems correct with both versions of OpenCV on
amd64.

As far as I understand this issue, I would say that the problem comes
from OpenCV and not auto-multiple-choice.

Regards,
Alexis Bienvenüe.

--
// gcc -o bounding bounding.cc -O2 -lstdc++ -lm -I/usr/include/opencv4
-lopencv_imgproc

#include 
#include 
#include "opencv2/core/core.hpp"
#include "opencv2/imgproc/imgproc.hpp"

int main(int argc, char** argv)
{

  std::vector pts;

  pts.push_back(cv::Point(3,100));
  pts.push_back(cv::Point(5,98));
  pts.push_back(cv::Point(6,110));

  cv::Rect rect = cv::boundingRect(pts);

  std::cout << "x: " << rect.x << "+" << rect.width
<< "   y: " << rect.y << "+" << rect.height
<< "\n";

}



Bug#1013943: auto-multiple-choice: Autopkg Test fails

2022-06-30 Thread Alexis Bienvenüe
Hi.

Le mercredi 29 juin 2022 à 22:40 +0200, Hilmar Preuße a écrit :
> I've created a pull request to fix a build failure. This does not
> solve 
> the Autopkg test failure. I'm able to reproduce but I have no clue
> how 
> to address them.

Thanks for your bug report and for the pull request.

The problem comes from a change in the fancyhdr LaTeX package which
modifies the layout of the documents produced by auto-multiple-choice :
https://github.com/pietvo/fancyhdr/commit/6b1ad10eeb5bc3d804f3cd2cf193e6440d0229e6

I'm working on a acceptable fix.


Regards,
Alexis Bienvenüe.



Bug#998141: opencv breaks auto-multiple-choice autopkgtest

2021-11-10 Thread Alexis Bienvenüe
control: reassign -1 src:opencv

On Sun, 31 Oct 2021 22:04:15 +0100 Paul Gevers 
wrote:
> I think that means you must bump the SONAME (if not done upstream,
with
> a Debian specific version), go through NEW, ask for a transition
block
> with the release team and have all reverse dependencies rebuild.

I think these apply to opencv, so I reassign to this package to let
current working version of auto-multiple-choice in testing.

Regards,
Alexis.



Bug#998141: opencv breaks auto-multiple-choice autopkgtest

2021-10-31 Thread Alexis Bienvenüe
Hi.

Than you for your report.

After rebuilding auto-multiple-choice from the same 1.5.1-2 sources in
a sid environment, it passes the autopkgtest.
Maybe this is related to this issue, where it is said that OpenCV 4.x
releases don't guarantee ABI compatibility:
https://github.com/opencv/opencv/issues/20878

Regards,
Alexis.



Bug#980935: pyzo: Crash at startup with python3.9

2021-02-23 Thread Alexis Bienvenüe
Hi.

On Fri, 19 Feb 2021 16:35:29 +0100 Gianfranco Costamagna
 wrote:
> Due to freeze, I can upload the patch on this bug right now, and
maybe we can upload your changes in git to unstable once the current
one goes in testing?
> 
> I'm doing some git work to polish the packaging, I'll try to rebase
your changes and push later today

Excellent : thanks a lot.

Alexis Bienvenüe.



Bug#980935: pyzo: Crash at startup with python3.9

2021-01-24 Thread Alexis Bienvenüe
Package: pyzo
Version: 4.4.3-1.2
Severity: grave
Tags: patch upstream
Justification: renders package unusable

Dear Maintainer,

When trying to launch pyzo in a standard debian environment with python3.9, I
face the following error:

Traceback (most recent call last):
  File "/usr/bin/pyzo", line 11, in 
    load_entry_point('pyzo==4.4.3', 'console_scripts', 'pyzo')()
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 474, in
load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2846,
in load_entry_point
    return ep.load()
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2450,
in load
    return self.resolve()
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2456,
in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  File "/usr/share/pyzo/pyzo/__init__.py", line 73, in 
    if commandline.is_our_server_running():
  File "/usr/share/pyzo/pyzo/core/commandline.py", line 150, in
is_our_server_running
    return server and server.isAlive()
AttributeError: 'Server' object has no attribute 'isAlive'

This error seems to be related to
https://github.com/pyzo/pyzo/issues/713

Applying the upstream patch fixes the problem - see attached. Upgrading pyzo to
a newer version should also be OK.

Regards,
Alexis Bienvenüe.



-- System Information:
Debian Release: bullseye/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (500, 'stable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 5.10.0-1-amd64 (SMP w/8 CPU threads)
Kernel taint flags: TAINT_WARN
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages pyzo depends on:
ii  famfamfam-silk 1.3-1.1
ii  fonts-dejavu-core  2.37-2
ii  fonts-dejavu-extra 2.37-2
ii  python3    3.9.1-1
ii  python3-pkg-resources  51.3.3-1
ii  python3-qtpy   1.9.0-3

pyzo recommends no packages.

Versions of packages pyzo suggests:
pn  pyzo-doc  

-- no debconf information

diff -Nru pyzo-4.4.3/debian/changelog pyzo-4.4.3/debian/changelog
--- pyzo-4.4.3/debian/changelog	2019-01-11 19:09:52.0 +0100
+++ pyzo-4.4.3/debian/changelog	2021-01-24 15:52:14.0 +0100
@@ -1,3 +1,9 @@
+pyzo (4.4.3-1.3) UNRELEASED; urgency=medium
+
+  * Fix crash with python3.9
+
+ -- Alexis Bienvenüe   Sun, 24 Jan 2021 15:52:14 +0100
+
 pyzo (4.4.3-1.2) unstable; urgency=medium
 
   * Non-maintainer upload.
diff -Nru pyzo-4.4.3/debian/patches/0002-replace-isAlive-per-is_alive-to-become-Python-3.9-compat.patch pyzo-4.4.3/debian/patches/0002-replace-isAlive-per-is_alive-to-become-Python-3.9-compat.patch
--- pyzo-4.4.3/debian/patches/0002-replace-isAlive-per-is_alive-to-become-Python-3.9-compat.patch	1970-01-01 01:00:00.0 +0100
+++ pyzo-4.4.3/debian/patches/0002-replace-isAlive-per-is_alive-to-become-Python-3.9-compat.patch	2021-01-24 15:50:46.0 +0100
@@ -0,0 +1,31 @@
+Description: Replace isAlive per is_alive to become Python 3.9 compatible
+ With python3.9, pyzo 4.4.3 crashes at startup with
+ AttributeError: 'Server' object has no attribute 'isAlive'
+Author: Alexis Bienvenüe 
+Origin: upstream
+Bug: https://github.com/pyzo/pyzo/issues/713
+Applied-Upstream: https://github.com/pyzo/pyzo/pull/714/commits/9d9b2fe126f70f70ff8b0fa9dd5ba047f595b75a
+---
+This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
+--- a/pyzo/core/commandline.py
 b/pyzo/core/commandline.py
+@@ -147,7 +147,7 @@ def is_our_server_running():
+ not running, this is probably not the first Pyzo, but there might
+ also be problem with starting the server.
+ """
+-return server and server.isAlive()
++return server and server.is_alive()
+ 
+ 
+ def is_pyzo_server_running():
+--- a/pyzo/yoton/channels/channels_reqrep.py
 b/pyzo/yoton/channels/channels_reqrep.py
+@@ -714,7 +714,7 @@ class RepChannel(BaseChannel):
+ self._timer.start()
+ elif mode in [2, 'thread', 'thread-driven']:
+ self._run_mode = 2
+-if not self._thread.isAlive():
++if not self._thread.is_alive():
+ self._thread.start()
+ else:
+ raise ValueError('Invalid mode for ReqChannel instance.')
diff -Nru pyzo-4.4.3/debian/patches/series pyzo-4.4.3/debian/patches/series
--- pyzo-4.4.3/debian/patches/series	2018-11-30 16:17:17.0 +0100
+++ pyzo-4.4.3/debian/patches/series	2021-01-24 15:43:45.0 +0100
@@ -1,2 +1,3 @@
 Disable-install-of-appdata.patch
 0001-replace-async-per-basync-to-become-Python-3.7-compat.patch
+0002-replace-isAlive-per-is_alive-to-become-Python-3.9-compat.patch


Bug#948513: auto-multiple-choice-common: Should depend on liblocale-codes-perl

2020-01-14 Thread Alexis Bienvenüe
> perl-modules-5.22 is a left-over package from older distributions (in
> Aptitude marked as "Obsolete"). If I uninstall it, liblocale-codes-
> perl
> is automatically installed and AMC works fine. So maybe, AMC should
> depend on liblocale-codes-perl (>= 3.34).

Thanks: I understand now.
To avoid the same problem with perl 5.24 and 5.26, I will use >= 3.42

Regards,
Alexis Bienvenüe.



Bug#948513: auto-multiple-choice-common: Should depend on liblocale-codes-perl

2020-01-14 Thread Alexis Bienvenüe
Thanks for the report.

Le jeudi 09 janvier 2020 à 17:22 +0100, Michal Sojka a écrit :
> I was able to get rid of it by manually installing
> liblocale-codes-perl so I think that auto-multiple-choice-common
> should depend on this package.

That looks strange because auto-multiple-choice-common already depends
on liblocale-codes-perl:

> Versions of packages auto-multiple-choice-common depends on:
> ii  liblocale-codes-perl  3.62-1

Can you check that the installation ended properly when the problem
arose?

Regards,
Alexis Bienvenüe.



Bug#941163: ghostscript: dvipdf not working

2019-09-25 Thread Alexis Bienvenüe
Package: ghostscript
Version: 9.28~~rc3~dfsg-1
Severity: normal
Tags: patch upstream

Dear Maintainer,

dvipdf produces an single blank page pdf file whatever the source file is.
The last line of this script needs a dash at the end, that has been dropped
when deprecating the .setpdfwrite operator - see
http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=15d95340389f0f46bd214803ec19685c0a738a0e

Regards,
Alexis Bienvenüe.



-- System Information:
Debian Release: bullseye/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (500, 'testing')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 5.2.0-2-amd64 (SMP w/8 CPU cores)
Kernel taint flags: TAINT_WARN
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8),
LANGUAGE=fr_FR.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages ghostscript depends on:
ii  libc6   2.29-2
ii  libgs9  9.28~~rc3~dfsg-1

ghostscript recommends no packages.

Versions of packages ghostscript suggests:
pn  ghostscript-x  
Index: ghostscript-9.28~~rc3~dfsg/lib/dvipdf
Description: Fix dvipdf, that produced single blank page output
  whatever the source file is.
===
--- ghostscript-9.28~~rc3~dfsg.orig/lib/dvipdf
+++ ghostscript-9.28~~rc3~dfsg/lib/dvipdf
@@ -43,4 +43,4 @@ fi
 
 # We have to include the options twice because -I only takes effect if it
 # appears before other options.
-exec dvips -Ppdf $DVIPSOPTIONS -q -f "$infile" | $GS_EXECUTABLE $OPTIONS -q 
-P- -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sstdout=%stderr 
-sOutputFile="$outfile" $OPTIONS
+exec dvips -Ppdf $DVIPSOPTIONS -q -f "$infile" | $GS_EXECUTABLE $OPTIONS -q 
-P- -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sstdout=%stderr 
-sOutputFile="$outfile" $OPTIONS -


Bug#933485: auto-multiple-choice - ppc64el - make manual-test hangs

2019-08-20 Thread Alexis Bienvenüe
Hi.

Thanks for the report.

Le 01/08/2019 à 10:54, Roger a écrit :
> but what is strange is that working directory /tmp/_lxVaXpUYl doesn't
> exist any more - Didn't find why but I suspect it has an impact on
> processing.

The tests use tempdir with CLEANUP=>1, so that the working directories
are deleted on exit. Maybe here some kind of error made the calling
process to stop?

Can you try to launch the test with the debugging flag on, with

cd tests ; ./t/0assoc/test.pl --debug

I hope the log file in the working directory will then remain.

Regards,
Alexis.



Bug#922567: FTBFS against opencv 4.0.1 (exp)

2019-03-01 Thread Alexis Bienvenüe
Thanks for the report!
I will update the package also in unstable after buster release.

Regards,
Alexis Bienvenüe.



Bug#908583: auto-multiple-choice: Suggestion to set (or allow setting) catalog tags above the question

2018-09-16 Thread Alexis Bienvenüe
Control: forwarded -1 https://project.auto-multiple-choice.net/issues/588

This looks sensible: thanks. Forwarded to the upstream bugtracker.

Regards,
Alexis Bienvenüe.



Bug#870129: auto-multiple-choice broken with perl 5.26

2017-08-02 Thread Alexis Bienvenüe
Control: tags -1 + pending

Hi Steve.

Thanks for the report and the patch! Maybe I should wait for #870280 to
be fixed before uploading a new version including it, because anyway
#870280 currently prevents the package to be built.

Regards,
Alexis Bienvenüe.



Bug#870280: xelatex: Undefined control sequence \l__xeCJK_listings_letter_bool

2017-08-01 Thread Alexis Bienvenüe
Hi.

Digging a little more, I found that \l__xeCJK_listings_letter_bool is
never defined.
Adding the following line in
/usr/share/texlive/texmf-dist/tex/xelatex/xecjk/xeCJK-listings.sty (eg.
line 160) corrects the bug:

\bool_new:N \l__xeCJK_listings_letter_bool

I also tried the following source file:

\documentclass{article}
\usepackage{expl3}
\begin{document}
\ExplSyntaxOn
\bool_if:NTF \l__TEST { TRUE } { FALSE }
\ExplSyntaxOff
\end{document}

It compiles OK with LaTeX3 from 2017.20170629-1 (showing "FALSE"), but
reports an error (I think this is the proper result) with 2017.20170724-1.

Regards,
Alexis Bienvenüe.



Bug#870280: xelatex: Undefined control sequence \l__xeCJK_listings_letter_bool

2017-08-01 Thread Alexis Bienvenüe
Hi.

On Mon, 31 Jul 2017 23:49:38 +0900 Norbert Preining
<norb...@preining.info> wrote:
> Using this package has been an endless source of problems. Please
> provide a minimal non-working example *NOT* using docbook (dblatex)

The same problem arises with the following source file:

\documentclass{article}
\usepackage{listings}
\usepackage{xeCJK}
\setCJKmainfont{IPAexMincho}
\setCJKsansfont{IPAexGothic}
\setCJKmonofont{IPAexGothic}
\begin{document}
\lstinline!x!
\end{document}

Note that this file is compiling properly (xelatex) with debian version
2017.20170629-1.
Also, this file is compiling properly with debian version
2017.20170724-1 *and* the following files from version 2017.20170629-1
in the current directory:
expl3-code.tex
expl3.sty
l3keys2e.sty
l3xdvipdfmx.def
xparse.sty
xtemplate.sty

Regards,
Alexis Bienvenüe.



Bug#792168: pdftk breaks PDF forms

2017-03-14 Thread Alexis Bienvenüe
Package: pdftk
Version: 2.02-4+b2
Followup-For: Bug #792168

Dear Maintainer,

The problem also exists with forms that can be used with evince/okular.
With attached LaTeX file using hyperref package, you can build such a form:

pdflatex sample.tex
evince small.pdf

Extracting pages with pdftk breaks the form: when clicking on the box in the
new PDF form, the box disappears instead of showing a "checked" symbol.

pdftk small.pdf cat output small-all.pdf
evince small-all.pdf

However, as a workaround, you can fix this file with

pdftk small-all.pdf output small-all-fixed.pdf need_appearances

Note that the file produced with
pdftk small.pdf cat output small-all.pdf need_appearances
does show the problem.

Regards,
Alexis Bienvenüe.



-- System Information:
Debian Release: 9.0
  APT prefers testing
  APT policy: (990, 'testing'), (800, 'experimental'), (800, 'unstable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 4.9.0-1-amd64 (SMP w/4 CPU cores)
Locale: LANG=fr_FR.utf8, LC_CTYPE=fr_FR.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages pdftk depends on:
ii  libc6   2.24-9
ii  libgcc1 1:6.3.0-6
ii  libgcj176.3.0-6
ii  libstdc++6  6.3.0-6

pdftk recommends no packages.

Versions of packages pdftk suggests:
ii  poppler-utils [xpdf-utils]  0.48.0-2

-- no debconf information
% pdflatex small ; pdftk small.pdf output small-u.pdf uncompress ; pdftk 
small.pdf cat output small-all.pdf need_appearances ; pdftk small-all.pdf 
output small-all-2.pdf need_appearances

\documentclass{article}

\usepackage{hyperref}

\begin{document}
\pagestyle{empty}

\begin{Form}
\CheckBox[name=box]{}{ I am OK}
\end{Form}
\end{document}


small-all.pdf
Description: Adobe PDF document


Bug#844067: opencv: Uninstallable package libopencv-dev after binNMU

2016-11-12 Thread Alexis Bienvenüe
Source: opencv
Version: 3.1.0+dfsg-1~exp2
Severity: important

Dear Maintainer,

The current version of libopencv-dev from experimental is uninstallable
after beeing binNMU'ed: libopencv-dev depends on
libopencv3.1-java=3.1.0+dfsg-1~exp2+b1, but libopencv is a Arch:all
package with version 3.1.0+dfsg-1~exp2.

I would say that the libopencv -> libopencv3.1-java dependency should be
with ${source:Version} instead of ${binary:Version}.

Regards,
Alexis Bienvenüe.
--- a/control	2016-11-12 09:20:41.051609811 +0100
+++ b/control	2016-11-12 09:20:53.703835973 +0100
@@ -73,7 +73,7 @@
 	libopencv-superres-dev (= ${binary:Version}),
 	libopencv-imgcodecs-dev (= ${binary:Version}),
 	libopencv-viz-dev (= ${binary:Version}),
-	libopencv3.1-java (= ${binary:Version}),
+	libopencv3.1-java (= ${source:Version}),
 	pkg-config
 Recommends: opencv-data
 Breaks: libopencv-core-dev (<= 2.3.1-8)


Bug#823393:

2016-08-30 Thread Alexis Bienvenüe
Hi Samuel.

Le 02/08/2016 03:25, Samuel Henrique a écrit :
> Please have a look at line 196 of "./usr/share/doc/kdbg/changelog.gz" on
> [1].

Yes I don't know where this comes from.

> There's also a problem with the name "​AndréWöbbeking" and i'm not sure
> if your patch fixes that too, could you please confirm that/if you're
> aware of that difference and wether grepping in non-binary-mode is enough?

I think I checked reproducibility, but without explanations for the
point you mentioned, maybe it is safer to begin with experimental.

Regards,
Alexis Bienvenüe.



Bug#823393: kdbg: mixed encoding in changelog

2016-07-25 Thread Alexis Bienvenüe
Hi Samuel.

Le 21/07/2016 à 21:30, Samuel Henrique a écrit :
> I could, however, make a new release signed by me, giving credit to you
> in the changelog and keeping the patch itself almost intact (i would
> like to add the "Last-Update" field on the header), and then having the
> package sponsored.

This is fine for me, thanks.

Alexis Bienvenüe.



Bug#828627: uim: please make the build reproducible (locale)

2016-06-26 Thread Alexis Bienvenüe
Source: uim
Version: 1:1.8.6+gh20160621.0.87bf935-1
Severity: wishlist
Tags: patch upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: locale
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

While working on the "€œreproducible builds"€ effort [1], we have noticed
that 'uim' could not be built reproducibly.

The attached patch sets the locale used to sort using LC_ALL instead of
LANG (that is overwrote by LC_ALL), so that the order is fixed even if
LC_ALL is set.
Once applied, uim can be built reproducibly in our current
experimental framework.

Regards,
Alexis Bienvenüe.

 [1]: https://wiki.debian.org/ReproducibleBuilds
Description: Use LC_ALL instead of LANG
 bacause LC_ALL overwrites LANG. This makes the build reproducible.
Author: Alexis Bienvenüe <p...@passoire.fr>

--- uim-1.8.6+gh20160621.0.87bf935.orig/tables/Makefile.am
+++ uim-1.8.6+gh20160621.0.87bf935/tables/Makefile.am
@@ -32,7 +32,7 @@ zm.scm: $(top_srcdir)/scm/zm.scm
 	$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/replace && \
 	$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/uim sigscheme-combined && \
 	$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/uim uim-sh && \
-	echo "(begin (load \"$<\") (for-each (lambda (key) (display (format \"~a ~W\n\" (apply string-append (caar key)) (cadr key `basename $< .scm`-rule))" | $(UIM_SH_ENV) $(UIM_SH) -b | grep -v "^#" | LANG=C sort > $@
+	echo "(begin (load \"$<\") (for-each (lambda (key) (display (format \"~a ~W\n\" (apply string-append (caar key)) (cadr key `basename $< .scm`-rule))" | $(UIM_SH_ENV) $(UIM_SH) -b | grep -v "^#" | LC_ALL=C sort > $@
 #endif
 
 clean-genscm:


Bug#828226: tiger: please make the build reproducible (environment,locale)

2016-06-26 Thread Alexis Bienvenüe
Source: tiger
Version: 1:3.2.3-14.1
Severity: wishlist
Tags: patch upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: environment locale
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

While working on the "reproducible builds" effort [1], we have noticed
that 'tiger' could not be built reproducibly.

The attached patch fixes the locale used by ls to sort files, and uses
printf instead of echo to get the same behavior when SHELL is sh or dash.
Once applied, tiger can be built reproducibly in our current
experimental framework.

Regards,
Alexis Bienvenüe.

 [1]: https://wiki.debian.org/ReproducibleBuilds
diff -u tiger-3.2.3/debian/changelog tiger-3.2.3/debian/changelog
--- tiger-3.2.3/debian/changelog
+++ tiger-3.2.3/debian/changelog
@@ -1,3 +1,11 @@
+tiger (1:3.2.3-14.1.0~reproducible1) UNRELEASED; urgency=medium
+
+  * Use printf instead of echo in convert2html, so that leading "-e",
+or "*" wildcards, are printed as-is.
+  * Also set LC_ALL, which overwrites LC_COLLATE, in genmsgidx.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Sun, 26 Jun 2016 09:21:57 +0200
+
 tiger (1:3.2.3-14.1) unstable; urgency=medium
 
   * Non-maintainer upload.
diff -u tiger-3.2.3/util/genmsgidx tiger-3.2.3/util/genmsgidx
--- tiger-3.2.3/util/genmsgidx
+++ tiger-3.2.3/util/genmsgidx
@@ -102,7 +102,7 @@
 #exit 1
 #}
 
-LC_COLLATE=C.UTF-8 $LS $BASEDIR/doc/*.txt |
+LC_ALL=C.UTF-8 LC_COLLATE=C.UTF-8 $LS $BASEDIR/doc/*.txt |
 while read infile 
 do
   file=`$BASENAME $infile`
only in patch2:
unchanged:
--- tiger-3.2.3.orig/util/convert2html
+++ tiger-3.2.3/util/convert2html
@@ -26,7 +26,7 @@
 if [ -z "$line" ]; then
   echo ""
 else
-  echo $line
+  printf '%s\n' "$line" | sed 's/\s\+$//'
 fi
 read line
 if [ `echo $?` -ne 0 ]; then exit; fi


Bug#827864: funtools: please make the build reproducible (fileordering)

2016-06-21 Thread Alexis Bienvenüe
Source: funtools
Version: 1.4.6+git150811-2
Severity: wishlist
Tags: patch upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: fileordering
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

While working on the "reproducible builds" effort [1], we have noticed
that 'funtools' could not be built reproducibly.

The attached patch fixes the order in which object files are passed to
mklib. Once applied, funtools can be built reproducibly in our current
experimental framework.

Regards,
Alexis Bienvenüe.

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



diff -Nru funtools-1.4.6+git150811/debian/changelog funtools-1.4.6+git150811/debian/changelog
--- funtools-1.4.6+git150811/debian/changelog	2015-11-24 20:27:06.0 +0100
+++ funtools-1.4.6+git150811/debian/changelog	2016-06-21 17:40:22.0 +0200
@@ -1,3 +1,9 @@
+funtools (1.4.6+git150811-2.0~reproducible1) UNRELEASED; urgency=medium
+
+  * Sort object files to pass to mklib, to make the build reproducible.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Tue, 21 Jun 2016 17:40:22 +0200
+
 funtools (1.4.6+git150811-2) unstable; urgency=low
 
   * Depend on libfuntools1 on libc6-dev, since this is needed for the
diff -Nru funtools-1.4.6+git150811/debian/patches/series funtools-1.4.6+git150811/debian/patches/series
--- funtools-1.4.6+git150811/debian/patches/series	2015-10-23 13:29:58.0 +0200
+++ funtools-1.4.6+git150811/debian/patches/series	2016-06-21 17:38:53.0 +0200
@@ -2,3 +2,4 @@
 use_shared_libwcstools.patch
 build_tclfun.patch
 multiarch.patch
+sort-object-files.patch
diff -Nru funtools-1.4.6+git150811/debian/patches/sort-object-files.patch funtools-1.4.6+git150811/debian/patches/sort-object-files.patch
--- funtools-1.4.6+git150811/debian/patches/sort-object-files.patch	1970-01-01 01:00:00.0 +0100
+++ funtools-1.4.6+git150811/debian/patches/sort-object-files.patch	2016-06-21 17:39:43.0 +0200
@@ -0,0 +1,33 @@
+Description: Sort object files
+ Sort object files to pass to mklib, to make the build reproducible.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+--- funtools-1.4.6+git150811.orig/Makefile.in
 funtools-1.4.6+git150811/Makefile.in
+@@ -233,7 +233,7 @@ shlib:		sublib $(LIBOBJS)
+ 		@(rm -rf $(PACKAGE)tmp; mkdir $(PACKAGE)tmp; \
+ 		(cd $(PACKAGE)tmp && ar x ../$(LIB)); \
+ 		CC='$(CC)' CXX=$(CXX) \
+-		./mklib -o $(PACKAGE) -ldl $(WCS_LIBS) -lm -lz $(PACKAGE)tmp/*.o; \
++		./mklib -o $(PACKAGE) -ldl $(WCS_LIBS) -lm -lz `LC_ALL=C ls $(PACKAGE)tmp/*.o`; \
+ 		rm -rf $(PACKAGE)tmp;)
+ 
+ mainlib:	$(MAINLIBOBJS) funmainlib.o lex.calc.o
+@@ -245,7 +245,7 @@ shmainlib:	mainlib
+ 		@(rm -rf $(PACKAGE)tmp; mkdir $(PACKAGE)tmp; \
+ 		(cd $(PACKAGE)tmp && ar x ../lib$(PACKAGE)MainLib.a); \
+ 		CC='$(CC)' CXX='$(CXX)' \
+-		./mklib -o $(PACKAGE)MainLib -L. -lfuntools $(PACKAGE)tmp/*.o;\
++		./mklib -o $(PACKAGE)MainLib -L. -lfuntools `LC_ALL=C ls $(PACKAGE)tmp/*.o`;\
+ 		rm -rf $(PACKAGE)tmp;)
+ 
+ tclfun:		$(LIB) tclmainlib.o tclfun.o
+@@ -256,7 +256,7 @@ shtclfun:	tclfun
+ 		@(rm -rf $(PACKAGE)tmp; mkdir $(PACKAGE)tmp; \
+ 		(cd $(PACKAGE)tmp && ar x ../libtclfun.a); \
+ 		CC='$(CC)' CXX='$(CXX)' \
+-		./mklib -o tclfun -L. -lfuntools $(PACKAGE)tmp/*.o $(TCL_LIBS); \
++		./mklib -o tclfun -L. -lfuntools `LC_ALL=C ls $(PACKAGE)tmp/*.o` $(TCL_LIBS); \
+ 		rm -rf $(PACKAGE)tmp; \
+ 		test -r pkgIndex.tcl && mv pkgIndex.tcl pkgIndex.tcl-old; \
+ 		SHLIB=libtclfun.so; \


Bug#827863: swedish: please make the build reproducible (locale)

2016-06-21 Thread Alexis Bienvenüe
Source: swedish
Version: 1.4.5-2.1
Severity: wishlist
Tags: patch upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: locale
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

While working on the "€œreproducible builds"€ effort [1], we have noticed
that 'swedish' could not be built reproducibly.

The attached patch sets the locale to C while sorting, so that the order
is fixed.
Once applied, swedish can be built reproducibly in our current
experimental framework.

Regards,
Alexis Bienvenüe.

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



diff -u swedish-1.4.5/debian/changelog swedish-1.4.5/debian/changelog
--- swedish-1.4.5/debian/changelog
+++ swedish-1.4.5/debian/changelog
@@ -1,3 +1,9 @@
+swedish (1.4.5-2.1.0~reproducible1) UNRELEASED; urgency=medium
+
+  * Use C locale for sorting, to make the build reproducible.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Tue, 21 Jun 2016 15:16:32 +0200
+
 swedish (1.4.5-2.1) unstable; urgency=low
 
   * Non-maintainer upload.
only in patch2:
unchanged:
--- swedish-1.4.5.orig/Makefile
+++ swedish-1.4.5/Makefile
@@ -47,8 +47,8 @@
 
 svenska.datalista: svenska.aff goranj.data gorann.data
 	< goranj.data sed 's/\/.*//' | sed 's/$$/\/S/' > goranJ.data
-	cat goran[jJ].data | sort -f | icombine svenska.aff > gorana.data
-	cat gorana.data gorann.data | sort -f > svenska.datalista
+	cat goran[jJ].data | LC_ALL=C sort -f | icombine svenska.aff > gorana.data
+	cat gorana.data gorann.data | LC_ALL=C sort -f > svenska.datalista
 	rm goran[aJ].data
 
 goranj.data: diverse/gtmp.aff $(jsynclistor)
@@ -113,7 +113,7 @@
 	munchlist -l diverse/gtmp.aff -v $< > $*.data ; touch $*.sync
 
 %.d2o: %.data diverse/gtmp.hash
-	ispell -d diverse/gtmp -e < $< | sed s/\ /$$'\\\n'/g | sort -u > $*.ord ; touch $*.sync
+	ispell -d diverse/gtmp -e < $< | sed s/\ /$$'\\\n'/g | LC_ALL=C sort -u > $*.ord ; touch $*.sync
 
 %.o: %.ord
 	-[ -f $*.data ] && [ ! -f $*.sync ] && ( echo "Filen $*.sync finns ej" ; exit 1 )


Bug#827731: tin: please make the build reproducible (locale)

2016-06-20 Thread Alexis Bienvenüe
Source: tin
Version: 1:2.3.2-1
Severity: wishlist
Tags: patch
User: reproducible-bui...@lists.alioth.debian.org
Usertags: locale
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

While working on the `€œreproducible builds'€ effort [1], we have noticed
that 'tin' could not be built reproducibly.

Since LC_ALL overwrites the LC_TIME value, the cpp_reprtime script
output is locale-dependent. This could be fixed adding a LC_ALL=C
definition, but as gcc now supports the SOURCE_DATE_EPOCH environment
variable [2] to set the __DATE__ value, I think the best option is to
drop cpp_reprtime -- see attached patch.

Once applied, tin can be built reproducibly in our current
experimental framework.

Regards,
Alexis Bienvenüe.

 [1]: https://wiki.debian.org/ReproducibleBuilds
 [2]: https://reproducible-builds.org/specs/source-date-epoch/



diff -Nru tin-2.3.2/debian/changelog tin-2.3.2/debian/changelog
--- tin-2.3.2/debian/changelog	2015-12-27 15:43:34.0 +0100
+++ tin-2.3.2/debian/changelog	2016-06-20 12:18:59.0 +0200
@@ -1,3 +1,9 @@
+tin (1:2.3.2-1.0~reproducible1) UNRELEASED; urgency=medium
+
+  * drop debian/cpp_reprtime, since gcc has SOURCE_DATE_EPOCH support now.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Mon, 20 Jun 2016 12:18:59 +0200
+
 tin (1:2.3.2-1) unstable; urgency=medium
 
   * New upstream release.
diff -Nru tin-2.3.2/debian/cpp_reprtime tin-2.3.2/debian/cpp_reprtime
--- tin-2.3.2/debian/cpp_reprtime	2015-12-27 06:16:18.0 +0100
+++ tin-2.3.2/debian/cpp_reprtime	1970-01-01 01:00:00.0 +0100
@@ -1,40 +0,0 @@
-#!/bin/sh
-set -e
-
-FILE="$1"
-if [ -z "$FILE" ]; then
-  echo "Usage: $0 FILENAME" >&2
-  echo "\nThe reproducible definitions of the C time macros will be written to FILENAME\nand options for \$CPPFLAGS will be printed on standard output."
-  exit 1
-fi
-
-CHANGELOG_DATE=$(dpkg-parsechangelog --show-field Date)
-
-if [ -z "$CHANGELOG_DATE" ]; then
-  echo "dpkg-parsechangelog is unable to parse the changelog date!" >&2
-  exit 1
-fi
-
-export LC_CTIME='C'
-export TZ='UTC'
-
-cat < $FILE
-/* Reproducible timestamp macros generated by $0. */
-#ifdef __TIME__
-# undef __TIME__
-#endif
-#define __TIME__ "$(date --date="$CHANGELOG_DATE" "+%T")"
-
-#ifdef __DATE__
-# undef __DATE__
-#endif
-#define __DATE__ "$(date --date="$CHANGELOG_DATE" "+%b %e %Y")"
-
-#ifdef __TIMESTAMP__
-# undef __TIMESTAMP__
-#endif
-#define __TIMESTAMP__ "$(date --date="$CHANGELOG_DATE" "+%a %b %e %T %Y")"
-END
-
-echo "-Wno-builtin-macro-redefined -include $(pwd)/$FILE"
-
diff -Nru tin-2.3.2/debian/rules tin-2.3.2/debian/rules
--- tin-2.3.2/debian/rules	2015-12-27 15:43:07.0 +0100
+++ tin-2.3.2/debian/rules	2016-06-20 12:17:55.0 +0200
@@ -8,8 +8,6 @@
 DPKG_EXPORT_BUILDFLAGS = 1
 -include /usr/share/dpkg/buildflags.mk
 
-CPPFLAGS+=$(shell sh debian/cpp_reprtime include/reprtime.h)
-
 DEB_HOST_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
 DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
 ifeq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE))


Bug#827361: matplotlib: please honour SOURCE_DATE_EPOCH to allow reproducible output

2016-06-16 Thread Alexis Bienvenüe
Control: forwarded -1 https://github.com/matplotlib/matplotlib/pull/6595

Le 15/06/2016 13:08, Sandro Tosi a écrit :
> can you please send this upstream? thanks!

Sure. I also included the attached patch to order keys when building the
PDF file. That is needed to get reproducible output in some situations.

Regards,
Alexis Bienvenüe.


Description: Reproducible PDF output
 Sort dict string representations to get reproducible PDF output.
Author: Alexis Bienvenüe <p...@passoire.fr>

Index: matplotlib-1.5.2~rc2/lib/matplotlib/backends/backend_pdf.py
===
--- matplotlib-1.5.2~rc2.orig/lib/matplotlib/backends/backend_pdf.py
+++ matplotlib-1.5.2~rc2/lib/matplotlib/backends/backend_pdf.py
@@ -17,6 +17,7 @@ import sys
 import time
 import warnings
 import zlib
+import collections
 from io import BytesIO
 
 import numpy as np
@@ -196,8 +197,8 @@ def pdfRepr(obj):
 # represented as Name objects.
 elif isinstance(obj, dict):
 r = [b"<<"]
-r.extend([Name(key).pdfRepr() + b" " + pdfRepr(val)
-  for key, val in six.iteritems(obj)])
+r.extend(sorted([Name(key).pdfRepr() + b" " + pdfRepr(val)
+ for key, val in six.iteritems(obj)]))
 r.append(b">>")
 return fill(r)
 
@@ -499,14 +500,14 @@ class PdfFile(object):
 
 self.alphaStates = {}   # maps alpha values to graphics state objects
 self.nextAlphaState = 1
-self.hatchPatterns = {}
+self.hatchPatterns = collections.OrderedDict() # reproducible writeHatches
 self.nextHatch = 1
 self.gouraudTriangles = []
 
-self.images = {}
+self.images = collections.OrderedDict() # reproducible writeImages
 self.nextImage = 1
 
-self.markers = {}
+self.markers = collections.OrderedDict() # reproducible writeMarkers
 self.multi_byte_charprocs = {}
 
 self.paths = []


Bug#827361: matplotlib: please honour SOURCE_DATE_EPOCH to allow reproducible output

2016-06-15 Thread Alexis Bienvenüe
Package: matplotlib
Version: 1.5.2~rc2-1
Severity: wishlist
Tags: patch upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: toolchain
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

While working on the "reproducible builds" effort [1], we have noticed
that some packages (like python-shapely) use matplotlib in their
building process, leading to unreproducible builds (due to the
timestamps inserted in PS/PDF files).

To solve this kind of issues, it would be nice to make matplotlib
support the SOURCE_DATE_EPOCH environment variable [2], so that the
sources last modification date can be used for the timestamps in these
PS and PDF files.

See the attached patch for a proposed solution.

Regards,
Alexis Bienvenüe.

[1] https://wiki.debian.org/ReproducibleBuilds
[2] https://reproducible-builds.org/specs/source-date-epoch/




diff -Nru matplotlib-1.5.2~rc2/debian/changelog matplotlib-1.5.2~rc2/debian/changelog
--- matplotlib-1.5.2~rc2/debian/changelog	2016-05-30 20:36:55.0 +0200
+++ matplotlib-1.5.2~rc2/debian/changelog	2016-06-14 19:42:45.0 +0200
@@ -1,3 +1,9 @@
+matplotlib (1.5.2~rc2-1.0~reproducible1) UNRELEASED; urgency=medium
+
+  * Reproducible PS/PDF output, using SOURCE_DATE_EPOCH (when set)
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Tue, 14 Jun 2016 19:42:45 +0200
+
 matplotlib (1.5.2~rc2-1) unstable; urgency=medium
 
   [ Sandro Tosi ]
diff -Nru matplotlib-1.5.2~rc2/debian/patches/honour-SOURCE_DATE_EPOCH.patch matplotlib-1.5.2~rc2/debian/patches/honour-SOURCE_DATE_EPOCH.patch
--- matplotlib-1.5.2~rc2/debian/patches/honour-SOURCE_DATE_EPOCH.patch	1970-01-01 01:00:00.0 +0100
+++ matplotlib-1.5.2~rc2/debian/patches/honour-SOURCE_DATE_EPOCH.patch	2016-06-14 23:27:09.0 +0200
@@ -0,0 +1,99 @@
+Description: Honour SOURCE_DATE_EPOCH
+ Honour the SOURCE_DATE_EPOCH environment variable, to build timestamps
+ in PS/PDF outputs. This allows reproducible output.
+ See https://reproducible-builds.org/specs/source-date-epoch/
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+Index: matplotlib-1.5.2~rc2/lib/matplotlib/backends/backend_pdf.py
+===
+--- matplotlib-1.5.2~rc2.orig/lib/matplotlib/backends/backend_pdf.py
 matplotlib-1.5.2~rc2/lib/matplotlib/backends/backend_pdf.py
+@@ -23,7 +23,7 @@ import numpy as np
+ from matplotlib.externals.six import unichr
+ 
+ 
+-from datetime import datetime
++from datetime import datetime, tzinfo, timedelta
+ from math import ceil, cos, floor, pi, sin
+ 
+ import matplotlib
+@@ -134,6 +134,20 @@ def _string_escape(match):
+ assert False
+ 
+ 
++# tzinfo class for UTC
++class UTCtimezone(tzinfo):
++"""UTC"""
++
++def utcoffset(self, dt):
++return timedelta(0)
++
++def tzname(self, dt):
++return "UTC"
++
++def dst(self, dt):
++return timedelta(0)
++
++
+ def pdfRepr(obj):
+ """Map Python objects to PDF syntax."""
+ 
+@@ -201,10 +215,14 @@ def pdfRepr(obj):
+ # A date.
+ elif isinstance(obj, datetime):
+ r = obj.strftime('D:%Y%m%d%H%M%S')
+-if time.daylight:
+-z = time.altzone
++z = obj.utcoffset()
++if z is not None:
++z = z.seconds
+ else:
+-z = time.timezone
++if time.daylight:
++z = time.altzone
++else:
++z = time.timezone
+ if z == 0:
+ r += 'Z'
+ elif z < 0:
+@@ -457,10 +475,19 @@ class PdfFile(object):
+ self.writeObject(self.rootObject, root)
+ 
+ revision = ''
++# get source date from SOURCE_DATE_EPOCH, if set
++# See https://reproducible-builds.org/specs/source-date-epoch/
++source_date_epoch = os.getenv("SOURCE_DATE_EPOCH")
++if source_date_epoch:
++source_date = datetime.utcfromtimestamp(int(source_date_epoch))
++source_date = source_date.replace(tzinfo=UTCtimezone())
++else:
++source_date = datetime.today()
++
+ self.infoDict = {
+ 'Creator': 'matplotlib %s, http://matplotlib.org' % __version__,
+ 'Producer': 'matplotlib pdf backend%s' % revision,
+-'CreationDate': datetime.today()
++'CreationDate': source_date
+ }
+ 
+ self.fontNames = {} # maps filenames to internal font names
+Index: matplotlib-1.5.2~rc2/lib/matplotlib/backends/backend_ps.py
+===
+--- matplotlib-1.5.2~rc2.orig/lib/matplotlib/backends/backend_ps.py
 matplotlib-1.5.2~rc2/lib/matplotlib/backends/backend_ps.py
+@@ -1126,7 +1126,14 @@ class FigureCanvasPS(FigureCanvasBase):
+ if title: print("%%Title: "+title, file=fh)
+ print(("%%Creator: matplotlib version "
+ 

Bug#827285: latex2html: Mispelled 'Homepage' in debian/control

2016-06-14 Thread Alexis Bienvenüe
Package: latex2html
Version: 2015-debian1-1
Severity: minor

Dear Maintainer,

In debian/control, 'Hompage' should be 'Homepage'.

Regards,
Alexis Bienvenüe



-- System Information:
Debian Release: stretch/sid
  APT prefers testing
  APT policy: (990, 'testing'), (500, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 4.5.0-2-amd64 (SMP w/2 CPU cores)
Locale: LANG=fr_FR.utf8, LC_CTYPE=fr_FR.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages latex2html depends on:
ii  ghostscript-x9.19~dfsg-1+b1
ii  netpbm   2:10.0-15.3.0~reproducible1
ii  perl 5.22.2-1
ii  perl-doc 5.22.2-1
ii  tex-common   6.05
ii  texlive-binaries [texlive-base-bin]  2016.20160513.41080-2.0~reproducible1
ii  texlive-fonts-recommended2016.20160512-1
ii  texlive-latex-extra  2016.20160512-1
ii  texlive-latex-recommended2016.20160512-1

latex2html recommends no packages.

latex2html suggests no packages.

-- no debconf information



Bug#796360: fixed in libical 2.0.0-0.1

2016-06-14 Thread Alexis Bienvenüe
Dear Maintainer,

>   * New upstream release
> - includes reproducible build fix (Closes: #796360)

The patch does not seem to be applied upstream:

https://github.com/libical/libical/blob/master/scripts/mkderivedvalues.pl#L155

https://tests.reproducible-builds.org/debian/rb-pkg/unstable/amd64/libical.html

Regards,
Alexis Bienvenüe.



Bug#827197: gnuplot: please make the build reproducible (timestamps,username,environment)

2016-06-13 Thread Alexis Bienvenüe
Source: gnuplot
Version: 5.0.3+dfsg3-5
Severity: wishlist
Tags: upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: timestamps username environment
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org
Control: block -1 by 827187

Dear Maintainer,

While working on the "reproducible builds" effort [1], we have noticed
that gnuplot has following reproducibility issues :

* gnuplot embeds timestamps in its ps output. When the SOURCE_DATE_EPOCH
environment variable [2] is set, it can be used to make the output
reproducible. See 13_honour_SOURCE_DATE_EPOCH.patch

* gnuplot embeds the username in its ps output. I think the unix
username is not usefull in this output, and can be stripped. See
14_strip_username_from_output.patch - maybe it is possible to strip it
only if SOURCE_DATE_EPOCH is set if this username is considered to be
relevant here.

* The SHELL used when building gnuplot is recorded in the Makefiles
included in gnuplot-doc. I think /bin/sh can always be used instead. See
changes with override_dh_auto_configure

Once these patches are applied, and once https://bugs.debian.org/827187
is fixed, gnuplot can be built reproducibly in our current experimental
framework.

Regards,
Alexis Bienvenüe.

[1] https://wiki.debian.org/ReproducibleBuilds
[2] https://reproducible-builds.org/specs/source-date-epoch/


diff -Nru gnuplot-5.0.3+dfsg3/debian/changelog gnuplot-5.0.3+dfsg3/debian/changelog
--- gnuplot-5.0.3+dfsg3/debian/changelog	2016-06-10 20:03:10.0 +0200
+++ gnuplot-5.0.3+dfsg3/debian/changelog	2016-06-13 17:01:48.0 +0200
@@ -1,3 +1,9 @@
+gnuplot (5.0.3+dfsg3-5.0~reproducible1) UNRELEASED; urgency=medium
+
+  * Make the build reproducible.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Mon, 13 Jun 2016 17:01:48 +0200
+
 gnuplot (5.0.3+dfsg3-5) unstable; urgency=medium
 
   [ Sven Joachim ]
diff -Nru gnuplot-5.0.3+dfsg3/debian/patches/13_honour_SOURCE_DATE_EPOCH.patch gnuplot-5.0.3+dfsg3/debian/patches/13_honour_SOURCE_DATE_EPOCH.patch
--- gnuplot-5.0.3+dfsg3/debian/patches/13_honour_SOURCE_DATE_EPOCH.patch	1970-01-01 01:00:00.0 +0100
+++ gnuplot-5.0.3+dfsg3/debian/patches/13_honour_SOURCE_DATE_EPOCH.patch	2016-06-13 17:00:49.0 +0200
@@ -0,0 +1,57 @@
+Description: Honour SOURCE_DATE_EPOCH
+ Get date from the environment variable SOURCE_DATE_EPOCH (when set),
+ to build output timestamps.
+ See https://reproducible-builds.org/specs/source-date-epoch/
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+--- gnuplot-5.0.3+dfsg3.orig/term/post.trm
 gnuplot-5.0.3+dfsg3/term/post.trm
+@@ -1657,15 +1657,45 @@ end\n\
+ int i;
+ time_t now;
+ char *timedate;
+-
++char *source_date_epoch;
++unsigned long long epoch;
++char *endptr;
++ 
+ ps_common_uses_fonts = uses_fonts;
+ ps_common_xoff = xoff;
+ ps_common_yoff = yoff;
+ 
+ ps_page = 0;
+ 
+-time();
+-timedate=asctime(localtime());
++/* get source date from environment variable SOURCE_DATE_EPOCH, if set.
++   See https://reproducible-builds.org/specs/source-date-epoch/ */
++source_date_epoch = getenv("SOURCE_DATE_EPOCH");
++if (source_date_epoch) {
++  errno = 0;
++  epoch = strtoull(source_date_epoch, , 10);
++  if ((errno == ERANGE && (epoch == ULLONG_MAX || epoch == 0))
++  || (errno != 0 && epoch == 0)) {
++fprintf(stderr, "Environment variable $SOURCE_DATE_EPOCH: strtoull: %s\n", strerror(errno));
++exit(EXIT_FAILURE);
++  }
++  if (endptr == source_date_epoch) {
++fprintf(stderr, "Environment variable $SOURCE_DATE_EPOCH: No digits were found: %s\n", endptr);
++exit(EXIT_FAILURE);
++  }
++  if (*endptr != '\0') {
++fprintf(stderr, "Environment variable $SOURCE_DATE_EPOCH: Trailing garbage: %s\n", endptr);
++exit(EXIT_FAILURE);
++  }
++  if (epoch > ULONG_MAX) {
++fprintf(stderr, "Environment variable $SOURCE_DATE_EPOCH: value must be smaller than or equal to: %lu but was found to be: %llu \n", ULONG_MAX, epoch);
++exit(EXIT_FAILURE);
++  }
++  now = epoch;
++  timedate=asctime(gmtime());
++} else {
++  time();
++  timedate=asctime(localtime());
++}
+ timedate[strlen(timedate)-1]='\0';
+ 
+ #ifdef PSLATEX_DRIVER
diff -Nru gnuplot-5.0.3+dfsg3/debian/patches/14_strip_username_from_output.patch gnuplot-5.0.3+dfsg3/debian/patches/14_strip_username_from_output.patch
--- gnuplot-5.0.3+dfsg3/debian/patches/14_strip_username_from_output.patch	1970-01-01 01:00:00.0 +0100
+++ gnuplot-5.0.3+dfsg3/debian/patches/14_strip_username_from_output.patch	2016-06-13 17:00:49.0 +0200
@@ -0,0 +1,36 @@
+Description: Strip username from output
+ Strip username from output to make it reproducible.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+Index: gnuplot-5.0.3+dfsg3/term/post.trm
+=

Bug#827187: latex2html: please make the output reproducible (toolchain,timestamps,username,randomness)

2016-06-13 Thread Alexis Bienvenüe
Source: latex2html
Version: 2015-debian1-1
Severity: wishlist
Tags: upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: toolchain timestamps username randomness
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org
Control: block -1 by 827115

Dear Maintainer,

While working on the "reproducible builds" effort [1], we have noticed
that some packages (including latex2html itself) use latex2html in their
building process, leading to the following reproducibility issues :

* keys from the perl hashes are not sorted. See
reproducible-output.patch to sort them and get a reproducible order.
* a timestamp is included in the output. See
honour-SOURCE_DATE_EPOCH.patch to use the SOURCE_DATE_EPOCH environment
variable when set [2]. This way, the timestamps correspond to the
sources date instead of the build date.
* the user name is included in the output. See
suppress-username-from-output.patch to strip it.
* the index keys are not fully ordered in the case cleaned values are
equal. See idx-sort-all.patch

Once these patches are applied, and once https://bugs.debian.org/827115
is fixed, latex2html can be built reproducibly in our current
experimental framework.

Regards,
Alexis Bienvenüe.

[1] https://wiki.debian.org/ReproducibleBuilds
[2] https://reproducible-builds.org/specs/source-date-epoch/

diff -Nru latex2html-2015-debian1/debian/changelog latex2html-2015-debian1/debian/changelog
--- latex2html-2015-debian1/debian/changelog	2016-01-19 19:24:18.0 +0100
+++ latex2html-2015-debian1/debian/changelog	2016-06-10 15:20:45.0 +0200
@@ -1,3 +1,9 @@
+latex2html (2015-debian1-1.0~reproducible1) UNRELEASED; urgency=medium
+
+  * Reproducible output.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Fri, 10 Jun 2016 15:20:45 +0200
+
 latex2html (2015-debian1-1) unstable; urgency=medium
 
   * New upstream release (Closes: #647433)
diff -Nru latex2html-2015-debian1/debian/patches/honour-SOURCE_DATE_EPOCH.patch latex2html-2015-debian1/debian/patches/honour-SOURCE_DATE_EPOCH.patch
--- latex2html-2015-debian1/debian/patches/honour-SOURCE_DATE_EPOCH.patch	1970-01-01 01:00:00.0 +0100
+++ latex2html-2015-debian1/debian/patches/honour-SOURCE_DATE_EPOCH.patch	2016-06-10 15:47:57.0 +0200
@@ -0,0 +1,22 @@
+Description: Honour SOURCE_DATE_EPOCH
+ Honour the SOURCE_DATE_EPOCH environment variable, to make the output
+ reproducible.
+ See https://reproducible-builds.org/specs/source-date-epoch/
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+--- latex2html-2015-debian1.orig/latex2html.pin
 latex2html-2015-debian1/latex2html.pin
+@@ -15006,7 +15006,12 @@ sub brackets { ($OP, $CP);}
+ 
+ sub get_date {
+ local($format,$order) = @_;
+-local(@lt) = localtime;
++local(@lt);
++if($ENV{SOURCE_DATE_EPOCH}) {
++@lt = gmtime($ENV{SOURCE_DATE_EPOCH})
++} else {
++@lt = localtime;
++}
+ local($d,$m,$y) = @lt[3,4,5];
+ if ($format =~ /ISO/) {
+ 	sprintf("%4d-%02d-%02d", 1900+$y, $m+1, $d);
diff -Nru latex2html-2015-debian1/debian/patches/idx-sort-all.patch latex2html-2015-debian1/debian/patches/idx-sort-all.patch
--- latex2html-2015-debian1/debian/patches/idx-sort-all.patch	1970-01-01 01:00:00.0 +0100
+++ latex2html-2015-debian1/debian/patches/idx-sort-all.patch	2016-06-13 14:49:30.0 +0200
@@ -0,0 +1,16 @@
+Description: Sort all index keys
+ Sort index keys, even if they are the same after beeing cleaned, to
+ get a reproducible output.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+--- latex2html-2015-debian1.orig/latex2html.pin
 latex2html-2015-debian1/latex2html.pin
+@@ -8536,7 +8536,7 @@ sub keysort {
+ # Put alphabetic characters after symbols; already downcased
+ $x =~ s/^([a-z])/~~~$1/;
+ $y =~ s/^([a-z])/~~~$1/;
+-$x cmp $y;
++($x cmp $y) || ($a cmp $b);
+ }
+ 
+ sub index_key_eq {
diff -Nru latex2html-2015-debian1/debian/patches/reproducible-output.patch latex2html-2015-debian1/debian/patches/reproducible-output.patch
--- latex2html-2015-debian1/debian/patches/reproducible-output.patch	1970-01-01 01:00:00.0 +0100
+++ latex2html-2015-debian1/debian/patches/reproducible-output.patch	2016-06-13 09:50:57.0 +0200
@@ -0,0 +1,260 @@
+Description: Make the output reproducible.
+ Sort perl hash keys to get the output reproducible.
+ See https://wiki.debian.org/ReproducibleBuilds/
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+Index: latex2html-2015-debian1/latex2html.pin
+===
+--- latex2html-2015-debian1.orig/latex2html.pin
 latex2html-2015-debian1/latex2html.pin
+@@ -1049,7 +1049,7 @@ sub restore_critical_variables {
+ # undef any renewed-commands...
+ # so the new defs are read from %new_command
+ local($cmd,$key,$code);
+-foreach $key (keys %renew_command) {
++foreach $key (sort keys %renew_command) {
+ 	$cmd = "do_cmd_$key";
+ 

Bug#827172: reaver: please make the build reproducible (fileordering)

2016-06-13 Thread Alexis Bienvenüe
Source: reaver
Version: 1.4-2
Severity: wishlist
Tags: patch upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: fileordering
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

While working on the "reproducible builds" effort [1], we have noticed
that 'reaver' could not be built reproducibly.

The attached patch fixes the order in which object files are passed to
gcc. Once applied, reaver can be built reproducibly in our current
experimental framework.

Regards,
Alexis Bienvenüe.

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


Description: Order object files when linking
 Sort object files when liking, to make the build reproducible.
Author: Alexis Bienvenüe <p...@passoire.fr>

Index: reaver-1.4/src/Makefile.in
===
--- reaver-1.4.orig/src/Makefile.in
+++ reaver-1.4/src/Makefile.in
@@ -5,15 +5,15 @@ prefix=@prefix@
 exec_prefix=@exec_prefix@
 CONFDIR=@sysconfdir@/@target@
 CFLAGS=-DCONF_DIR='"$(CONFDIR)"' -DREAVER_DATABASE='"$(CONFDIR)/reaver.db"' @CFLAGS@
-LDFLAGS=$(LIBWPS_DIR)/*.o wps/*.o tls/bignum.o tls/libtls.a utils/libutils.a crypto/libcrypto.a lwe/libiw.a @LDFLAGS@
+LDFLAGS=`LC_ALL=C ls $(LIBWPS_DIR)/*.o wps/*.o` tls/bignum.o tls/libtls.a utils/libutils.a crypto/libcrypto.a lwe/libiw.a @LDFLAGS@
 
 all: wash reaver
 
 wash: wps libiw libwps.o argsparser.o globule.o init.o misc.o 80211.o iface.o
-	$(CC) $(CFLAGS) $(INC) wpsmon.c *.o $(LDFLAGS) -o wash
+	$(CC) $(CFLAGS) $(INC) wpsmon.c `LC_ALL=C ls *.o` $(LDFLAGS) -o wash
 
 reaver: wps libiw libwps.o argsparser.o globule.o init.o sigint.o sigalrm.o misc.o cracker.o
-	$(CC) $(CFLAGS) $(INC) wpscrack.c *.o $(LDFLAGS) -o reaver
+	$(CC) $(CFLAGS) $(INC) wpscrack.c `LC_ALL=C ls *.o` $(LDFLAGS) -o reaver
 
 libwps.o:
 	(cd $(LIBWPS_DIR) && make)


Bug#827115: netpbm: please honour SOURCE_DATE_EPOCH to allow reproducible output

2016-06-12 Thread Alexis Bienvenüe
Package: netpbm
Version: 2:10.0-15.3
Severity: wishlist
Tags: patch upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: toolchain
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

While working on the "reproducible builds" effort [1], we have noticed
that some packages (like latex2html) use one of the netpbm utilities in
their process, leading to unreproducible output (due to the use of the
random generator, seeded from a time() call).

To solve this kind of issues, it would be nice to make netpbm support
the SOURCE_DATE_EPOCH environment variable [2].

See the attached patch for a proposed solution.

Regards,
Alexis Bienvenüe.

[1] https://wiki.debian.org/ReproducibleBuilds
[2] https://reproducible-builds.org/specs/source-date-epoch/


diff -u netpbm-free-10.0/debian/changelog netpbm-free-10.0/debian/changelog
--- netpbm-free-10.0/debian/changelog
+++ netpbm-free-10.0/debian/changelog
@@ -1,3 +1,9 @@
+netpbm-free (2:10.0-15.3.0~reproducible1) UNRELEASED; urgency=medium
+
+  * SOURCE_DATE_EPOCH support.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Sun, 12 Jun 2016 11:43:19 +0200
+
 netpbm-free (2:10.0-15.3) unstable; urgency=medium
 
   * Non-maintainer upload.
only in patch2:
unchanged:
--- netpbm-free-10.0.orig/include/pm.h
+++ netpbm-free-10.0/include/pm.h
@@ -20,6 +20,7 @@
 #include 
 #include 
 #include 
+#include 
 
 #ifdef VMS
 #include 
@@ -245,5 +246,10 @@
 char *
 pm_arg0toprogname(const char arg0[]);
 
+/* SOURCE_DATE_EPOCH support */
+
+time_t
+pm_source_time(int use_pid);
+
 #endif
 
only in patch2:
unchanged:
--- netpbm-free-10.0.orig/pbm/libpm.c
+++ netpbm-free-10.0/pbm/libpm.c
@@ -23,6 +23,9 @@
 #include 
 #include 
 #include 
+#include 
+#include 
+#include 
 
 /* The following are set by pm_init(), then used by subsequent calls to other
pm_xxx() functions.
@@ -938,3 +941,42 @@
 	return realloc(a, b*c);
 }
 
+time_t pm_source_time(int use_pid)
+{
+  time_t now;
+  char *source_date_epoch;
+  unsigned long long epoch;
+  char *endptr;
+
+  source_date_epoch = getenv("SOURCE_DATE_EPOCH");
+  if (source_date_epoch) {
+errno = 0;
+epoch = strtoull(source_date_epoch, , 10);
+if ((errno == ERANGE && (epoch == ULLONG_MAX || epoch == 0))
+|| (errno != 0 && epoch == 0)) {
+  fprintf(stderr, "Environment variable $SOURCE_DATE_EPOCH: strtoull: %s\n", strerror(errno));
+  exit(EXIT_FAILURE);
+}
+if (endptr == source_date_epoch) {
+  fprintf(stderr, "Environment variable $SOURCE_DATE_EPOCH: No digits were found: %s\n", endptr);
+  exit(EXIT_FAILURE);
+}
+if (*endptr != '\0') {
+  fprintf(stderr, "Environment variable $SOURCE_DATE_EPOCH: Trailing garbage: %s\n", endptr);
+  exit(EXIT_FAILURE);
+}
+if (epoch > ULONG_MAX) {
+  fprintf(stderr, "Environment variable $SOURCE_DATE_EPOCH: value must be smaller than or equal to: %lu but was found to be: %llu \n", ULONG_MAX, epoch);
+  exit(EXIT_FAILURE);
+}
+now = epoch;
+return(now);
+  } else {
+now = time(NULL);
+if(use_pid) {
+  return(now ^ getpid());
+} else {
+  return(now);
+}
+  }
+}
only in patch2:
unchanged:
--- netpbm-free-10.0.orig/pbm/pbmreduce.c
+++ netpbm-free-10.0/pbm/pbmreduce.c
@@ -98,7 +98,7 @@
 if ( thiserr == 0 || nexterr == 0 )
   pm_error( "out of memory" );
 
-srand( (int) ( time( 0 ) ^ getpid( ) ) );
+srand( (int) ( pm_source_time(1) ) );
 for ( col = 0; col < newcols + 2; ++col )
   thiserr[col] = ( rand( ) % SCALE - HALFSCALE ) / 4;
 	/* (random errors in [-SCALE/8 .. SCALE/8]) */
only in patch2:
unchanged:
--- netpbm-free-10.0.orig/pgm/pgmcrater.c
+++ netpbm-free-10.0/pgm/pgmcrater.c
@@ -107,7 +107,7 @@
 {
 int i;
 
-i = time((long *) 0) * 0xF37C;
+i = pm_source_time(0) * 0xF37C;
 srand(i);
 for (i = 0; i < 7; i++) {
 	V rand();
only in patch2:
unchanged:
--- netpbm-free-10.0.orig/pgm/pgmnoise.c
+++ netpbm-free-10.0/pgm/pgmnoise.c
@@ -57,7 +57,7 @@
 	pgm_writepgminit(stdout, cols, rows, PGM_MAXMAXVAL, 0);
 
 	/* get time of day to feed the random number generator */
-	timenow = time(NULL);
+	timenow = pm_source_time(0);
 	srand(timenow);
 
 	/* create the (gray) noise */
only in patch2:
unchanged:
--- netpbm-free-10.0.orig/pgm/pgmtopbm.c
+++ netpbm-free-10.0/pgm/pgmtopbm.c
@@ -132,7 +132,7 @@
 	overflow_add(cols, 2);
 	thiserr = (long*) pm_allocrow( cols + 2, sizeof(long) );
 	nexterr = (long*) pm_allocrow( cols + 2, sizeof(long) );
-	srand( (int) ( time( 0 ) ^ getpid( ) ) );
+	srand( (int) ( pm_source_time(1) ) );
 	for ( col = 0; col < cols + 2; ++col )
 		thiserr[col] = ( rand( ) % FS_SCALE - HALF_FS_SCALE ) / 4;
 	/* (random errors in [-FS_SCALE/8 .. FS_SCALE/8]) */
only in patch2:
unchanged:
--- netpbm-free-10.0.orig/pnm/pnmremap.c
+++ netpbm-free-10.0/pnm/p

Bug#826951: slicot: please make the build reproducible (fileordering)

2016-06-10 Thread Alexis Bienvenüe
Source: slicot
Version: 5.0+20101122-2
Severity: wishlist
Tags: patch
User: reproducible-bui...@lists.alioth.debian.org
Usertags: fileordering
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

While working on the "reproducible builds" effort [1], we have noticed
that 'slicot' could not be built reproducibly.

The attached patch fixes the order files are passed to `ar'.
Once applied, slicot can be built reproducibly in our current
experimental framework.

Regards,
Alexis Bienvenüe.

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




diff -Nru slicot-5.0+20101122/debian/rules slicot-5.0+20101122/debian/rules
--- slicot-5.0+20101122/debian/rules	2013-05-18 14:55:08.0 +0200
+++ slicot-5.0+20101122/debian/rules	2016-06-10 14:39:29.0 +0200
@@ -21,7 +21,7 @@
 SO=0
 VERS=$(SO).0
 
-SLICOT_SRC=$(shell echo src/*.f)
+SLICOT_SRC=$(sort $(shell echo src/*.f))
 SLICOT_OBJ=$(SLICOT_SRC:.f=.o)
 
 debian/shared_dir debian/static_dir debian/shared64_dir:


Bug#822197: sphinx: please remove memory addresses from generated python documentation

2016-06-09 Thread Alexis Bienvenüe
Control: tags -1 + fixed-upstream

Now fixed upstream:
https://github.com/sphinx-doc/sphinx/commit/09c25443ff8bbfb745b717658523f2c218bbf843

Regards,
Alexis Bienvenüe.



Bug#826162: slime: please make the contributors ordering locale-independent (environment)

2016-06-02 Thread Alexis Bienvenüe
Source: slime
Version: 2:2.17-1
Severity: wishlist
Tags: patch upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: environment
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

While working on the "reproducible builds" effort [1], we have noticed
that 'slime' could not be built reproducibly.

The attached patch make the contributors ordering locale-independent.

With this patch applied, and if #826158 is fixed, so that the slime.info
file gets a reproducible date from the last debian/changelog entry,
slime can be built reproducibly in our current experimental framework.

Regards,
Alexis Bienvenüe.

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








Description: Reproducible contributors list
 Always use C locale when sorting contributors, to make the build
 reproducible
Author: Alexis Bienvenüe <p...@passoire.fr>

--- slime-2.17.orig/doc/Makefile
+++ slime-2.17/doc/Makefile
@@ -77,7 +77,7 @@ contributors.texi: $(CHANGELOGS) Makefil
 	sed -ne '/^[0-9]/{s/^[^ ]* *//; s/ *<.*//; p;}' | \
 	sort | \
 	uniq -c | \
-	sort -nr| \
+	LC_ALL=C sort -nr| \
 	sed -e 's/^[^A-Z]*//' | \
 	LC_ALL=C awk -f texinfo-tabulate.awk \
 	> $@


Bug#826158: texinfo: please make makeinfo info output reproducible

2016-06-02 Thread Alexis Bienvenüe
Source: texinfo
Version: 6.1.0.dfsg.1-8
Severity: wishlist
Tags: upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: toolchain
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

Thanks to the SOURCE_DATE_EPOCH [1] support in TL2016, pdf output of
makeinfo can be made reproducible, even when using @today in the texi
file (when SOURCE_DATE_EPOCH_TEX_PRIMITIVES is set to 1).

It would be great to extend the SOURCE_DATE_EPOCH support for info
output from makeinfo. See a proposed solution in the attached patch.

Regards,
Alexis Bienvenüe.

[1] https://reproducible-builds.org/specs/source-date-epoch/
Description: Reproducible info output
 Honour the SOURCE_DATE_EPOCH environment variable to get a reproducible
 @today value for info output when it is set.
 See https://reproducible-builds.org/specs/source-date-epoch/
Author: Alexis Bienvenüe <p...@passoire.fr>

--- texinfo-6.1.0.dfsg.1.orig/tp/Texinfo/Common.pm
+++ texinfo-6.1.0.dfsg.1/tp/Texinfo/Common.pm
@@ -1218,7 +1218,7 @@ sub expand_today($)
 return {'text' => 'a sunny day'};
   }
   my($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst)
-   = localtime(time);
+   = ($ENV{SOURCE_DATE_EPOCH} ? gmtime($ENV{SOURCE_DATE_EPOCH}) : 
localtime(time));
   $year += ($year < 70) ? 2000 : 1900;
   return $self->gdt('{month} {day}, {year}',
   { 'month' => $self->gdt($MONTH_NAMES[$mon]),


Bug#826093: osc: please make the build reproducible (timestamps)

2016-06-02 Thread Alexis Bienvenüe
Source: osc
Version: 0.154.0-2
Severity: wishlist
Tags: patch upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: timestamps
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

While working on the `€œreproducible builds'€ effort [1], we have noticed
that 'osc' could not be built reproducibly.

The attached patch honours the SOURCE_DATE_EPOCH environment
variable [2] to get a reproducible man page date from the last
debian changelog entry.
Once applied, osc can be built reproducibly in our current
experimental framework.

Regards,
Alexis Bienvenüe.

 [1]: https://wiki.debian.org/ReproducibleBuilds
 [2]: https://reproducible-builds.org/specs/source-date-epoch/


Description: Reproducible man page date
 Set the man page date from the environment variable SOURCE_DATE_EPOCH
 (if set), to make the build reproducible.
 See  https://reproducible-builds.org/specs/source-date-epoch/
Author: Alexis Bienvenüe <p...@passoire.fr>

--- osc-0.154.0.orig/osc/cmdln.py
+++ osc-0.154.0/osc/cmdln.py
@@ -45,8 +45,8 @@ import re
 import cmd
 import optparse
 import sys
+import time
 from pprint import pprint
-from datetime import date
 
 # this is python 2.x style
 def introspect_handler_2(handler):
@@ -619,9 +619,13 @@ class RawCmdln(cmd.Cmd):
 usage:
 ${name} man
 """
+if os.getenv("SOURCE_DATE_EPOCH"):
+srcdate = time.gmtime(int(os.getenv("SOURCE_DATE_EPOCH")))
+else:
+srcdate = time.localtime()
 self.stdout.write(bytes(
 self.man_header % {
-'date': date.today().strftime('%b %Y'),
+'date': time.strftime('%b %Y',srcdate),
 'version': self.get_version(),
 'name': self.name,
 'ucname': self.name.upper()


Bug#825881: pyx: please make the build reproducible (timestamps,randomness)

2016-05-31 Thread Alexis Bienvenüe
Source: pyx
Version: 0.12.1-4
Severity: wishlist
Tags: patch upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: timestamps randomness
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

While working on the `€œreproducible builds'€ effort [1], we have noticed
that 'pyx' could not be built reproducibly.

Please find attached proposed solutions for the following issues:
* timestamps in the produced ps/pdf files can be made reproducible using
the SOURCE_DATE_EPOCH environment variable [2] (when set), that
corresponds to the last debian/changelog entry date when building a
debian package. See reproducible-timestamps.patch
* image names include memory addresses. They can eg. be replaced by some
hash of the image itself, see reproducible-image-name.patch

Once applied, pyx can be built reproducibly in our current
experimental framework.

Regards,
Alexis Bienvenüe.

 [1]: https://wiki.debian.org/ReproducibleBuilds
 [2]: https://reproducible-builds.org/specs/source-date-epoch/


Description: Honour SOURCE_DATE_EPOCH
 Honour the SOURCE_DATE_EPOCH environment variable to get reproducible
 timestamps if it is set.
 See https://reproducible-builds.org/specs/source-date-epoch/
Author: Alexis Bienvenüe <p...@passoire.fr>

Index: pyx-0.12.1/pyx/pdfwriter.py
===
--- pyx-0.12.1.orig/pyx/pdfwriter.py
+++ pyx-0.12.1/pyx/pdfwriter.py
@@ -29,7 +29,7 @@ except:
 haszlib = 0
 
 import bbox, config, style, unit, version, trafo
-
+import os
 
 
 class PDFregistry:
@@ -161,13 +161,18 @@ class PDFinfo(PDFobject):
 PDFobject.__init__(self, "info")
 
 def write(self, file, writer, registry):
-if time.timezone < 0:
-# divmod on positive numbers, otherwise the minutes have a different sign from the hours
-timezone = "-%02i'%02i'" % divmod(-time.timezone/60, 60)
-elif time.timezone > 0:
-timezone = "+%02i'%02i'" % divmod(time.timezone/60, 60)
-else:
+if os.environ.get('SOURCE_DATE_EPOCH'):
+creation_date = time.gmtime(int(os.environ.get('SOURCE_DATE_EPOCH')))
 timezone = "Z00'00'"
+else:
+if time.timezone < 0:
+# divmod on positive numbers, otherwise the minutes have a different sign from the hours
+timezone = "-%02i'%02i'" % divmod(-time.timezone/60, 60)
+elif time.timezone > 0:
+timezone = "+%02i'%02i'" % divmod(time.timezone/60, 60)
+else:
+timezone = "Z00'00'"
+creation_date = time.localtime()
 
 def pdfstring(s):
 r = ""
@@ -188,7 +193,8 @@ class PDFinfo(PDFobject):
 if writer.keywords:
 file.write("/Keywords (%s)\n" % pdfstring(writer.keywords))
 file.write("/Creator (PyX %s)\n" % version.version)
-file.write("/CreationDate (D:%s%s)\n" % (time.strftime("%Y%m%d%H%M"), timezone))
+file.write("/CreationDate (D:%s%s)\n" %
+   (time.strftime("%Y%m%d%H%M",creation_date), timezone))
 file.write(">>\n")
 
 
Index: pyx-0.12.1/pyx/pswriter.py
===
--- pyx-0.12.1.orig/pyx/pswriter.py
+++ pyx-0.12.1/pyx/pswriter.py
@@ -22,6 +22,7 @@
 
 import cStringIO, copy, time, math
 import bbox, config, style, version, unit, trafo
+import os
 
 
 class PSregistry:
@@ -107,11 +108,15 @@ class _PSwriter:
 self.encodings = {}
 
 def writeinfo(self, file):
+if os.environ.get('SOURCE_DATE_EPOCH'):
+creation_date = time.gmtime(int(os.environ.get('SOURCE_DATE_EPOCH')))
+else:
+creation_date = time.localtime()
 file.write("Creator: PyX %s\n" % version.version)
 if self.title is not None:
 file.write("Title: %s\n" % self.title)
 file.write("CreationDate: %s\n" %
-   time.asctime(time.localtime(time.time(
+   time.asctime(creation_date))
 
 def getfontmap(self):
 if self._fontmap is None:
Description: Reproducible image name
 Use data hash instead of memory address to build internal image names,
 to get a reproducible result.
Author: Alexis Bienvenüe <p...@passoire.fr>

Index: pyx-0.12.1/pyx/bitmap.py
===
--- pyx-0.12.1.orig/pyx/bitmap.py
+++ pyx-0.12.1/pyx/bitmap.py
@@ -27,7 +27,7 @@ try:
 except:
 haszlib = 0
 
-import bbox, canvasitem, pswriter, pdfwriter, trafo, unit
+import bbox, canvasitem, pswriter, pdfwriter, trafo, unit, hashlib
 
 devicenames = {"L": "/DeviceGray",
"RGB": "/DeviceRGB",
@@ -314,7 +31

Bug#825436: gettext: please make xgettext honour SOURCE_DATE_EPOCH

2016-05-26 Thread Alexis Bienvenüe
Control: merge -1 792687

OK, thanks, and sorry for duplicate.

Regards,
Alexis Bienvenüe.



Bug#825436: gettext: please make xgettext honour SOURCE_DATE_EPOCH

2016-05-26 Thread Alexis Bienvenüe
Source: gettext
Version: 0.19.7-2
Severity: wishlist
Tags: patch upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: toolchain
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

While working on the “reproducible builds” effort [1], we have noticed
that some packages (like gdm3, gnome-session) use xgettext in their
building process, resulting in timestamps in POT files that break
reproducibility.

To solve this kind of issues, it would be nice to have xgettext support
the SOURCE_DATE_EPOCH environment variable [2], so that the
POT-Creation-Date timestamp will be set from the last debian/changelog
entry instead of the (unreproducible) build date.

See the attached patch for a solution to this issue.

Regards,
Alexis Bienvenüe.

[1] https://wiki.debian.org/ReproducibleBuilds
[2] https://reproducible-builds.org/specs/source-date-epoch/


Description: xgettext honour SOURCE_DATE_EPOCH
 Make xgettext honour the SOURCE_DATE_EPOCH environment variable: is set,
 this variable is used to set POT-Creation-Date.
 See https://reproducible-builds.org/specs/source-date-epoch/
Author: Alexis Bienvenüe <p...@passoire.fr>

Index: gettext-0.19.7/gettext-tools/src/po-time.c
===
--- gettext-0.19.7.orig/gettext-tools/src/po-time.c
+++ gettext-0.19.7/gettext-tools/src/po-time.c
@@ -52,13 +52,17 @@ difftm (const struct tm *a, const struct
 
 
 char *
-po_strftime (const time_t *tp)
+po_strftime_tz (const time_t *tp, int gmt)
 {
   struct tm local_time;
   char tz_sign;
   long tz_min;
 
-  local_time = *localtime (tp);
+  if (gmt) {
+local_time = *gmtime (tp);
+  } else {
+local_time = *localtime (tp);
+  }
   tz_sign = '+';
   tz_min = difftm (_time, gmtime (tp)) / 60;
   if (tz_min < 0)
@@ -74,3 +78,9 @@ po_strftime (const time_t *tp)
 local_time.tm_min,
 tz_sign, tz_min / 60, tz_min % 60);
 }
+
+char *
+po_strftime (const time_t *tp)
+{
+  return (po_strftime_tz (tp,0));
+}
Index: gettext-0.19.7/gettext-tools/src/po-time.h
===
--- gettext-0.19.7.orig/gettext-tools/src/po-time.h
+++ gettext-0.19.7/gettext-tools/src/po-time.h
@@ -29,6 +29,7 @@ extern "C" {
 /* Return a freshly allocated string containing the given time in the
format -MM-DD HH:MM+TZOFF.  */
 extern char *po_strftime (const time_t *tp);
+extern char *po_strftime_tz (const time_t *tp, int gmt);
 
 
 #ifdef __cplusplus
Index: gettext-0.19.7/gettext-tools/src/xgettext.c
===
--- gettext-0.19.7.orig/gettext-tools/src/xgettext.c
+++ gettext-0.19.7/gettext-tools/src/xgettext.c
@@ -3723,6 +3723,9 @@ construct_header ()
   message_ty *mp;
   char *msgstr;
   char *comment;
+  char *source_date_epoch;
+  unsigned long long epoch;
+  char *endptr;
   static lex_pos_ty pos = { __FILE__, __LINE__ };
 
   if (package_name != NULL)
@@ -3744,8 +3747,33 @@ the MSGID_BUGS_ADDRESS variable there; o
 specify an --msgid-bugs-address command line option.\n\
 ")));
 
-  time ();
-  timestring = po_strftime ();
+  source_date_epoch = getenv("SOURCE_DATE_EPOCH");
+  if (source_date_epoch) {
+errno = 0;
+epoch = strtoull(source_date_epoch, , 10);
+if ((errno == ERANGE && (epoch == ULLONG_MAX || epoch == 0))
+|| (errno != 0 && epoch == 0)) {
+  fprintf(stderr, "Environment variable $SOURCE_DATE_EPOCH: strtoull: 
%s\n", strerror(errno));
+  exit(EXIT_FAILURE);
+}
+if (endptr == source_date_epoch) {
+  fprintf(stderr, "Environment variable $SOURCE_DATE_EPOCH: No digits were 
found: %s\n", endptr);
+  exit(EXIT_FAILURE);
+}
+if (*endptr != '\0') {
+  fprintf(stderr, "Environment variable $SOURCE_DATE_EPOCH: Trailing 
garbage: %s\n", endptr);
+  exit(EXIT_FAILURE);
+}
+if (epoch > ULONG_MAX) {
+  fprintf(stderr, "Environment variable $SOURCE_DATE_EPOCH: value must be 
smaller than or equal to: %lu but was found to be: %llu \n", ULONG_MAX, epoch);
+  exit(EXIT_FAILURE);
+}
+now = epoch;
+timestring = po_strftime_tz (,1);
+  } else {
+time ();
+timestring = po_strftime ();
+  }
 
   msgstr = xasprintf ("\
 Project-Id-Version: %s\n\


Bug#824050: emacs24: please make autoloads files reproducible

2016-05-26 Thread Alexis Bienvenüe
Note that upstream recently commited another solution to this
reproducibility issue for emacs 25.2, defaulting autoloads timestamps to
nil:

 https://debbugs.gnu.org/cgi/bugreport.cgi?bug=22213
 http://git.savannah.gnu.org/cgit/emacs.git/tree/etc/NEWS#n393

Regards,
Alexis Bienvenüe.



Bug#825092: grass: please make the build reproducible (fileordering, randomness)

2016-05-23 Thread Alexis Bienvenüe
Source: grass
Version: 7.0.4-1
Severity: wishlist
Tags: patch upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: fileordering randomness
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org
Control: block -1 by 825088

Dear Maintainer,

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

There are several reproducibility issues:

1) File ordering issues - the build result depends on the order of the
files listed with readdir or equivalent.

* in tools/build_modules_xml.py - see patch sort-build-modules-list

* in lib/db/dbmi_base/dbmscap.c (this affects options order in the
html/db.*.html files) - see patch sort-dbmscap that builds an ordered list.

* in include/Make/Vars.make (this affects the order in which object
files are merged) - see patch sort-obj-files

2) Randomness issue: html/colortables/random.png is built using a
pseudo-random generator seeded with build-time value. See patch
srand48_auto-from-SOURCE_DATE_EPOCH that uses the SOURCE_DATE_EPOCH [2]
environment variable (when set) to set a seed from last debian/changelog
entry date.

3) Makefile mistake: from
https://buildd.debian.org/status/fetch.php?pkg=grass=i386=7.0.4-1=1462121195,
it seems to me that the binary NAD files are not installed properly:

/usr/bin/install -c  -m 644 OBJ.i686-pc-linux-gnu/prvi
/«PKGBUILDDIR»/dist.i686-pc-linux-gnu/etc/proj/nad/prvi
/usr/bin/install -c  -m 644 OBJ.i686-pc-linux-gnu/prvi
/«PKGBUILDDIR»/dist.i686-pc-linux-gnu/etc/proj/nad/hawaii
/usr/bin/install -c  -m 644 OBJ.i686-pc-linux-gnu/prvi
/«PKGBUILDDIR»/dist.i686-pc-linux-gnu/etc/proj/nad/alaska
/usr/bin/install -c  -m 644 OBJ.i686-pc-linux-gnu/prvi
/«PKGBUILDDIR»/dist.i686-pc-linux-gnu/etc/proj/nad/stgeorge
/usr/bin/install -c  -m 644 OBJ.i686-pc-linux-gnu/prvi
/«PKGBUILDDIR»/dist.i686-pc-linux-gnu/etc/proj/nad/FL
/usr/bin/install -c  -m 644 OBJ.i686-pc-linux-gnu/prvi
/«PKGBUILDDIR»/dist.i686-pc-linux-gnu/etc/proj/nad/WO
/usr/bin/install -c  -m 644 OBJ.i686-pc-linux-gnu/prvi
/«PKGBUILDDIR»/dist.i686-pc-linux-gnu/etc/proj/nad/TN
/usr/bin/install -c  -m 644 OBJ.i686-pc-linux-gnu/prvi
/«PKGBUILDDIR»/dist.i686-pc-linux-gnu/etc/proj/nad/stlrnc
/usr/bin/install -c  -m 644 OBJ.i686-pc-linux-gnu/prvi
/«PKGBUILDDIR»/dist.i686-pc-linux-gnu/etc/proj/nad/stpaul
/usr/bin/install -c  -m 644 OBJ.i686-pc-linux-gnu/prvi
/«PKGBUILDDIR»/dist.i686-pc-linux-gnu/etc/proj/nad/conus
/usr/bin/install -c  -m 644 OBJ.i686-pc-linux-gnu/prvi
/«PKGBUILDDIR»/dist.i686-pc-linux-gnu/etc/proj/nad/MD
/usr/bin/install -c  -m 644 OBJ.i686-pc-linux-gnu/prvi
/«PKGBUILDDIR»/dist.i686-pc-linux-gnu/etc/proj/nad/WI

The single OBJ.i686-pc-linux-gnu/prvi file is here installed to *all*
/etc/proj/nad files.
See the patch binary-nad-install for a fix.

4) nad2bin issue: nad2bin has unreproducible output (see #825088)

Once these proposed patches are applied (and #825088 fixed), grass can
be built reproducibly in our current experimental framework.

Regards,
Alexis Bienvenüe.

[1] https://wiki.debian.org/ReproducibleBuilds
[2] https://reproducible-builds.org/specs/source-date-epoch/


Description: Sort build modules list
 Sort modules in module_items.xml, to make the build reproducible.
Author: Alexis Bienvenüe <p...@passoire.fr>

--- grass-7.0.4.orig/gui/wxpython/tools/build_modules_xml.py
+++ grass-7.0.4/gui/wxpython/tools/build_modules_xml.py
@@ -51,7 +51,7 @@ def parse_modules(fd):
 # TODO: what about ms windows? does gtask handle this? 
 mlist = list(gcore.get_commands()[0])
 indent = 4
-for m in mlist:
+for m in sorted(mlist):
 # TODO: get rid of g.mapsets_picker.py
 if m == 'g.mapsets_picker.py' or m == 'g.parser':
 continue
Description: Sort dbmscap list
 To get reproducible results.
Author: Alexis Bienvenüe <p...@passoire.fr>

Index: grass-7.0.4/lib/db/dbmi_base/dbmscap.c
===
--- grass-7.0.4.orig/lib/db/dbmi_base/dbmscap.c
+++ grass-7.0.4/lib/db/dbmi_base/dbmscap.c
@@ -209,19 +209,22 @@ dbDbmscap *db_read_dbmscap(void)
 return list;
 }
 
+static int cmp_entry(dbDbmscap *a, dbDbmscap *b) {
+  return( a->driverName && b->driverName ? strcmp(a->driverName,b->driverName) 
: 0 );
+}
+
 static void add_entry(dbDbmscap ** list, char *name, char *startup, char 
*comment)
 {
-dbDbmscap *head, *cur, *tail;
+/* add an entry to the list, so that the list remains ordered (by 
driverName) */
 
-/* add this entry to the head of a linked list */
-tail = head = *list;
-while (tail && tail->next)
-   tail = tail->next;
-*list = NULL;
+dbDbmscap *head, *cur, *tail;
 
 cur = (dbDbmscap *) db_malloc(sizeof(dbDbmscap));
-if (cur == NULL)
-   return; /* out of memory */
+if (cur == NULL) {
+*list = NULL;
+   return;
+/* out of memory */
+}
 cur->next = NULL;
 
 /* copy

Bug#825088: proj: please make nad2bin output reproducible

2016-05-23 Thread Alexis Bienvenüe
Source: proj
Version: 4.9.2-2
Severity: wishlist
Tags: patch upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: toolchain
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

While working on the “reproducible builds” effort [1], we have noticed
that the nad2bin binary has unreproducible output, as it includes
uninitialized memory state when CTABLE.id's length is less than the
available 80 bytes.

See the attached patch for a proposed solution.

Regards,
Alexis Bienvenüe.

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

Description: Makes nad2bin output reproducible
 Init CTABLE.id char[80] variable with zeroes, so that nad2bin output does
 not depend on memory state before call, and hence be reproducible.
Author: Alexis Bienvenüe <p...@passoire.fr>

--- proj-4.9.2.orig/src/nad2bin.c
+++ proj-4.9.2/src/nad2bin.c
@@ -98,6 +98,7 @@ int main(int argc, char **argv) {
 /*  Read the ASCII Table*/
 /*  */
 
+memset(ct.id,0,MAX_TAB_ID);
 if ( NULL == fgets(ct.id, MAX_TAB_ID, stdin) ) {
 perror("fgets");
 exit(1);


Bug#824472: torch3: please make the build reproducible (fileordering)

2016-05-23 Thread Alexis Bienvenüe
Hi.

As pointed out by Reiner Herrmann, the previous patch is not very
robust: the wildcard function may be executed before target's
dependencies building, leading to an empty (or incomplete) objects list.
The attached new patch solves that problem introducing intermediary targets.

Regards,
Alexis Bienvenüe.
diff -u torch3-3.1/Makefile.modules torch3-3.1/Makefile.modules
--- torch3-3.1/Makefile.modules
+++ torch3-3.1/Makefile.modules
@@ -12,11 +12,18 @@
 all:	$(LIBTORCH) $(LIBSOTORCH)
 soname: $(LIBSOTORCH)
 
+.PHONY: LIBTORCH_build LIBSOTORCH_build
+
 $(LIBTORCH): $(STATICOBJS)
+	$(MAKE) LIBTORCH_build -f ../Makefile.modules
+LIBTORCH_build:
 	@echo "Archiving..."
-	$(AR) $(LIBTORCH) $(STATICOBJSDIR)/*.o
+	$(AR) $(LIBTORCH) $(sort $(wildcard $(STATICOBJSDIR)/*.o))
+
 $(LIBSOTORCH): $(DYNAMICOBJS)
-	$(CC) -shared -Wl,-soname=libtorch.so.3 -o $(LIBSOTORCH) $(DYNAMICOBJSDIR)/*.o
+	$(MAKE) LIBSOTORCH_build -f ../Makefile.modules
+LIBSOTORCH_build:
+	$(CC) -shared -Wl,-soname=libtorch.so.3 -o $(LIBSOTORCH) $(sort $(wildcard $(DYNAMICOBJSDIR)/*.o))
 	
 
 $(OBJS_DIR)/static/%.o: %.cc



Bug#824808: gdal: please make the build reproducible (fileordering)

2016-05-20 Thread Alexis Bienvenüe
Le 20/05/2016 11:18, Sebastiaan Couwenberg a écrit :
> The second patches seems better because it doesn't rely on external ls
> which is not a given for the Windows builds.

OK I see.

> I don't understand the need for the buildit target, isn't it sufficient
> to do the wildcard sorting in the $(LIBGDAL) target?

In some situations some of the target dependencies do not exist before
the "make target" call. When this arises, as $(wildcard) is expanded
before building the dependencies, it can miss some files… I was not sure
of the situation here, so I added a transitional target to be safe.

> I've modified your patch to do that, and that seems to work too.
> 
> https://anonscm.debian.org/cgit/pkg-grass/gdal.git/tree/debian/patches/sort-files-in-static-library.patch?id=caf37a5adc5ea187af41b0faca799f45d2364bec

Thanks!

Regards,
Alexis.



Bug#824808: gdal: please make the build reproducible (fileordering)

2016-05-19 Thread Alexis Bienvenüe
Source: gdal
Version: 2.1.0+dfsg-2
Severity: wishlist
Tags: patch upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: fileordering
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

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

Either one of the two attached patches fixes the order files are passed
to libtool — but I don't know if one of them could be an acceptable
solution.
One applied, gdal can be built reproducibly in our current experimental
framework.

Regards,
Alexis Bienvenüe.

[1]: https://wiki.debian.org/ReproducibleBuilds
Description: Sort files
 Sort files passed as arguments to make the build reproducible.
Author: Alexis Bienvenüe <p...@passoire.fr>

Index: gdal-2.1.0+dfsg/GNUmakefile
===
--- gdal-2.1.0+dfsg.orig/GNUmakefile
+++ gdal-2.1.0+dfsg/GNUmakefile
@@ -53,7 +53,7 @@ $(GDAL_SLIB): $(GDAL_OBJ) $(GDAL_LIB)
-o $(GDAL_SLIB)
 
 $(LIBGDAL):$(GDAL_OBJ:.o=.lo)
-   $(LD) $(LDFLAGS) $(LIBS) -o $@ $(GDAL_OBJ:.o=.lo) \
+   $(LD) $(LDFLAGS) $(LIBS) -o $@ `LC_ALL=C ls $(GDAL_OBJ:.o=.lo) 
2>/dev/null` \
-rpath $(INST_LIB) \
-no-undefined \
-version-info $(LIBGDAL_CURRENT):$(LIBGDAL_REVISION):$(LIBGDAL_AGE)
Description: Sort files
 Sort files passed as arguments to make the build reproducible.
Author: Alexis Bienvenüe <p...@passoire.fr>

Index: gdal-2.1.0+dfsg/GNUmakefile
===
--- gdal-2.1.0+dfsg.orig/GNUmakefile
+++ gdal-2.1.0+dfsg/GNUmakefile
@@ -53,7 +53,11 @@ $(GDAL_SLIB):$(GDAL_OBJ) $(GDAL_LIB)
-o $(GDAL_SLIB)
 
 $(LIBGDAL):$(GDAL_OBJ:.o=.lo)
-   $(LD) $(LDFLAGS) $(LIBS) -o $@ $(GDAL_OBJ:.o=.lo) \
+   $(MAKE) $(LIBGDAL).buildit
+
+.PHONY: $(LIBGDAL).buildit
+$(LIBGDAL).buildit:
+   $(LD) $(LDFLAGS) $(LIBS) -o $(LIBGDAL) $(sort $(wildcard 
$(GDAL_OBJ:.o=.lo))) \
-rpath $(INST_LIB) \
-no-undefined \
-version-info $(LIBGDAL_CURRENT):$(LIBGDAL_REVISION):$(LIBGDAL_AGE)


Bug#824668: gmt: please make the build reproducible (timestamps)

2016-05-18 Thread Alexis Bienvenüe
Le 18/05/2016 17:36, Bas Couwenberg a écrit :
> The transition to GDAl 2.1.0 is almost complete (#823335). I'll upload a
> new GMT revision that includes the upstreamed patch after GDAL 2.1.0 is
> in testing.

Great, thanks!

Alexis.



Bug#824668: gmt: please make the build reproducible (timestamps)

2016-05-18 Thread Alexis Bienvenüe
Source: gmt
Version: 5.2.1+dfsg-5
Severity: wishlist
Tags: patch upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: timestamps
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

While working on the `€œreproducible builds'€ effort [1], we have noticed
that 'gmt' could not be built reproducibly.

The attached patch honours the SOURCE_DATE_EPOCH environment
variable [2] to get a reproducible build date from the last
debian changelog entry.
Once applied, gmt can be built reproducibly in our current
experimental framework.

Regards,
Alexis Bienvenüe.

 [1]: https://wiki.debian.org/ReproducibleBuilds
 [2]: https://reproducible-builds.org/specs/source-date-epoch/

Description: Honour SOURCE_DATE_EPOCH
 Honour the SOURCE_DATE_EPOCH environment variable to set the sources
 last modification date.
 See https://reproducible-builds.org/specs/source-date-epoch/
Author: Alexis Bienvenüe <p...@passoire.fr>

Index: gmt-5.2.1+dfsg/cmake/modules/today.c
===
--- gmt-5.2.1+dfsg.orig/cmake/modules/today.c
+++ gmt-5.2.1+dfsg/cmake/modules/today.c
@@ -5,18 +5,32 @@
 
 #include 
 #include 
+#include 
 
 #define BUFSIZE 32
 
 int main () {
 	char today_string[BUFSIZE];
 
-	/* obtain current time as time since epoch */
-	time_t clock = time (NULL);
-
-	/* convert time since epoch to calendar time expressed as local time */
-	struct tm *p_time = localtime ();
+	time_t clock;
+struct tm *p_time;
 
+/* See https://reproducible-builds.org/specs/source-date-epoch/ */
+char* source_date_epoch = getenv("SOURCE_DATE_EPOCH");
+if(source_date_epoch) {
+  /* get sources last modification date from environment */
+  clock = strtoull(source_date_epoch, NULL, 10);
+
+  /* Use UTC for reproducibility */
+  p_time = gmtime ();
+} else {
+  /* obtain current time as time since epoch */
+  clock = time (NULL);
+
+  /* convert time since epoch to calendar time expressed as local time */
+  p_time = localtime ();
+}
+
 	/* convert tm object to custom textual representation ;mm;dd;Mmm*/
 	size_t result = strftime(today_string, BUFSIZE, "%Y;%m;%d;%B", p_time);
 


Bug#824653: elkcode: please make the build reproducible (environment)

2016-05-18 Thread Alexis Bienvenüe
Source: elkcode
Version: 2.3.22-1
Severity: wishlist
Tags: patch upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: environment
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch fixes the locale used by ls to sort files.
Once applied, elkcode can be built reproducibly in our current
experimental framework.

Regards,
Alexis Bienvenüe.

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







Description: Set ls locale for reproducible order.
 Fix locale used with `ls', so that the order of the files listed is
 always the same. This makes the build reproducible.
Author: Alexis Bienvenüe <p...@passoire.fr>

--- elkcode-2.3.22.orig/src/Makefile
+++ elkcode-2.3.22/src/Makefile
@@ -157,7 +157,7 @@ cleanall:
 
 doc:
 	rm -f elk.aux elk.bbl elk.blg elk.log elk.pdf elk.tex elk.toc elk.lst
-	ls $(SRC_modules) $(SRC_routines) $(SRC_XC) $(SRC_phonon) $(SRC_DFTU) \
+	LC_ALL=C ls $(SRC_modules) $(SRC_routines) $(SRC_XC) $(SRC_phonon) $(SRC_DFTU) \
  $(SRC_RDMFT) $(SRC_TDDFT) > elk.lst
 	./protex -F -s $(SRC_main) $$(cat elk.lst) > elk.tex
 	pdflatex elk;pdflatex elk;pdflatex elk


Bug#824639: openblas: please make the build reproducible (fileordering)

2016-05-18 Thread Alexis Bienvenüe
Source: openblas
Version: 0.2.18-1
Severity: wishlist
Tags: patch upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: fileordering
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch fixes the order files are passed to `ar' and gcc.
Once applied, openblas can be built reproducibly in our current
experimental framework.

Regards,
Alexis Bienvenüe.

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





Description: Order files
 Order the files when calling `ar' or $(CC), to make the build reproducible.
Author: Alexis Bienvenüe <p...@passoire.fr>

Index: openblas-0.2.18/Makefile
===
--- openblas-0.2.18.orig/Makefile
+++ openblas-0.2.18/Makefile
@@ -207,7 +207,7 @@ netlib :
 	mkdir lapack-netlib
 	cd lapack-netlib && ar -x /usr/lib/lapack/liblapack_pic.a
 	make -C interface delete-duplicate-lapack-objects
-	ar -ru $(LIBNAME) lapack-netlib/*
+	ar -ru $(LIBNAME) `LC_ALL=C ls lapack-netlib/*`
 
 clean::
 	rm -rf lapack-netlib
Index: openblas-0.2.18/interface/Makefile
===
--- openblas-0.2.18.orig/interface/Makefile
+++ openblas-0.2.18/interface/Makefile
@@ -2153,7 +2153,7 @@ libblas.so.3: $(SBLAS1OBJS) $(SBLAS2OBJS
 
 # The prerequisites must match the symbols deleted in target delete-duplicate-lapack-objects
 liblapack.so.3: $(SLAPACKOBJS) $(DLAPACKOBJS) $(CLAPACKOBJS) $(ZLAPACKOBJS) ../kernel/lsame.o ../driver/others/xerbla.o
-	$(CC) $(LDFLAGS) -shared -o $@ $^ ../lapack-netlib/* -Wl,-soname,liblapack.so.3 -L.. -lopenblas $(EXTRALIB)
+	$(CC) $(LDFLAGS) -shared -o $@ $^ `LC_ALL=C ls ../lapack-netlib/*` -Wl,-soname,liblapack.so.3 -L.. -lopenblas $(EXTRALIB)
 
 clean::
 	rm -f libblas.so.3 liblapack.so.3


Bug#824592: twitter-bootstrap: wrong copyright formatting when using bash

2016-05-17 Thread Alexis Bienvenüe
Source: twitter-bootstrap
Version: 2.0.2+dfsg-9
Severity: minor
Tags: patch upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: environment
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

While working on the “reproducible builds” effort [1], we have noticed
that 'twitter-bootstrap' could not be built reproducibly [2].

When using the shell bash, echo does not expand "\n" in the copyright
string, leading to an unexpected result.
This can be fixed by using printf instead of echo, as illustrated by the
attached patch.

Once applied, twitter-bootstrap can be built reproducibly in our current
experimental framework.

Regards,
Alexis Bienvenüe.

 [1] https://wiki.debian.org/ReproducibleBuilds
 [2]
https://reproducible.debian.net/rb-pkg/testing/amd64/twitter-bootstrap.html







diff -Nru twitter-bootstrap-2.0.2+dfsg/debian/patches/06-use-printf-instead-of-echo.patch twitter-bootstrap-2.0.2+dfsg/debian/patches/06-use-printf-instead-of-echo.patch
--- twitter-bootstrap-2.0.2+dfsg/debian/patches/06-use-printf-instead-of-echo.patch	1970-01-01 01:00:00.0 +0100
+++ twitter-bootstrap-2.0.2+dfsg/debian/patches/06-use-printf-instead-of-echo.patch	2016-05-17 22:06:16.0 +0200
@@ -0,0 +1,17 @@
+Description: Use printf instead of echo
+ "\n" can be expanded or not by echo, depending on the shell used.
+ So using printf instead of echo is more reliable.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+Index: twitter-bootstrap-2.0.2+dfsg/Makefile
+===
+--- twitter-bootstrap-2.0.2+dfsg.orig/Makefile
 twitter-bootstrap-2.0.2+dfsg/Makefile
+@@ -35,7 +35,7 @@ bootstrap:
+ 	lessc --compress ${BOOTSTRAP_RESPONSIVE_LESS} > bootstrap/css/bootstrap-responsive.min.css
+ 	cat js/bootstrap-transition.js js/bootstrap-alert.js js/bootstrap-button.js js/bootstrap-carousel.js js/bootstrap-collapse.js js/bootstrap-dropdown.js js/bootstrap-modal.js js/bootstrap-tooltip.js js/bootstrap-popover.js js/bootstrap-scrollspy.js js/bootstrap-tab.js js/bootstrap-typeahead.js > bootstrap/js/bootstrap.js
+ 	uglifyjs bootstrap/js/bootstrap.js > bootstrap/js/bootstrap.min.tmp.js
+-	echo "/**\n* Bootstrap.js by @fat & @mdo\n* Copyright 2012 Twitter, Inc.\n* http://www.apache.org/licenses/LICENSE-2.0.txt\n*/; > bootstrap/js/copyright.js
++	printf "/**\n* Bootstrap.js by @fat & @mdo\n* Copyright 2012 Twitter, Inc.\n* http://www.apache.org/licenses/LICENSE-2.0.txt\n*/\n; > bootstrap/js/copyright.js
+ 	cat bootstrap/js/copyright.js bootstrap/js/bootstrap.min.tmp.js > bootstrap/js/bootstrap.min.js
+ 	rm bootstrap/js/copyright.js bootstrap/js/bootstrap.min.tmp.js
+ 
diff -Nru twitter-bootstrap-2.0.2+dfsg/debian/patches/series twitter-bootstrap-2.0.2+dfsg/debian/patches/series
--- twitter-bootstrap-2.0.2+dfsg/debian/patches/series	2015-09-25 15:00:00.0 +0200
+++ twitter-bootstrap-2.0.2+dfsg/debian/patches/series	2016-05-17 22:06:56.0 +0200
@@ -3,3 +3,4 @@
 03-use-nodejs-command.patch
 04-build-with-node-1.4.2.patch
 05-drop-nc-from-uglifyjs.patch
+06-use-printf-instead-of-echo.patch


Bug#824569: gap-ctbllib: please make the build reproducible (timestamps)

2016-05-17 Thread Alexis Bienvenüe
Source: gap-ctbllib
Version: 1r2p2.dfsg.0-2
Severity: wishlist
Tags: patch
User: reproducible-bui...@lists.alioth.debian.org
Usertags: timestamps
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch removes timestamps from the compressed *.{six,toc} files.
Once applied, gap-ctbllib can be built reproducibly in our current
experimental framework.

Regards,
Alexis Bienvenüe.

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


diff -Nru gap-ctbllib-1r2p2.dfsg.0/debian/patches/doc-makefile gap-ctbllib-1r2p2.dfsg.0/debian/patches/doc-makefile
--- gap-ctbllib-1r2p2.dfsg.0/debian/patches/doc-makefile	2014-08-06 23:47:04.0 +0200
+++ gap-ctbllib-1r2p2.dfsg.0/debian/patches/doc-makefile	2016-05-17 15:11:41.0 +0200
@@ -26,8 +26,8 @@
 +install-help:
 +	install -d $(DOCDIR)/$(DIRS)
 +	set -e; for man in $(DIRS); do \
-+	  gzip --best $$man/manual.six; \
-+	  gzip --best $$man/main.toc; \
++	  gzip --best -n $$man/manual.six; \
++	  gzip --best -n $$man/main.toc; \
 +	  install -o root -g root -m 0644 $$man/manualbib.xml $(DOCDIR)/$$man;\
 +	  install -o root -g root -m 0644 $$man/manualbib.xml.bib $(DOCDIR)/$$man;\
 +	  install -o root -g root -m 0644 $$man/manual.six.gz $(DOCDIR)/$$man;\


Bug#824567: tkdesk: please make the build reproducible (fileordering)

2016-05-17 Thread Alexis Bienvenüe
Source: tkdesk
Version: 2.0-9.2
Severity: wishlist
Tags: patch upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: fileordering
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch fixes the order in which files are parsed by the
mkindex script.
Once applied, tkdesk can be built reproducibly in our current
experimental framework.

Regards,
Alexis Bienvenüe.

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

--- tkdesk-2.0.orig/tcldesk/mkindex
+++ tkdesk-2.0/tcldesk/mkindex
@@ -74,7 +74,7 @@
 append index "# sets an element in the auto_index array, where the\n"
 append index "# element name is the name of a command and the value is\n"
 append index "# a script that loads the command.\n\n"
-foreach file [eval glob $args] {
+foreach file [lsort [eval glob $args]] {
 	set f ""
 	set error [catch {
 	set f [open $file]


Bug#824501: cclive: please make the build reproducible (timestamps)

2016-05-16 Thread Alexis Bienvenüe
Source: cclive
Version: 0.9.3-0.1
Severity: wishlist
Tags: patch upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: timestamps
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

While working on the `€œreproducible builds'€ effort [1], we have noticed
that 'cclive' could not be built reproducibly.

The attached patch honours the SOURCE_DATE_EPOCH environment
variable [2] to get a reproducible build date from the last
debian changelog entry.
Once applied, cclive can be built reproducibly in our current
experimental framework.

Regards,
Alexis Bienvenüe.

 [1]: https://wiki.debian.org/ReproducibleBuilds
 [2]: https://reproducible-builds.org/specs/source-date-epoch/




Description: Honour SOURCE_DATE_EPOCH
 Get build date from the environment variable SOURCA_DETE_EPOCH (is set)
 to make the build reproducible.
 See https://reproducible-builds.org/specs/source-date-epoch/
Author: Alexis Bienvenüe <p...@passoire.fr>

--- cclive-0.9.3.orig/configure.ac
+++ cclive-0.9.3/configure.ac
@@ -37,7 +37,9 @@ AC_DEFINE_UNQUOTED([CXXFLAGS], "$CXXFLAG
 AC_DEFINE_UNQUOTED([CXX], "$CXX", [Define to compiler])
 
 AC_PATH_PROG([DATE], [date], [no])
-AS_IF([test x"$DATE" != "xno"], [build_time=`$DATE +"%F %T %z"`])
+DATE_FMT="%F %T %z"
+SOURCE_DATE_EPOCH="${SOURCE_DATE_EPOCH:-$(date +%s)}"
+build_time=$(date -u -d "@$SOURCE_DATE_EPOCH" "+$DATE_FMT" 2>/dev/null || date -u -r "$SOURCE_DATE_EPOCH" "+$DATE_FMT" 2>/dev/null || date -u "+$DATE_FMT" 2>/dev/null)
 AC_DEFINE_UNQUOTED([BUILD_TIME], ["$build_time"], [We have build time])
 
 AC_PATH_PROG([A2X], [a2x], [no])


Bug#824472: torch3: please make the build reproducible (fileordering)

2016-05-16 Thread Alexis Bienvenüe
Source: torch3
Version: 3.1-2.1
Severity: wishlist
Tags: patch
User: reproducible-bui...@lists.alioth.debian.org
Usertags: fileordering
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch fixes the order in which *.o files are merged. Once
applied, torch3 can be built reproducibly in our current experimental
framework.

Regards,
Alexis Bienvenüe.

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




--- Makefile.modules.orig
+++ Makefile.modules
@@ -14,9 +14,9 @@
 
 $(LIBTORCH): $(STATICOBJS)
 	@echo "Archiving..."
-	$(AR) $(LIBTORCH) $(STATICOBJSDIR)/*.o
+	$(AR) $(LIBTORCH) $(sort $(wildcard $(STATICOBJSDIR)/*.o))
 $(LIBSOTORCH): $(DYNAMICOBJS)
-	$(CC) -shared -Wl,-soname=libtorch.so.3 -o $(LIBSOTORCH) $(DYNAMICOBJSDIR)/*.o
+	$(CC) -shared -Wl,-soname=libtorch.so.3 -o $(LIBSOTORCH) $(sort $(wildcard $(DYNAMICOBJSDIR)/*.o))
 	
 
 $(OBJS_DIR)/static/%.o: %.cc


Bug#824183: texlive-bin: please set default value of SOURCE_DATE_EPOCH_TEX_PRIMITIVES to 1

2016-05-13 Thread Alexis Bienvenüe
Control: tags -1 + patch

With a proposed patch.

Thanks,
Alexis Bienvenüe.
Description: SOURCE_DATE_EPOCH_TEX_PRIMITIVES defaults to 1
 If SOURCE_DATE_EPOCH is set, the tex primitives \year, \month, \day, \time
 will be set from its value if SOURCE_DATE_EPOCH_TEX_PRIMITIVES is not set
 or if SOURCE_DATE_EPOCH_TEX_PRIMITIVES is set to 1.
 This helps to make reproducible builds using only the environment variable
 SOURCE_DATE_EPOCH - setting some more *tool-specific* environment variables
 from dpkg-buildpackage is not possible.
Author: Alexis Bienvenüe <p...@passoire.fr>
Bug-Debian: https://bugs.debian.org/824183

--- texlive-bin-2016.20160512.41045.orig/texk/web2c/lib/texmfmp.c
+++ texlive-bin-2016.20160512.41045/texk/web2c/lib/texmfmp.c
@@ -2248,7 +2248,14 @@ get_date_and_time (integer *minutes,  in
   struct tm *tmptr;
 #ifndef onlyTeX
   string sde_texprim = getenv ("SOURCE_DATE_EPOCH_TEX_PRIMITIVES");
-  if (sde_texprim && STREQ (sde_texprim, "1")) {
+  /* warn if they gave an invalid value, empty (null string) ok.  */
+  if (sde_texprim && strlen (sde_texprim) > 0
+  && !STREQ (sde_texprim, "0") && !STREQ (sde_texprim, "1")) {
+WARNING1 ("invalid value (expected 0 or 1) for environment variable 
$SOURCE_DATE_EPOCH_TEX_PRIMITIVES: %s", 
+  sde_texprim);
+  }
+  if (getenv ("SOURCE_DATE_EPOCH") &&
+  !(sde_texprim && STREQ (sde_texprim, "0"))) {
 init_start_time ();
 tmptr = gmtime (_time);
   } else
@@ -2258,15 +2265,6 @@ get_date_and_time (integer *minutes,  in
use current time.  */
 time_t myclock = time ((time_t *) 0);
 tmptr = localtime ();
-
-#ifndef onlyTeX
-/* warn if they gave an invalid value, empty (null string) ok.  */
-if (sde_texprim && strlen (sde_texprim) > 0
-&& !STREQ (sde_texprim, "0")) {
-WARNING1 ("invalid value (expected 0 or 1) for environment variable 
$SOURCE_DATE_EPOCH_TEX_PRIMITIVES: %s", 
-  sde_texprim);
-}
-#endif /* not onlyTeX */
   }
 
   *minutes = tmptr->tm_hour * 60 + tmptr->tm_min;
--- texlive-bin-2016.20160512.41045.orig/texk/web2c/man/pdftex.man
+++ texlive-bin-2016.20160512.41045/texk/web2c/man/pdftex.man
@@ -380,7 +380,7 @@ timestamps in the PDF output, such as th
 This is useful for making reproducible builds.
 .TP
 .B SOURCE_DATE_EPOCH_TEX_PRIMITIVES
-If set to the value "1", the time-related \*(TX primitives
+If not set to the value "0", the time-related \*(TX primitives
 .RI ( \eyear ,
 .IR \emonth ,
 .IR \eday ,


Bug#824183: texlive-bin: please set default value of SOURCE_DATE_EPOCH_TEX_PRIMITIVES to 1

2016-05-13 Thread Alexis Bienvenüe
Source: texlive-bin
Version: 2016.20160512.41045-1
Severity: wishlist
Tags: upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: toolchain
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

Extended support of SOURCE_DATE_EPOCH in TL2016 does a great job for
reproducibility [1]. However, setting a tool-specific environment
variable as SOURCE_DATE_EPOCH_TEX_PRIMITIVES from dpkg-buildpackage is
not possible.
I would suggest to set the default value of
SOURCE_DATE_EPOCH_TEX_PRIMITIVES to 1 instead of 0 in pdftex.

I think SOURCE_DATE_EPOCH is most often used to build reproducible
packages, and in this case the user always need
SOURCE_DATE_EPOCH_TEX_PRIMITIVES=1.
Also, SOURCE_DATE_EPOCH_TEX_PRIMITIVES=1 makes the dates in the
timestamps and in the document coherent.

Regards,
Alexis Bienvenüe.

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



Bug#787424: emacs24: improve reproducibility: please order hashes when generating .el files

2016-05-12 Thread Alexis Bienvenüe
Control: tags -1 + patch

Hi.

On Mon, 01 Jun 2015 11:44:06 -0400 Daniel Kahn Gillmor
<d...@fifthhorseman.net> wrote:
> One example can be seen in the difference in
> /usr/share/emacs/24.4/lisp/finder-inf.el from here:
> 
> https://reproducible.debian.net/dbd/unstable/amd64/emacs24_24.4+1-5.debbindiff.html
> 
> compare the list after "convenience" here, which sorts the first 13
> items differently on each build:

This difference is coming from the Makefile, which passes file names in
a non-reproducible order to finder-compile-keywords-make-dist, which
itself seem to me reproducible.

The attached patch sorts the filenames before passing them to
finder-compile-keywords-make-dist, and fixes this non-reproductible
behavior in my experimental toolchain [1].

Regards,
Alexis Bienvenüe.

[1] https://wiki.debian.org/ReproducibleBuilds/ExperimentalToolchain
Description: Sort files in $wins
 lisp/Makefile.in: sort files in the $wins variable, to make the build
 reproducible.
Author: Alexis Bienvenüe <p...@passoire.fr>
Bug-Debian: https://bugs.debian.org/787424

Index: emacs24-24.5+1/lisp/Makefile.in
===
--- emacs24-24.5+1.orig/lisp/Makefile.in
+++ emacs24-24.5+1/lisp/Makefile.in
@@ -110,14 +110,14 @@ COMPILE_FIRST = \
 emacs = EMACSLOADPATH= '$(EMACS)' $(EMACSOPT)
 
 # Common command to find subdirectories
-setwins=for file in `find . -type d -print`; do \
+setwins=for file in `find . -type d -print | LC_ALL=C sort`; do \
 	   case $$file in */.* ) ;; \
 		*) wins="$$wins$${wins:+ }$$file" ;; \
 	   esac; \
 	done
 
 # Find all subdirectories except `obsolete' and `term'.
-setwins_almost=for file in `find ${srcdir} -type d -print`; do \
+setwins_almost=for file in `find ${srcdir} -type d -print | LC_ALL=C sort`; do \
 	   case $$file in ${srcdir}*/obsolete | ${srcdir}*/term ) ;; \
 	 *) wins="$$wins$${wins:+ }$$file" ;; \
 	   esac; \
@@ -126,14 +126,14 @@ setwins_almost=for file in `find ${srcdi
 # Find all subdirectories except `obsolete', `term', and `leim' (and subdirs).
 # We don't want the leim files listed as packages, especially
 # since many share basenames with files in language/.
-setwins_finder=for file in `find ${srcdir} -type d -print`; do \
+setwins_finder=for file in `find ${srcdir} -type d -print | LC_ALL=C sort`; do \
 	   case $$file in ${srcdir}*/obsolete | ${srcdir}*/term | ${srcdir}*/leim* ) ;; \
 	 *) wins="$$wins$${wins:+ }$$file" ;; \
 	   esac; \
 done
 
 # Find all subdirectories in which we might want to create subdirs.el.
-setwins_for_subdirs=for file in `find ${srcdir} -type d -print`; do \
+setwins_for_subdirs=for file in `find ${srcdir} -type d -print | LC_ALL=C sort`; do \
 	   case $$file in \
 	 ${srcdir}*/cedet* | ${srcdir}*/leim* ) ;; \
 	 *) wins="$$wins$${wins:+ }$$file" ;; \


Bug#824050: emacs24: please make autoloads files reproducible

2016-05-11 Thread Alexis Bienvenüe
Source: emacs24
Version: 24.5+1-6
Severity: wishlist
Tags: patch upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: toolchain
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

autoloads files embed a timestamp. To get a reproducible build [1] for
software packages that build-depend on emacs (including emacs24), it
would be great to make this timestamp honoring the SOURCE_DATE_EPOCH
environment variable [2], that is set to the last debian/changelog entry
date when building binary debian packages.

Please find attached a proposed patch for this.

Regards,
Alexis Bienvenüe.

[1] https://wiki.debian.org/ReproducibleBuilds/
[2] https://reproducible-builds.org/specs/source-date-epoch/

Description: Make autoloads honour SOURCE_DATE_EPOCH
Author: Alexis Bienvenüe <p...@passoire.fr>

Index: emacs24-24.5+1/lisp/emacs-lisp/autoload.el
===
--- emacs24-24.5+1.orig/lisp/emacs-lisp/autoload.el
+++ emacs24-24.5+1/lisp/emacs-lisp/autoload.el
@@ -604,7 +604,10 @@ Return non-nil if and only if FILE adds
   ;; We'd really want to just use
   ;; `emacs-internal' instead.
   nil nil 'emacs-mule-unix)
-   (nth 5 (file-attributes relfile
+   (let ((source-date-epoch (getenv "SOURCE_DATE_EPOCH")))
+ (if (null source-date-epoch)
+ (nth 5 (file-attributes relfile))
+   (seconds-to-time (string-to-number source-date-epoch))
 (insert " Generated autoloads from " relfile "\n")))
 (insert generate-autoload-section-trailer
   (message "Generating autoloads for %s...done" file))
@@ -740,7 +743,10 @@ write its autoloads into the specified f
 		  t files-re))
 			   dirs)))
  (done ())
-	 (this-time (current-time))
+	 (this-time (let ((source-date-epoch (getenv "SOURCE_DATE_EPOCH")))
+  (if (null source-date-epoch)
+  (current-time)
+(seconds-to-time (string-to-number source-date-epoch)
  ;; Files with no autoload cookies or whose autoloads go to other
  ;; files because of file-local autoload-generated-file settings.
 	 (no-autoloads nil)


Bug#824049: emacs24: please make start value of gensym-counter reproducible

2016-05-11 Thread Alexis Bienvenüe
Source: emacs24
Version: 24.5+1-6
Severity: wishlist
Tags: patch upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: toolchain
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

When bytecompiling elisp files, cl-gensym-counter is initialized from
the current time, leading to unreproducible results. This can affect
reproducibility [1] of some software packages that build-depend on emacs
(and of emacs24 itself). I suggest to set the initial value of
cl-gensym-counter from the names of the files to be compiled (see
proposed patch).

Test-case:

cd /tmp
wget
https://sources.debian.net/data/main/e/emacs24/24.5+1-5/lisp/org/ob-C.el
emacs -batch --no-site-file --no-site-lisp -f batch-byte-compile ob-C.el
cp ob-C.elc ob-C.elc.0
sleep 1
emacs -batch --no-site-file --no-site-lisp -f batch-byte-compile ob-C.el
diff ob-C.elc ob-C.elc.0

The two files should be the same, but they differ (with different #:Gnnn
values)

Regards,
Alexis Bienvenüe.

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

Description: Reproducible gensym-counter
 When calling batch-byte-compile, set the start value of gensym-counter from
 a hash of the command-line arguments instead of time, so that the compiled
 files can be reproducible.
Author: Alexis Bienvenüe <p...@passoire.fr>

Index: emacs24-24.5+1/lisp/emacs-lisp/bytecomp.el
===
--- emacs24-24.5+1.orig/lisp/emacs-lisp/bytecomp.el
+++ emacs24-24.5+1/lisp/emacs-lisp/bytecomp.el
@@ -4625,6 +4625,10 @@ already up-to-date."
   (if (not noninteractive)
   (error "`batch-byte-compile' is to be used only with -batch"))
   (let ((error nil))
+;; Init gensym-counter from command-line arguments instead of
+;; time, to get a reproducible result.
+(cl-init-gensym-counter
+ (mapconcat 'identity (sort command-line-args-left 'string<) ";"))
 (while command-line-args-left
   (if (file-directory-p (expand-file-name (car command-line-args-left)))
 	  ;; Directory as argument.
Index: emacs24-24.5+1/lisp/emacs-lisp/cl-lib.el
===
--- emacs24-24.5+1.orig/lisp/emacs-lisp/cl-lib.el
+++ emacs24-24.5+1/lisp/emacs-lisp/cl-lib.el
@@ -261,6 +261,12 @@ so that they are registered at compile-t
 
 (defvar cl--gensym-counter (* (logand (cl--random-time) 1023) 100))
 
+(defun cl-init-gensym-counter (string)
+  "Set gensym-counter from a hash of string."
+  (setq cl--gensym-counter (* (logand
+   (string-to-number (substring (secure-hash 'sha1 string) -3) 16)
+   1023) 100)))
+
 
 ;;; Numbers.
 


Bug#824037: courier: please make the build reproducible (environment,timestamps)

2016-05-11 Thread Alexis Bienvenüe
Source: courier
Version: 0.76.1-1
Severity: wishlist
Tags: patch upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: environment timestamps
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch honours the SOURCE_DATE_EPOCH environment variable
[2] to set the imapd version string from the last debian/changelog date,
and sets the shell to /bin/sh whatever SHELL is.
Once applied, courier can be built reproducibly in our current
experimental framework.

Regards,
Alexis Bienvenüe.

 [1]: https://wiki.debian.org/ReproducibleBuilds
 [2]: https://reproducible-builds.org/specs/source-date-epoch/

diff -Nru courier-0.76.1/debian/changelog courier-0.76.1/debian/changelog
--- courier-0.76.1/debian/changelog	2016-05-09 15:26:49.0 +0200
+++ courier-0.76.1/debian/changelog	2016-05-11 15:23:45.0 +0200
@@ -1,3 +1,10 @@
+courier (0.76.1-1.0~reproducible1) UNRELEASED; urgency=medium
+
+  * Always use /bin/sh as SHELL, to get reproducible build.
+  * Use SOURCE_DATE_EPOCH for imapd version string.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Wed, 11 May 2016 15:23:44 +0200
+
 courier (0.76.1-1) unstable; urgency=medium
 
   * Imported Upstream version 0.76.1
diff -Nru courier-0.76.1/debian/patches/0026-use-SOURCE_DATE_EPOCH-for-imapd-version.patch courier-0.76.1/debian/patches/0026-use-SOURCE_DATE_EPOCH-for-imapd-version.patch
--- courier-0.76.1/debian/patches/0026-use-SOURCE_DATE_EPOCH-for-imapd-version.patch	1970-01-01 01:00:00.0 +0100
+++ courier-0.76.1/debian/patches/0026-use-SOURCE_DATE_EPOCH-for-imapd-version.patch	2016-05-11 14:32:30.0 +0200
@@ -0,0 +1,20 @@
+Description: Use SOURCE_DATE_EPOCH for imapd version
+ Use the environment variable SOURCE_DATE_EPOCH (if set) for imapd
+ PROGRAMVERSION, to make the build reproducible.
+ See https://reproducible-builds.org/specs/source-date-epoch/
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+--- courier-0.76.1.orig/libs/imap/configure.ac
 courier-0.76.1/libs/imap/configure.ac
+@@ -340,8 +340,9 @@ courier)
+ 	;;
+ esac
+ 
+-date=`date`
+-AC_DEFINE_UNQUOTED(PROGRAMVERSION, "$package/${target_cpu}-${target_vendor}-${target_os}/$date",
++SOURCE_DATE_EPOCH="${SOURCE_DATE_EPOCH:-$(date +%s)}"
++BUILD_DATE=$(date -u -d "@$SOURCE_DATE_EPOCH" "+%F %R" 2>/dev/null || date -u -r "$SOURCE_DATE_EPOCH" "+%F %R" 2>/dev/null || date -u "+%F %R")
++AC_DEFINE_UNQUOTED(PROGRAMVERSION, "$package/${target_cpu}-${target_vendor}-${target_os}/$BUILD_DATE",
+ 		   [ Source code version ])
+ 
+ AC_ARG_WITH(trashquota, [ --with-trashquota   Count deleted messages as part of the quota],
diff -Nru courier-0.76.1/debian/patches/series courier-0.76.1/debian/patches/series
--- courier-0.76.1/debian/patches/series	2016-05-09 15:26:49.0 +0200
+++ courier-0.76.1/debian/patches/series	2016-05-11 14:30:51.0 +0200
@@ -22,3 +22,4 @@
 0022-mkesmtpdcert-should-use-certsdir.patch
 0024-Fix-missing-AC_PROG_SYSCONFTOOL-macro-on-autoreconf.patch
 0025-Dynamically-resolver-mailuid-and-mailgid-on-runtime-.patch
+0026-use-SOURCE_DATE_EPOCH-for-imapd-version.patch
diff -Nru courier-0.76.1/debian/rules courier-0.76.1/debian/rules
--- courier-0.76.1/debian/rules	2016-05-09 15:26:49.0 +0200
+++ courier-0.76.1/debian/rules	2016-05-11 11:03:30.0 +0200
@@ -83,7 +83,7 @@
 		--disable-root-check
 
 override_dh_auto_configure:
-	dh_auto_configure -- $(COMMON_CONFIGURE)
+	CONFIG_SHELL=/bin/sh dh_auto_configure -- $(COMMON_CONFIGURE)
 
 override_dh_auto_install:
 	INSTALL_IGNORE_UMASK=1 dh_auto_install -- install


Bug#822197: sphinx: please remove memory addresses from generated python documentation

2016-05-09 Thread Alexis Bienvenüe
Control: forwarded -1 https://github.com/sphinx-doc/sphinx/pull/2534

A far simpler patch has been submitted upstream!

Alexis Bienvenüe.



Bug#823824: asymptote: please make the build reproducible (timestamps)

2016-05-09 Thread Alexis Bienvenüe
Source: asymptote
Version: 2.37.real-1
Severity: wishlist
Tags: patch upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: timestamps
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

While working on the `€œreproducible builds'€ effort [1], we have noticed
that 'asymptote' could not be built reproducibly.

The attached patch honours the SOURCE_DATE_EPOCH environment
variable [2] to get a reproducible documentation date from the last
debian changelog entry.
Once applied, asymptote can be built reproducibly in our current
experimental framework.

Regards,
Alexis Bienvenüe.

 [1]: https://wiki.debian.org/ReproducibleBuilds
 [2]: https://reproducible-builds.org/specs/source-date-epoch/



diff -Nru asymptote-2.37.real/debian/changelog asymptote-2.37.real/debian/changelog
--- asymptote-2.37.real/debian/changelog	2016-03-15 03:44:39.0 +0100
+++ asymptote-2.37.real/debian/changelog	2016-05-09 10:07:40.0 +0200
@@ -1,3 +1,9 @@
+asymptote (2.37.real-1.0~reproducible1) UNRELEASED; urgency=medium
+
+  * Honour SOURCE_DATE_EPOCH, to make the build reproducible.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Mon, 09 May 2016 10:07:40 +0200
+
 asymptote (2.37.real-1) unstable; urgency=medium
 
   * Imported Upstream version 2.37.real - the previous 2.37 was only
diff -Nru asymptote-2.37.real/debian/patches/honour-source-date-epoch asymptote-2.37.real/debian/patches/honour-source-date-epoch
--- asymptote-2.37.real/debian/patches/honour-source-date-epoch	1970-01-01 01:00:00.0 +0100
+++ asymptote-2.37.real/debian/patches/honour-source-date-epoch	2016-05-09 11:54:20.0 +0200
@@ -0,0 +1,62 @@
+Description: Honour SOURCE_DATE_EPOCH.
+ Honour the SOURCE_DATE_EPOCH environment variable to get documentation date
+ from last debian changelog entry.
+ This makes the build reproducible.
+ See https://reproducible-builds.org/specs/source-date-epoch/.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+Index: asymptote-2.37.real/doc/FAQ/m-html.pl
+===
+--- asymptote-2.37.real.orig/doc/FAQ/m-html.pl
 asymptote-2.37.real/doc/FAQ/m-html.pl
+@@ -34,8 +34,8 @@ sub html_init {
+ print HTML "\n";
+ $html_needpara= -1;
+ $html_end='';
+-chop($html_date=`date '+%d %B %Y'`);
+-chop($html_year=`date '+%Y'`);
++$html_date=time2str("%d %B %Y", $ENV{SOURCE_DATE_EPOCH} || time, "UTC");
++$html_year=time2str("%Y", $ENV{SOURCE_DATE_EPOCH} || time, "UTC");
+ }
+ 
+ sub html_startup {
+Index: asymptote-2.37.real/doc/FAQ/m-lout.pl
+===
+--- asymptote-2.37.real.orig/doc/FAQ/m-lout.pl
 asymptote-2.37.real/doc/FAQ/m-lout.pl
+@@ -23,7 +23,7 @@
+ 
+ sub lout_init {
+ open(LOUT,">$prefix.lout");
+-chop($dprint= `date '+%d %B %Y'`);
++$dprint = time2str("%d %B %Y", $ENV{SOURCE_DATE_EPOCH} || time, "UTC");
+ $dprint =~ s/^0//;
+ }
+ 
+Index: asymptote-2.37.real/doc/FAQ/bfnnconv.pl
+===
+--- asymptote-2.37.real.orig/doc/FAQ/bfnnconv.pl
 asymptote-2.37.real/doc/FAQ/bfnnconv.pl
+@@ -21,6 +21,8 @@
+ # by the GPL.  However, I would appreciate it if you credited me if
+ # appropriate in any documents you format using BFNN.)
+ 
++use Date::Format;
++
+ @outputs=('ascii','info','html');
+ 
+ while ($ARGV[0] =~ m/^\-/) {
+@@ -135,7 +137,12 @@ while (<>) {
+ m/([^\\])\`/ || warn "`$_'";
+ $_= $';
+ $cmd= $`.$1;
+-$it= `$cmd`; chop $it;
++if($cmd =~ /date [\"\']\+(.*?)[\"\']/) {
++  my $format=$1;
++  $it=time2str($format, $ENV{SOURCE_DATE_EPOCH} || time, "UTC");
++} else {
++  $it= `$cmd`; chop $it;
++}
+ print $fh $it;
+ }
+ print $fh $_;
diff -Nru asymptote-2.37.real/debian/patches/series asymptote-2.37.real/debian/patches/series
--- asymptote-2.37.real/debian/patches/series	2016-03-15 03:44:39.0 +0100
+++ asymptote-2.37.real/debian/patches/series	2016-05-09 10:04:55.0 +0200
@@ -4,3 +4,4 @@
 #old-gs-use-epswrite
 #upstream-gsl2
 #upstream-fix-mips-build-failure
+honour-source-date-epoch


Bug#823797: openclonk: please make the build reproducible (timestamps)

2016-05-09 Thread Alexis Bienvenüe
Source: openclonk
Version: 7.0-3
Severity: wishlist
Tags: patch upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: timestamps
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

While working on the `€œreproducible builds'€ effort [1], we have noticed
that 'openclonk' could not be built reproducibly.

The attached patch honours the SOURCE_DATE_EPOCH environment
variable [2] to get a reproducible copyright year from the last debian
changelog entry.
Once applied, openclonk can be built reproducibly in our current
experimental framework.

Regards,
Alexis Bienvenüe.

 [1]: https://wiki.debian.org/ReproducibleBuilds
 [2]: https://reproducible-builds.org/specs/source-date-epoch/


diff -Nru openclonk-7.0/debian/changelog openclonk-7.0/debian/changelog
--- openclonk-7.0/debian/changelog	2016-02-14 12:26:56.0 +0100
+++ openclonk-7.0/debian/changelog	2016-05-04 11:15:38.0 +0200
@@ -1,3 +1,9 @@
+openclonk (7.0-3.0~reproducible1) UNRELEASED; urgency=medium
+
+  * Honour SOURCE_DATE_EPOCH for the copyright year.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Wed, 04 May 2016 11:15:38 +0200
+
 openclonk (7.0-3) unstable; urgency=medium
 
   * Ship Music.ocg's content unpacked.
diff -Nru openclonk-7.0/debian/patches/honour_SOURCE_DATE_EPOCH.patch openclonk-7.0/debian/patches/honour_SOURCE_DATE_EPOCH.patch
--- openclonk-7.0/debian/patches/honour_SOURCE_DATE_EPOCH.patch	1970-01-01 01:00:00.0 +0100
+++ openclonk-7.0/debian/patches/honour_SOURCE_DATE_EPOCH.patch	2016-05-04 11:14:54.0 +0200
@@ -0,0 +1,24 @@
+Description: Honour SOURCE_DATE_EPOCH
+ Honour the SOURCE_DATE_EPOCH environment variable to get the copyright year,
+ to make the build reproducible.
+ See https://reproducible-builds.org/specs/source-date-epoch/
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+--- openclonk-7.0.orig/cmake/Version.cmake
 openclonk-7.0/cmake/Version.cmake
+@@ -24,7 +24,14 @@ git_get_changeset_id(C4REVISION)
+ 
+ 
+ IF(CMAKE_HOST_UNIX)
+-	EXECUTE_PROCESS(COMMAND "date" "+%Y" OUTPUT_VARIABLE DATE)
++if (DEFINED ENV{SOURCE_DATE_EPOCH})
++  EXECUTE_PROCESS(
++COMMAND "date" "-u" "-d" "@$ENV{SOURCE_DATE_EPOCH}" "+%Y"
++OUTPUT_VARIABLE DATE
++OUTPUT_STRIP_TRAILING_WHITESPACE)
++else ()
++  EXECUTE_PROCESS(COMMAND "date" "+%Y" OUTPUT_VARIABLE DATE)
++endif ()
+ ELSEIF(CMAKE_HOST_WIN32)
+ 	EXECUTE_PROCESS(COMMAND "cscript.exe" "//nologo" "${CMAKE_CURRENT_SOURCE_DIR}/tools/get_current_year.vbs" OUTPUT_VARIABLE DATE)
+ ENDIF()
diff -Nru openclonk-7.0/debian/patches/series openclonk-7.0/debian/patches/series
--- openclonk-7.0/debian/patches/series	2016-02-14 12:26:08.0 +0100
+++ openclonk-7.0/debian/patches/series	2016-05-04 11:13:40.0 +0200
@@ -1 +1,2 @@
 do-not-pack-music-ocg.patch
+honour_SOURCE_DATE_EPOCH.patch


Bug#759999: dpkg-dev: please make mtimes of packaged files deterministic

2016-05-08 Thread Alexis Bienvenüe
Hi.

On Fri, 15 Jan 2016 22:28:12 +0100 <lu...@debian.org> wrote:
> The forth patch changes dpkg-buildpackage to set SOURCE_DATE_EPOCH to
> the time of the latest debian/changelog entry if it hasn't been already
> set, effectively making the timestamps recorded by dpkg-deb in the most
> common build process deterministic.

The SOURCE_DATE_EPOCH support is now implemented in pdftex/xetex:
SOURCE_DATE_EPOCH will only be used to set CreationDate and related
meta-data in produced files, and if SOURCE_DATE_EPOCH_TEX_PRIMITIVES
equals 1, then the TeX primitives year, month, etc. will also be set so
that the \today command will refer to the date given by
SOURCE_DATE_EPOCH. See the discussion starting at [1], the news [2] and
the commit [3].

The \today command is widely used in packages documentation, and I think
replacing its value with the last source modification date is
meaningful. It will also help reproducibility. Therefore I suggest to
also add those lines to scripts/dpkg-buildpackage.pl, along with
0004-dpkg-buildpackage-Preset-build-timestamp-to-latest-c.patch:

if (! exists($ENV{SOURCE_DATE_EPOCH_TEX_PRIMITIVES})) {
$ENV{SOURCE_DATE_EPOCH_TEX_PRIMITIVES} = 1;
}

Regards,
Alexis Bienvenüe.

[1] https://www.tug.org/pipermail/tex-k/2016-May/002691.html
[2]
https://www.tug.org/svn/texlive/trunk/Build/source/texk/web2c/pdftexdir/NEWS?revision=40889
[3]
https://www.tug.org/svn/texlive/trunk/Build/source/texk/web2c/lib/texmfmp.c?r1=40504=40889=40889



Bug#792202: texlive-bin: Please make the CreationDate, ModDate and ID field deterministic

2016-05-06 Thread Alexis Bienvenüe
Hi.

Note that dvips honours SOURCE_DATE_EPOCH since
https://www.tug.org/svn/texlive/trunk/Build/source/texk/dvipsk/output.c?r1=32653=40885
so that suppress-dvips-creationdate.patch is not needed with TL2016.

Also, with SOURCE_DATE_EPOCH_TEX_PRIMITIVES=1,
remove-tex-output-timestamp.patch is not needed with TL2016: year,
month, day are the TeX primitives that can be set from SOURCE_DATE_EPOCH
if SOURCE_DATE_EPOCH_TEX_PRIMITIVES=1.
See https://www.tug.org/svn/texlive?view=revision=40889

Regards,
Alexis Bienvenüe.



Bug#823393: kdbg: mixed encoding in changelog

2016-05-04 Thread Alexis Bienvenüe
Source: kdbg
Version: 2.5.5-1
Severity: wishlist
Tags: patch
User: reproducible-bui...@lists.alioth.debian.org
Usertags: environment
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

The ChangeLog-pre-2.2.0 has mixed latin1/UTF-8 encoding. With some
locales, the grep call used to process it uses binary mode, returning
"Binary file matches" instead of the filtered content.

Please find a patch that fixes those issues, allowing reproducible build
[1,2].

Regards,
Alexis Bienvenüe.

 [1] https://wiki.debian.org/ReproducibleBuilds
 [2] https://tests.reproducible-builds.org/rb-pkg/unstable/amd64/kdbg.html



diff -Nru kdbg-2.5.5/debian/changelog kdbg-2.5.5/debian/changelog
--- kdbg-2.5.5/debian/changelog	2016-04-19 06:23:14.0 +0200
+++ kdbg-2.5.5/debian/changelog	2016-05-04 10:05:13.0 +0200
@@ -1,3 +1,9 @@
+kdbg (2.5.5-1.0~reproducible1) UNRELEASED; urgency=medium
+
+  * Fix changelog encoding.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Wed, 04 May 2016 09:31:26 +0200
+
 kdbg (2.5.5-1) unstable; urgency=medium
 
   * QA upload.
diff -Nru kdbg-2.5.5/debian/patches/11_fix_changelog_encoding.patch kdbg-2.5.5/debian/patches/11_fix_changelog_encoding.patch
--- kdbg-2.5.5/debian/patches/11_fix_changelog_encoding.patch	1970-01-01 01:00:00.0 +0100
+++ kdbg-2.5.5/debian/patches/11_fix_changelog_encoding.patch	2016-05-04 10:07:18.0 +0200
@@ -0,0 +1,26 @@
+Description: Fix changelog encoding
+ Set ChangeLog-pre-2.2.0 encoding to UTF-8 (it was mixed latin1/UTF-8)
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+Index: kdbg-2.5.5/ChangeLog-pre-2.2.0
+===
+--- kdbg-2.5.5.orig/ChangeLog-pre-2.2.0
 kdbg-2.5.5/ChangeLog-pre-2.2.0
+@@ -287,7 +287,7 @@ Version 1.1.1
+ 	command (required if you are debugging remote devices), the
+ 	terminal emulation needed for the program.
+ 
+-Verison 1.1.0
++Version 1.1.0
+ 
+ 	Use docking windows thanks to Judin Max <novapr...@mtu-net.ru>.
+ 
+@@ -299,7 +299,7 @@ Verison 1.1.0
+ 	Berndt Josef Wulf <w...@ping.net.au>.
+ 
+ 	There's now a Swedish translation thanks to
+-	Örjan Lindbergh <orjan.lindbe...@telia.com>.
++	Örjan Lindbergh <orjan.lindbe...@telia.com>.
+ 
+ Version 1.0.2
+ 
diff -Nru kdbg-2.5.5/debian/patches/series kdbg-2.5.5/debian/patches/series
--- kdbg-2.5.5/debian/patches/series	2016-03-16 23:32:05.0 +0100
+++ kdbg-2.5.5/debian/patches/series	2016-05-04 10:01:56.0 +0200
@@ -1 +1,2 @@
 10_fix_check_include_files.patch
+11_fix_changelog_encoding.patch
diff -Nru kdbg-2.5.5/debian/rules kdbg-2.5.5/debian/rules
--- kdbg-2.5.5/debian/rules	2016-04-10 05:23:26.0 +0200
+++ kdbg-2.5.5/debian/rules	2016-05-04 09:30:22.0 +0200
@@ -8,5 +8,5 @@
 
 override_dh_installchangelogs:
 	cat $$(ls ReleaseNotes-* | sort -Vr) ChangeLog-pre-2.2.0 | \
-	   egrep -v '(KDbg Release Notes for|)' > debian/upstream.changes
+	   egrep -av '(KDbg Release Notes for|)' > debian/upstream.changes
 	dh_installchangelogs debian/upstream.changes


Bug#823383: crawl: please make the build reproducible (fileordering,timestamps)

2016-05-04 Thread Alexis Bienvenüe
Source: crawl
Version: 0.17.1-1
Severity: wishlist
Tags: patch upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: fileordering timestamps
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch fixes the order in which maps are listed, and strips
build date from the version string.
Once applied, crawl can be built reproducibly in our current
experimental framework.

Regards,
Alexis Bienvenüe.

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




diff -Nru crawl-0.17.1/debian/changelog crawl-0.17.1/debian/changelog
--- crawl-0.17.1/debian/changelog	2015-12-21 14:06:08.0 +0100
+++ crawl-0.17.1/debian/changelog	2016-05-03 21:57:43.0 +0200
@@ -1,3 +1,10 @@
+crawl (2:0.17.1-1.0~reproducible1) UNRELEASED; urgency=medium
+
+  * Sort maps list and strip build date from version string, to get
+reproducible build.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Tue, 03 May 2016 21:38:13 +0200
+
 crawl (2:0.17.1-1) unstable; urgency=medium
 
   * New upstream release.
diff -Nru crawl-0.17.1/debian/patches/series crawl-0.17.1/debian/patches/series
--- crawl-0.17.1/debian/patches/series	2015-09-20 14:54:52.0 +0200
+++ crawl-0.17.1/debian/patches/series	2016-05-03 21:56:34.0 +0200
@@ -0,0 +1,2 @@
+sort_list_of_maps.patch
+strip_build_date
diff -Nru crawl-0.17.1/debian/patches/sort_list_of_maps.patch crawl-0.17.1/debian/patches/sort_list_of_maps.patch
--- crawl-0.17.1/debian/patches/sort_list_of_maps.patch	1970-01-01 01:00:00.0 +0100
+++ crawl-0.17.1/debian/patches/sort_list_of_maps.patch	2016-05-03 21:36:19.0 +0200
@@ -0,0 +1,15 @@
+Description: Sort list of maps
+ Sort list of maps, to get reproducible build.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+--- crawl-0.17.1.orig/source/Makefile
 crawl-0.17.1/source/Makefile
+@@ -1425,7 +1425,7 @@ endif
+ 	$(COPY_R) dat/dlua/* $(datadir_fp)/dat/dlua/
+ 	echo "-- Autogenerated list of maps to load and compile:" \
+ 	>$(datadir_fp)/dat/dlua/loadmaps.lua
+-	find dat -name '*.des'|sed s:dat/::| \
++	find dat -name '*.des'|LC_ALL=C sort|sed s:dat/::| \
+ 	while read x; \
+ 	do echo "dgn.load_des_file('$$x')"; \
+ 	done >>$(datadir_fp)/dat/dlua/loadmaps.lua
diff -Nru crawl-0.17.1/debian/patches/strip_build_date crawl-0.17.1/debian/patches/strip_build_date
--- crawl-0.17.1/debian/patches/strip_build_date	1970-01-01 01:00:00.0 +0100
+++ crawl-0.17.1/debian/patches/strip_build_date	2016-05-03 21:57:19.0 +0200
@@ -0,0 +1,15 @@
+Description: Strip build date
+ Strip build date from version string, to get reproducible build.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+--- crawl-0.17.1.orig/source/version.cc
 crawl-0.17.1/source/version.cc
+@@ -35,7 +35,7 @@ namespace Version
+ #endif
+ 
+ const char* compilation_info =
+-"Compiled with " COMPILER " on " __DATE__ " at " __TIME__ "\n"
++"Compiled with " COMPILER "\n"
+ "Build platform: " CRAWL_HOST "\n"
+ "Platform: " CRAWL_ARCH "\n"
+ "CFLAGS: " CRAWL_CFLAGS "\n"


Bug#823241: unhide: please make the build reproducible (fileordering)

2016-05-02 Thread Alexis Bienvenüe
Source: unhide
Version: 20130526-1
Severity: wishlist
Tags: patch
User: reproducible-bui...@lists.alioth.debian.org
Usertags: fileordering
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch fixes the order in which c files are passed to
the compiler. Once applied, unhide can be built reproducibly in our
current experimental framework.

Regards,
Alexis Bienvenüe.

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

diff -Nru unhide-20130526/debian/changelog unhide-20130526/debian/changelog
--- unhide-20130526/debian/changelog	2015-11-02 23:51:16.0 +0100
+++ unhide-20130526/debian/changelog	2016-05-02 17:57:58.0 +0200
@@ -1,3 +1,9 @@
+unhide (20130526-1.0~reproducible1) UNRELEASED; urgency=medium
+
+  * Sort c source files to pass to gcc, to get reproducible build.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Mon, 02 May 2016 17:57:58 +0200
+
 unhide (20130526-1) unstable; urgency=medium
 
   * Team upload.
diff -Nru unhide-20130526/debian/rules unhide-20130526/debian/rules
--- unhide-20130526/debian/rules	2015-11-02 20:44:36.0 +0100
+++ unhide-20130526/debian/rules	2016-05-02 17:57:11.0 +0200
@@ -21,7 +21,7 @@
 	ln man/es/unhide.8 man/unhide.es.8
 
 override_dh_auto_build:
-	gcc $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -Wall -O2 -pthread -o unhide-linux unhide-linux*.c unhide-output.c
+	gcc $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -Wall -O2 -pthread -o unhide-linux $(sort $(wildcard unhide-linux*.c)) unhide-output.c
 	gcc $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -Wall -O2 -o unhide-tcp unhide-tcp.c unhide-tcp-fast.c unhide-output.c
 	gcc $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -Wall -O2 -o unhide_rb unhide_rb.c
-	gcc $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o unhide-posix unhide-posix.c
\ Pas de fin de ligne à la fin du fichier
+	gcc $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o unhide-posix unhide-posix.c


Bug#823239: gspiceui: please make the build reproducible (fileordering)

2016-05-02 Thread Alexis Bienvenüe
Source: gspiceui
Version: 1.1.00+dfsg-1
Severity: wishlist
Tags: patch upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: fileordering
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch fixes the order in which object files are passed to
the compiler. Once applied, gspiceui can be built reproducibly in our
current experimental framework.

Regards,
Alexis Bienvenüe.

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

diff -Nru gspiceui-1.1.00+dfsg/debian/changelog gspiceui-1.1.00+dfsg/debian/changelog
--- gspiceui-1.1.00+dfsg/debian/changelog	2015-05-21 22:10:58.0 +0200
+++ gspiceui-1.1.00+dfsg/debian/changelog	2016-04-30 21:26:42.0 +0200
@@ -1,3 +1,9 @@
+gspiceui (1.1.00+dfsg-1.0~reproducible1) UNRELEASED; urgency=medium
+
+  * Reproducible build
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Sat, 30 Apr 2016 21:26:42 +0200
+
 gspiceui (1.1.00+dfsg-1) unstable; urgency=medium
 
   * New release version
diff -Nru gspiceui-1.1.00+dfsg/debian/patches/06_sort_object_files.patch gspiceui-1.1.00+dfsg/debian/patches/06_sort_object_files.patch
--- gspiceui-1.1.00+dfsg/debian/patches/06_sort_object_files.patch	1970-01-01 01:00:00.0 +0100
+++ gspiceui-1.1.00+dfsg/debian/patches/06_sort_object_files.patch	2016-04-30 21:37:15.0 +0200
@@ -0,0 +1,26 @@
+Description: Sort object files
+ Sort *.o files when merging, to get reproducible build.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+Index: gspiceui-1.1.00+dfsg/src/Makefile
+===
+--- gspiceui-1.1.00+dfsg.orig/src/Makefile
 gspiceui-1.1.00+dfsg/src/Makefile
+@@ -93,7 +93,7 @@ LIBS := $(shell $(WXCFG) --libs core,bas
+ OBJS := $(wildcard *.cpp) $(wildcard */*.cpp) $(wildcard */*/*.cpp)
+ OBJS := $(filter-out tests/%.cpp, $(OBJS))
+ OBJS := $(notdir $(OBJS))
+-OBJS := $(patsubst %.cpp, obj/%.o, $(OBJS))
++OBJS := $(sort $(patsubst %.cpp, obj/%.o, $(OBJS)))
+ 
+ # Specify list of directories that `make' should search for prerequisite files
+ VPATH = $(BINDIR)
+@@ -134,7 +134,7 @@ obj/%.o : %.cpp
+ #   -o specify the output file name
+ 
+ $(BINDIR)/$(PROG) : $(OBJS)
+-	$(CXX) -pipe $(LDFLAGS) -o $(BINDIR)/$(PROG) obj/*.o $(LIBS)
++	$(CXX) -pipe $(LDFLAGS) -o $(BINDIR)/$(PROG) $(OBJS) $(LIBS)
+ ifeq ($(ROOT)/GSpiceUI.app,$(wildcard $(ROOT)/GSpiceUI.app))
+ 	cp $(BINDIR)/$(PROG) $(ROOT)/GSpiceUI.app/Contents/MacOS/gspiceui
+ endif
diff -Nru gspiceui-1.1.00+dfsg/debian/patches/series gspiceui-1.1.00+dfsg/debian/patches/series
--- gspiceui-1.1.00+dfsg/debian/patches/series	2015-05-21 18:50:22.0 +0200
+++ gspiceui-1.1.00+dfsg/debian/patches/series	2016-04-30 21:25:08.0 +0200
@@ -3,3 +3,4 @@
 03_manpage.patch
 04_gwave.patch
 05_manual_path.patch
+06_sort_object_files.patch


Bug#822963: htop: please make the build reproducible (timestamps)

2016-04-29 Thread Alexis Bienvenüe
Hi Daniel.

Le 29/04/2016 15:56, Daniel Lange a écrit :
> that patch is from Graham (CC) and we have it both already in
> https://anonscm.debian.org/cgit/collab-maint/htop.git/commit/?id=cef9e7933e5c9704eaa5a6330067967f32e52798
> and sent upstream (https://github.com/hishamhm/htop/pull/476).

Excellent. Sorry I did not look at git and upstream before…
If I understood correctly, the --date @epoch is GNU-date specific, and
BSD-date has another syntax, that's why I took the code from [1].

Regards,
Alexis.

 [1]: https://wiki.debian.org/ReproducibleBuilds/TimestampsProposal#Examples



Bug#822963: htop: please make the build reproducible (timestamps)

2016-04-29 Thread Alexis Bienvenüe
Source: htop
Version: 2.0.1-1
Severity: wishlist
Tags: patch upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: timestamps
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch honours the SOURCE_DATE_EPOCH environment
variable [2] to get a reproducible copyright year.
Once applied, htop can be built reproducibly in our current
experimental framework.

Regards,
Alexis Bienvenüe.

 [1]: https://wiki.debian.org/ReproducibleBuilds
 [2]: https://reproducible-builds.org/specs/source-date-epoch/

diff -Nru htop-2.0.1/debian/changelog htop-2.0.1/debian/changelog
--- htop-2.0.1/debian/changelog	2016-04-14 10:26:00.0 +0200
+++ htop-2.0.1/debian/changelog	2016-04-29 14:59:30.0 +0200
@@ -1,3 +1,9 @@
+htop (2.0.1-1.0~reproducible1) UNRELEASED; urgency=medium
+
+  * Honour SOURCE_DATE_EPOCH for copyright year
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Fri, 29 Apr 2016 14:46:35 +0200
+
 htop (2.0.1-1) unstable; urgency=medium
 
   * New upstream release 2.0.1. (Closes: #814401, #783893, #774930)
diff -Nru htop-2.0.1/debian/patches/003-honour-source-date-epoch.patch htop-2.0.1/debian/patches/003-honour-source-date-epoch.patch
--- htop-2.0.1/debian/patches/003-honour-source-date-epoch.patch	1970-01-01 01:00:00.0 +0100
+++ htop-2.0.1/debian/patches/003-honour-source-date-epoch.patch	2016-04-29 14:55:47.0 +0200
@@ -0,0 +1,18 @@
+Description: Hounour SOURCE_DATE_EPOCH
+ Honour the SOURCE_DATE_EPOCH environment variable for copyright year.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+Index: htop-2.0.1/configure.ac
+===
+--- htop-2.0.1.orig/configure.ac
 htop-2.0.1/configure.ac
+@@ -4,7 +4,8 @@
+ AC_PREREQ(2.65)
+ AC_INIT([htop],[2.0.1],[his...@gobolinux.org])
+ 
+-year=$(date +%Y)
++SOURCE_DATE_EPOCH="${SOURCE_DATE_EPOCH:-$(date +%s)}"
++year=$(date -u -d "@$SOURCE_DATE_EPOCH" "+%Y" 2>/dev/null || date -u -r "$SOURCE_DATE_EPOCH" "+%Y" 2>/dev/null || date -u "+%Y")
+ 
+ # The following two lines are required by hwloc scripts
+ AC_USE_SYSTEM_EXTENSIONS
diff -Nru htop-2.0.1/debian/patches/series htop-2.0.1/debian/patches/series
--- htop-2.0.1/debian/patches/series	2016-04-14 10:22:00.0 +0200
+++ htop-2.0.1/debian/patches/series	2016-04-29 14:45:00.0 +0200
@@ -1,3 +1,4 @@
 001-lintian-warning-fix-man-typo.patch
 002-lintian-warning-fix-desktop-keywords.patch
 601-openvz-new-ctid-vpid.patch
+003-honour-source-date-epoch.patch


Bug#822948: shotwell: please make the build reproducible (timestamps, umask)

2016-04-29 Thread Alexis Bienvenüe
Source: shotwell
Version: 0.22.0-4
Severity: wishlist
Tags: patch
User: reproducible-bui...@lists.alioth.debian.org
Usertags: timestamps umask
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch fixes date handling (tar needs an English date in
--mtime) and fixes files mode in the temp-source archive. Once
applied, shotwell can be built reproducibly in our current experimental
framework.

Regards,
Alexis Bienvenüe.

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




diff -Nru shotwell-0.22.0/debian/changelog shotwell-0.22.0/debian/changelog
--- shotwell-0.22.0/debian/changelog	2016-03-21 13:15:42.0 +0100
+++ shotwell-0.22.0/debian/changelog	2016-04-29 11:10:27.0 +0200
@@ -1,3 +1,10 @@
+shotwell (0.22.0-4.0~reproducible1) UNRELEASED; urgency=medium
+
+  * Fix date handling for non-English locales
+  * Fix files mode in temp-source tarball
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Fri, 29 Apr 2016 08:57:37 +0200
+
 shotwell (0.22.0-4) unstable; urgency=medium
 
   * New debian/patches/0100-ios8.patch (Closes: #792016):
diff -Nru shotwell-0.22.0/debian/rules shotwell-0.22.0/debian/rules
--- shotwell-0.22.0/debian/rules	2015-11-03 11:57:14.0 +0100
+++ shotwell-0.22.0/debian/rules	2016-04-29 11:10:09.0 +0200
@@ -5,7 +5,7 @@
 export VALAFLAGS:=$(foreach w,$(CPPFLAGS) $(CFLAGS) $(LDFLAGS),-X $(w))
 
 CHDATE:=$(shell dpkg-parsechangelog --show-field=Date)
-B_DATE:=$(shell date -d "$(CHDATE)")
+B_DATE:=$(shell LC_ALL=C date --utc -d "$(CHDATE)")
 
 %:
 	dh $@
@@ -21,8 +21,7 @@
 	mkdir -p debian/shotwell-dbg/usr/share/doc/shotwell-dbg/temp-source
 	find -type f -name '*.c' -exec cp --parent '{}' debian/shotwell-dbg/usr/share/doc/shotwell-dbg/temp-source/ ';'
 	cd debian/shotwell-dbg/usr/share/doc/shotwell-dbg && \
-	find . -newermt '$(B_DATE)' -print0 | xargs -0r touch --no-dereference --date='$(B_DATE)' && \
-	tar --mtime="$(B_DATE)" -cJf temp-source.tar.xz temp-source
+	tar --mode=go=rX,u+rw,a-s --mtime="$(B_DATE)" -cJf temp-source.tar.xz temp-source
 	rm -fr debian/shotwell-dbg/usr/share/doc/shotwell-dbg/temp-source
 
 override_dh_installchangelogs:


Bug#820895: sphinx: please extend SOURCE_DATE_EPOCH support

2016-04-28 Thread Alexis Bienvenüe
Control: forwarded -1 https://github.com/sphinx-doc/sphinx/pull/2503

Hi Dmitry.

Le 24/04/2016 14:40, Dmitry Shachnev a écrit :
> Can you please submit your patch upstream (like you did it for #822197)?
> 
> I would really prefer to get this patch reviewed/accepted by upstream before
> including it in the Debian packaging. (Also, if you will be submitting it,
> better use stable branch of git rather than master, which will make sure your
> change will be in the next bugfix release if accepted.)

As suggested - thanks, and sorry for the delay.

Alexis.



Bug#820815: closed by Dimitrios Eftaxiopoulos <eftax...@otenet.gr> (Bug#820815: fixed in freefem++ 3.46+dfsg1-1)

2016-04-26 Thread Alexis Bienvenüe
Control: reopen -1

Hi.

Thanks for this version integrating the patch.
However, it appears that you forgot part of it, leading to
unreproducible build [1]. The line "FF_DATE=`date`" has to be removed
from configure.ac - this corresponds to the following lines of the
original build_date_from_SOURCE_DATE_EPOCH.patch:

@@ -600,7 +604,6 @@ ff_prefix_dir="${prefix}/lib/ff++/$VERSI
 AC_MSG_CHECKING(prefix dir freefem++  )
 AC_MSG_RESULT($ff_prefix_dir)

-FF_DATE=`date`
 AC_DEFINE_UNQUOTED(VersionFreeFemDate,"$FF_DATE",FreeFem++ build date)
 AC_DEFINE_UNQUOTED(FF_PREFIX_DIR,"${ff_prefix_dir}",FreeFem prefix  ir)
 AC_SUBST(ff_prefix_dir,$ff_prefix_dir)

Regards,
Alexis Bienvenüe.

[1] https://reproducible.debian.net/rb-pkg/testing/amd64/freefem%2B%2B.html



Bug#822566: stk: please make the build reproducible (fileordering)

2016-04-25 Thread Alexis Bienvenüe
Hi.

Le 25/04/2016 15:32, Felipe Sateler a écrit :
> Thanks, but couldn't this be simpler by using the already-defined
> variable $(OBJECTS)? Does using that fix the problem?

I agree that would be better, but it does not seem to be the same: eg.
Generator.o is in src/Makefile.in's $(OBJECTS) but is _not_ built
because there is no Generator.cpp, so it is not included in *.o

Regards,
Alexis Bienvenüe.



Bug#822566: stk: please make the build reproducible (fileordering)

2016-04-25 Thread Alexis Bienvenüe
Source: stk
Version: 4.5.0-3
Severity: wishlist
Tags: patch upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: fileordering
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch fixes the order in which *.o files are merged. Once
applied, stk can be built reproducibly in our current experimental
framework.

Regards,
Alexis Bienvenüe.

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



diff -Nru stk-4.5.0/debian/changelog stk-4.5.0/debian/changelog
--- stk-4.5.0/debian/changelog	2015-12-11 02:39:07.0 +0100
+++ stk-4.5.0/debian/changelog	2016-04-25 14:30:42.0 +0200
@@ -1,3 +1,9 @@
+stk (4.5.0-3.0~reproducible1) unstable; urgency=medium
+
+  * Sort *.o files when building shared lib, to get reproducible build.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Mon, 25 Apr 2016 14:30:42 +0200
+
 stk (4.5.0-3) unstable; urgency=medium
 
   * Use autotools_dev again to get up-to-date config.{sub,guess}
diff -Nru stk-4.5.0/debian/patches/0007-Sort-o-files stk-4.5.0/debian/patches/0007-Sort-o-files
--- stk-4.5.0/debian/patches/0007-Sort-o-files	1970-01-01 01:00:00.0 +0100
+++ stk-4.5.0/debian/patches/0007-Sort-o-files	2016-04-25 14:59:52.0 +0200
@@ -0,0 +1,83 @@
+Description: Sort *.o files
+ Fix the order in which *.o files are merged to build the shared lib,
+ to get reproducible build.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+Index: stk-4.5.0/src/Makefile.in
+===
+--- stk-4.5.0.orig/src/Makefile.in
 stk-4.5.0/src/Makefile.in
+@@ -90,7 +90,7 @@ $(STATICLIB) : $(OBJECTS)
+ 
+ $(SHAREDLIB) : $(OBJECTS)
+ 	$(RM) -f $(@) $(SHAREDLIB).$(MAJOR) $(SHAREDLIB)
+-	$(CC) $(LDFLAGS) -fPIC @libflags@ $(OBJECT_PATH)/*.o $(LIBS)
++	$(CC) $(LDFLAGS) -fPIC @libflags@ `LC_ALL=C ls $(OBJECT_PATH)/*.o` $(LIBS)
+ 	$(LN) -s @sharedname@ $(SHAREDLIB)
+ 
+ install-headers:
+Index: stk-4.5.0/projects/demo/Makefile.in
+===
+--- stk-4.5.0.orig/projects/demo/Makefile.in
 stk-4.5.0/projects/demo/Makefile.in
+@@ -63,7 +63,7 @@ $(OBJECT_PATH)/.placeholder:
+ 	touch $(OBJECT_PATH)/.placeholder
+ 
+ stk-demo: demo.cpp $(OBJECTS)
+-	$(CC) $(LDFLAGS) $(CFLAGS) $(DEFS) -o stk-demo demo.cpp $(OBJECT_PATH)/*.o $(LIBRARY)
++	$(CC) $(LDFLAGS) $(CFLAGS) $(DEFS) -o stk-demo demo.cpp `LC_ALL=C ls $(OBJECT_PATH)/*.o` $(LIBRARY)
+ 
+ libdemo: demo.cpp
+ 	$(CC) $(LDFLAGS) $(CFLAGS) $(DEFS) -o demo utilities.cpp demo.cpp -L../../src -lstk $(LIBRARY)
+Index: stk-4.5.0/projects/effects/Makefile.in
+===
+--- stk-4.5.0.orig/projects/effects/Makefile.in
 stk-4.5.0/projects/effects/Makefile.in
+@@ -52,7 +52,7 @@ $(OBJECT_PATH)/.placeholder:
+ 	touch $(OBJECT_PATH)/.placeholder
+ 
+ effects: effects.cpp $(OBJECTS)
+-	$(CC) $(LDFLAGS) $(CFLAGS) $(DEFS) -o effects effects.cpp $(OBJECT_PATH)/*.o $(LIBRARY)
++	$(CC) $(LDFLAGS) $(CFLAGS) $(DEFS) -o effects effects.cpp `LC_ALL=C ls $(OBJECT_PATH)/*.o` $(LIBRARY)
+ 
+ libeffects: effects.cpp
+ 	$(CC) $(LDFLAGS) $(CFLAGS) $(DEFS) -o effects effects.cpp -L../../src -lstk $(LIBRARY)
+Index: stk-4.5.0/projects/eguitar/Makefile.in
+===
+--- stk-4.5.0.orig/projects/eguitar/Makefile.in
 stk-4.5.0/projects/eguitar/Makefile.in
+@@ -52,7 +52,7 @@ $(OBJECT_PATH)/.placeholder:
+ 	touch $(OBJECT_PATH)/.placeholder
+ 
+ eguitar: eguitar.cpp $(OBJECTS)
+-	$(CC) $(LDFLAGS) $(CFLAGS) $(DEFS) -o eguitar eguitar.cpp $(OBJECT_PATH)/*.o $(LIBRARY)
++	$(CC) $(LDFLAGS) $(CFLAGS) $(DEFS) -o eguitar eguitar.cpp `LC_ALL=C ls $(OBJECT_PATH)/*.o` $(LIBRARY)
+ 
+ libeguitar: eguitar.cpp
+ 	$(CC) $(LDFLAGS) $(CFLAGS) $(DEFS) -o eguitar utilities.cpp eguitar.cpp -L../../src -lstk $(LIBRARY)
+Index: stk-4.5.0/projects/examples/Makefile.in
+===
+--- stk-4.5.0.orig/projects/examples/Makefile.in
 stk-4.5.0/projects/examples/Makefile.in
+@@ -57,7 +57,7 @@ strip :
+ 	strip $(PROGRAMS)
+ 
+ audioprobe: @objects@
+-	$(CC) $(LDFLAGS) $(CFLAGS) $(DEFS) -o audioprobe audioprobe.cpp $(OBJECT_PATH)/*.o $(LIBRARY) -lrtaudio
++	$(CC) $(LDFLAGS) $(CFLAGS) $(DEFS) -o audioprobe audioprobe.cpp `LC_ALL=C ls $(OBJECT_PATH)/*.o` $(LIBRARY) -lrtaudio
+ 
+ midiprobe:
+ 	$(CC) $(LDFLAGS) $(CFLAGS) $(DEFS) -o midiprobe midiprobe.cpp $(LIBRARY) -lrtmidi
+Index: stk-4.5.0/projects/ragamatic/Makefile.in
+===
+--- stk-4.5.0.orig/projects/ragamatic/Makefile.in
 stk-4.5.0/projects/ragamatic/Makefile.in
+@@ -53,7 +53,7 @@ $(OBJECT_PATH)/.placeholder:
+ 	touch $(OBJECT_PATH)/.placeholder
+ 
+ ragamat: ragamat.cpp $(OBJECTS)
+-	$(CC) $(LDFLAGS) $(CFLAGS) $(DEFS

Bug#822561: xpa: please make the build reproducible (fileordering)

2016-04-25 Thread Alexis Bienvenüe
Source: xpa
Version: 2.1.17-1
Severity: wishlist
Tags: patch upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: fileordering
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch fixes the order in which *.o files are merged. Once
applied, xpa can be built reproducibly in our current experimental
framework.

Regards,
Alexis Bienvenüe.

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


diff -Nru xpa-2.1.17/debian/changelog xpa-2.1.17/debian/changelog
--- xpa-2.1.17/debian/changelog	2015-10-20 10:21:34.0 +0200
+++ xpa-2.1.17/debian/changelog	2016-04-25 13:14:48.0 +0200
@@ -1,3 +1,9 @@
+xpa (2.1.17-1.0~reproducible1) unstable; urgency=medium
+
+  * Build libs with fixed order *.o files, to ger reproducible build.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Mon, 25 Apr 2016 13:14:48 +0200
+
 xpa (2.1.17-1) unstable; urgency=low
 
   * New upstream version
diff -Nru xpa-2.1.17/debian/patches/series xpa-2.1.17/debian/patches/series
--- xpa-2.1.17/debian/patches/series	2015-10-20 10:08:03.0 +0200
+++ xpa-2.1.17/debian/patches/series	2016-04-25 13:13:06.0 +0200
@@ -2,3 +2,4 @@
 fix_manpages.patch
 install_tclxpa.patch
 hardening.patch
+sort_o_files
diff -Nru xpa-2.1.17/debian/patches/sort_o_files xpa-2.1.17/debian/patches/sort_o_files
--- xpa-2.1.17/debian/patches/sort_o_files	1970-01-01 01:00:00.0 +0100
+++ xpa-2.1.17/debian/patches/sort_o_files	2016-04-25 13:14:03.0 +0200
@@ -0,0 +1,24 @@
+Description: Sort *.o files
+ Build libs with fixed order *.o files, to ger reproducible build.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+--- xpa-2.1.17.orig/Makefile.in
 xpa-2.1.17/Makefile.in
+@@ -185,7 +185,7 @@ shlib:		$(LIB)
+ 		rm -f lib$(PACKAGE).tmp/xt*.o; \
+ 		rm -f lib$(PACKAGE).tmp/tcl*.o; \
+ 		CC='$(CC)' CXX=$(CXX) \
+-		./mklib -ldflags "$(LDFLAGS)" -o $(PACKAGE) lib$(PACKAGE).tmp/*.o; \
++		./mklib -ldflags "$(LDFLAGS)" -o $(PACKAGE) `LC_ALL=C ls lib$(PACKAGE).tmp/*.o`; \
+ 		rm -rf lib$(PACKAGE).tmp)
+ 
+ mingw-dll:	$(LIBOBJS)
+@@ -204,7 +204,7 @@ shtclxpa:	tclxpa
+ 		@(rm -rf $(PACKAGE)tmp; mkdir $(PACKAGE)tmp; \
+ 		(cd $(PACKAGE)tmp && ar x ../libtclxpa.a); \
+ 		CC='$(CC)' CXX='$(CXX)' \
+-		./mklib -ldflags "$(LDFLAGS)" -o tclxpa -L. -lxpa $(PACKAGE)tmp/*.o $(TCL_LIBS); \
++		./mklib -ldflags "$(LDFLAGS)" -o tclxpa -L. -lxpa `LC_ALL=C ls $(PACKAGE)tmp/*.o` $(TCL_LIBS); \
+ 		rm -rf $(PACKAGE)tmp; )
+ 
+ diff:


Bug#820668: sawfish: please make the build reproducible (fileordering,timestamps,username,hostname)

2016-04-25 Thread Alexis Bienvenüe
Hi Jose.

Le 17/04/2016 18:45, Jose M Calhariz a écrit :
> The patch is broken in file themes/Makefile.in, so I used a workaround
> for making it work.

Sorry for this mess: I did not realize there is a problem when modifying
an already existing patch and using debdiff on the source packages.
Please find an updated diff file with an extra patch.

> But I don't believe it makes a reproducible build.

The arguments $$d/* are expanded in an unreproducible order before being
passed to tar, that's why I used the ls command to sort them. However,
the order has to be locale-independent (uppercase/lowercase letters,
underscores, etc. are not sorted the same way depending on the locale),
so I added LC_ALL=C to 'ls'. However, you're right: when themes have
subdirectories, the -d switch must be used for ls, and tar also has to
list them in a reproducible order, so that the --sort=name option has to
be added. This is done in the updated patch.

I used the experimental toolchain [1] to check for reproducibility. It
is not the exact same process as the one used on jenkins to build the
reports, but my patch seemed to solve the issues detected in [2].

Regards,
Alexis Bienvenüe.

[1] https://wiki.debian.org/ReproducibleBuilds/ExperimentalToolchain
[2] https://reproducible.debian.net/rb-pkg/testing/amd64/sawfish.html

diff -Nru sawfish-1.11/debian/changelog sawfish-1.11/debian/changelog
--- sawfish-1.11/debian/changelog	2016-03-19 18:05:17.0 +0100
+++ sawfish-1.11/debian/changelog	2016-04-25 09:56:33.0 +0200
@@ -1,3 +1,10 @@
+sawfish (1:1.11-2.0~reproducible1) unstable; urgency=medium
+
+  * Removes timestamps, and fix files order, to make the build
+reproducible.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Mon, 25 Apr 2016 11:02:24 +0200
+
 sawfish (1:1.11-2) unstable; urgency=low
 
   * Upload to unstable.
diff -Nru sawfish-1.11/debian/patches/honours_SOURCE_DATE_EPOCH_for_build_h sawfish-1.11/debian/patches/honours_SOURCE_DATE_EPOCH_for_build_h
--- sawfish-1.11/debian/patches/honours_SOURCE_DATE_EPOCH_for_build_h	1970-01-01 01:00:00.0 +0100
+++ sawfish-1.11/debian/patches/honours_SOURCE_DATE_EPOCH_for_build_h	2016-04-25 10:30:46.0 +0200
@@ -0,0 +1,34 @@
+Description: Honours SOURCE_DATE_EPOCH for build.h
+ Honours SOURCE_DATE_EPOCH when building build.h, to get reproducible build.
+ See https://reproducible-builds.org/specs/source-date-epoch/
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+Index: sawfish-1.11/build-info
+===
+--- sawfish-1.11.orig/build-info
 sawfish-1.11/build-info
+@@ -20,8 +20,11 @@ localedir="$5"
+ sys_name="$HOSTNAME.$LOCALDOMAIN"
+ user_name="$LOGNAME"
+ 
+-build_date="`date +'%a %b %e %Y'`"
+-build_time="`date +'%T %Z'`"
++SOURCE_DATE_EPOCH="${SOURCE_DATE_EPOCH:-$(date +%s)}"
++DATE_FMT="%Y-%m-%d"
++build_date=$(date -u -d "@$SOURCE_DATE_EPOCH" "+$DATE_FMT" 2>/dev/null || date -u -r "$SOURCE_DATE_EPOCH" "+$DATE_FMT" 2>/dev/null || date -u "+$DATE_FMT")
++DATE_FMT="%T %Z"
++build_time=$(date -u -d "@$SOURCE_DATE_EPOCH" "+$DATE_FMT" 2>/dev/null || date -u -r "$SOURCE_DATE_EPOCH" "+$DATE_FMT" 2>/dev/null || date -u "+$DATE_FMT")
+ 
+ cat >src/build.h <src/build.h <
+
+--- sawfish-1.11.orig/themes/Makefile.in
 sawfish-1.11/themes/Makefile.in
+@@ -48,7 +48,7 @@ install : all installdirs
+ 	  rm -rf $(DESTDIR)$(themedir)/$$d; \
+ 	  for f in $(srcdir)/$$d/*; do \
+ 	if [ $$f != $(srcdir)/$$d/CVS ]; then \
+-	  ( cd $(srcdir) && GZIP=-9n tar czf $$d.tar.gz $$d/* ) ; \
++	  ( cd $(srcdir) && GZIP=-9n tar --sort=name -czf $$d.tar.gz `LC_ALL=C ls -d $$d/*` ) ; \
+ 	  $(INSTALL_DATA) $$d.tar.gz $(DESTDIR)$(themedir)/$$d.tar.gz; \
+ 	fi \
+ 	  done \



Bug#822197: sphinx: please remove memory addresses from generated python documentation

2016-04-21 Thread Alexis Bienvenüe
Source: sphinx
Version: 1.3.6-2
Severity: wishlist
Tags: patch upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: toolchain
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org
Control: forwarded -1 https://github.com/sphinx-doc/sphinx/pull/2480

Dear Maintainer,

While working on the “reproducible builds” effort [1], we have noticed
that the documentation generated by sphinx can include the memory
address of some python objects that are used at build time. See for
example, in file
/usr/share/doc/python-kombu-doc/html/reference/kombu.transport.qpid.html
from package python-kombu-doc_3.0.35-1.1 :

  Transport.Connection.Channel.codecs = {'base64':
}

This memory address is irrelevant in the documentation, and prevents the
package building to be reproducible.

The attached patch strips these memory addresses, leading to better
reproducibility.

Regards,
Alexis Bienvenüe.

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


diff -Nru sphinx-1.3.6/debian/changelog sphinx-1.3.6/debian/changelog
--- sphinx-1.3.6/debian/changelog	2016-03-03 18:22:21.0 +0100
+++ sphinx-1.3.6/debian/changelog	2016-04-22 00:37:33.0 +0200
@@ -1,3 +1,9 @@
+sphinx (1.3.6-3) unstable; urgency=medium
+
+  * Strips memory addresses from python documentation
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Fri, 22 Apr 2016 00:37:33 +0200
+
 sphinx (1.3.6-2) unstable; urgency=medium
 
   * Use implementation of jstest from Iain Lane in hope it succeeds on
diff -Nru sphinx-1.3.6/debian/patches/remove_memaddress.patch sphinx-1.3.6/debian/patches/remove_memaddress.patch
--- sphinx-1.3.6/debian/patches/remove_memaddress.patch	1970-01-01 01:00:00.0 +0100
+++ sphinx-1.3.6/debian/patches/remove_memaddress.patch	2016-04-22 00:36:39.0 +0200
@@ -0,0 +1,36 @@
+Description: Removes memory addresses from generated documentation
+ Some modules have eg. functions in some default arguments values, so
+ that sphinx generates signatures with some memory addresses in it.
+ This strips thes addresses.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+Index: sphinx-1.3.6/sphinx/domains/python.py
+===
+--- sphinx-1.3.6.orig/sphinx/domains/python.py
 sphinx-1.3.6/sphinx/domains/python.py
+@@ -34,6 +34,8 @@ py_sig_re = re.compile(
+   )? $   # and nothing more
+   ''', re.VERBOSE)
+ 
++# RE for memory address in variable description
++py_memaddr_re = re.compile(r' at 0x[0-9a-f]{4,}(?=>)')
+ 
+ def _pseudo_parse_arglist(signode, arglist):
+ """"Parse" a list of arguments separated by commas.
+@@ -62,6 +64,7 @@ def _pseudo_parse_arglist(signode, argli
+ ends_open += 1
+ argument = argument[:-1].strip()
+ if argument:
++argument = py_memaddr_re.sub('',argument)
+ stack[-1] += addnodes.desc_parameter(argument, argument)
+ while ends_open:
+ stack.append(addnodes.desc_optional())
+@@ -220,6 +223,8 @@ class PyObject(ObjectDescription):
+ if retann:
+ signode += addnodes.desc_returns(retann, retann)
+ if anno:
++if anno[0] == '=':
++anno = py_memaddr_re.sub('',anno)
+ signode += addnodes.desc_annotation(' ' + anno, ' ' + anno)
+ return fullname, name_prefix
+ 
diff -Nru sphinx-1.3.6/debian/patches/series sphinx-1.3.6/debian/patches/series
--- sphinx-1.3.6/debian/patches/series	2016-03-03 18:22:21.0 +0100
+++ sphinx-1.3.6/debian/patches/series	2016-04-22 00:34:39.0 +0200
@@ -7,3 +7,4 @@
 reproducible_inventory.diff
 reproducible_js_locale.diff
 reproducible_searchindex.diff
+remove_memaddress.patch


Bug#820809: wsdl4j: please make the build reproducible (environment)

2016-04-14 Thread Alexis Bienvenüe
Le 14/04/2016 12:28, Emmanuel Bourg a écrit :
> Thank you for the patch. It reminded me that the javadoc task sets the
> locale for the reproducible builds but not the encoding. I've fixed that
> in ant/1.9.7-1. If it works properly the reproducibility status of
> wsdl4j should get better in a few days.

Excellent: thanks!

Alexis.



Bug#820932: fim: please make the build reproducible (fileordering,timestamps,locale)

2016-04-13 Thread Alexis Bienvenüe
Source: fim
Version: 0.5~rc2-1
Severity: wishlist
Tags: patch upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: fileordering timestamps locale
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch fixes the order in which files are joined in header
files, strips the build date from fim binary, makes the embeded vim2html
script honour the SOURCE_DATE_EPOCH environment variable when building
the documentation, and force language to be English when using bison to
make a grammar that is going to be parsed using English keywords. Once
applied, fim can be built reproducibly in our current experimental
framework.

Regards,
Alexis Bienvenüe.

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





diff -Nru fim-0.5~rc2/debian/changelog fim-0.5~rc2/debian/changelog
--- fim-0.5~rc2/debian/changelog	2016-02-17 16:15:03.0 +0100
+++ fim-0.5~rc2/debian/changelog	2016-04-13 20:20:02.0 +0200
@@ -1,3 +1,13 @@
+fim (0.5~rc2-1.0~reproducible1) unstable; urgency=medium
+
+  * Make the build reproducible :
+- Set locale to C when sorting files
+- Strip build date from fim binary
+- makes embeded vim2html script honour SOURCE_DATE_EPOCH
+- fix language problem when parsing bison output
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Tue, 12 Apr 2016 10:56:22 +0200
+
 fim (0.5~rc2-1) unstable; urgency=medium
 
   * New upstream release snapshot (Closes: #814673).
diff -Nru fim-0.5~rc2/debian/patches/english_bison.patch fim-0.5~rc2/debian/patches/english_bison.patch
--- fim-0.5~rc2/debian/patches/english_bison.patch	1970-01-01 01:00:00.0 +0100
+++ fim-0.5~rc2/debian/patches/english_bison.patch	2016-04-13 19:16:05.0 +0200
@@ -0,0 +1,17 @@
+Description: Call bison with LC_ALL=C
+ If the current language is not English, the terms that bison outputs
+ in src/yacc.tab.output won't be recognized by the yacc2grammar.awk
+ script, and the file grammar.h won't be built correctly.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+--- fim-0.5~rc2.orig/src/Makefile.am
 fim-0.5~rc2/src/Makefile.am
+@@ -19,7 +19,7 @@ lex.yy.cc: lex.lex yacc.tab.cpp
+ 	$(SED) -i 's/^.*extern.*isatty.*int.*$$//g' $@
+ 
+ yacc.tab.hpp yacc.tab.cpp: yacc.ypp lex.lex
+-	$(YACC) $(YFLAGS) $< -o $@
++	LC_ALL=C $(YACC) $(YFLAGS) $< -o $@
+ 
+ FIM_LIB_OBJECTS = yacc.tab.o lex.yy.o
+ 
diff -Nru fim-0.5~rc2/debian/patches/series fim-0.5~rc2/debian/patches/series
--- fim-0.5~rc2/debian/patches/series	1970-01-01 01:00:00.0 +0100
+++ fim-0.5~rc2/debian/patches/series	2016-04-13 19:13:50.0 +0200
@@ -0,0 +1,4 @@
+sort_locale.patch
+strip_build_date.petch
+vim2html_SOURCE_DATE_EPOCH.patch
+english_bison.patch
diff -Nru fim-0.5~rc2/debian/patches/sort_locale.patch fim-0.5~rc2/debian/patches/sort_locale.patch
--- fim-0.5~rc2/debian/patches/sort_locale.patch	1970-01-01 01:00:00.0 +0100
+++ fim-0.5~rc2/debian/patches/sort_locale.patch	2016-04-12 17:56:23.0 +0200
@@ -0,0 +1,21 @@
+Description: Sort locale
+ Set sort locale to C, so that the order is always the same.
+ This helps reproducible build.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+--- fim-0.5~rc2.orig/src/Makefile.am
 fim-0.5~rc2/src/Makefile.am
+@@ -46,10 +46,10 @@ SDLDevice.o: default_icon_byte_array.h
+ 
+ # in the following : for some freebsd oddity, i was forced to replace ..0-9_]\+ with ..0-9_]*
+ version.h:	../config.h
+-	$(GREP) define $< | $(GREP) FIM | $(SORT) | $(SED) 's/^#//g;s/define //g;s/^\([A-Za-z0-9_]*\).*$$/+\1  /g;s/^/\"/g;s/$$/\"/g' > $@
++	$(GREP) define $< | $(GREP) FIM | LC_ALL=C $(SORT) | $(SED) 's/^#//g;s/define //g;s/^\([A-Za-z0-9_]*\).*$$/+\1  /g;s/^/\"/g;s/$$/\"/g' > $@
+ 	$(ECHO) "\"\n\"" >> $@
+-	$(GREP) define $< | $(GREP) FIM.*'"' | $(SORT) | $(SED) 's/^#//g;s/define //g;s/^\([A-Za-z0-9_]*\) "\(.*\)"$$/"\1 = \\"\2\\"\\n"/g'   >> $@
+-	$(GREP) undef $< | $(GREP) FIM | $(SORT) | $(SED) 's/^#//g;s/.*undef //g;s/^\([A-Za-z0-9_]*\).\+$$/-\1  /g;s/^/\"/g;s/$$/\"/g' >> $@
++	$(GREP) define $< | $(GREP) FIM.*'"' | LC_ALL=C $(SORT) | $(SED) 's/^#//g;s/define //g;s/^\([A-Za-z0-9_]*\) "\(.*\)"$$/"\1 = \\"\2\\"\\n"/g'   >> $@
++	$(GREP) undef $< | $(GREP) FIM | LC_ALL=C $(SORT) | $(SED) 's/^#//g;s/.*undef //g;s/^\([A-Za-z0-9_]*\).\+$$/-\1  /g;s/^/\"/g;s/$$/\"/g' >> $@
+ 	$(ECHO)  '"\n'CXXFLAGS=$(CXXFLAGS)'\n"' >> $@
+ 
+ help.cpp: fim.h
diff -Nru fim-0.5~rc2/debian/patches/strip_build_date.petch fim-0.5~rc2/debian/patches/strip_build_date.petch
--- fim-0.5~rc2/debian/patches/strip_build_date.petch	1970-01-01 01:00:00.0 +0100
+++ fim-0.5~rc2/debian/patches/strip_build_date.petch	2016-04-12 17:56:23.0

Bug#820895: sphinx: please extend SOURCE_DATE_EPOCH support

2016-04-13 Thread Alexis Bienvenüe
Source: sphinx
Version: 1.3.6-2
Severity: wishlist
Tags: patch upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: toolchain
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

While working on the “reproducible builds” effort [1], we have noticed
that, even though sphinx honours the SOURCE_DATE_EPOCH environment
variable [2], this support is still incomplete: default copyright year
and gettext don't use it.

Various packages (eg. fabric, guidata) that build-depend on sphinx use a
conf.py that sets the copyright year from current time, like

  copyright = u'2006-%s, Author' % time.strftime('%Y')

This also breaks reproducibility of the building process.

The attached patch extends the SOURCE_DATE_EPOCH support in copyright
year and gettext, and corrects copyright strings that does not
corresponds to SOURCE_DATE_EPOCH, so that affected packages can be built
reproducibly without any change.

Regards,
Alexis Bienvenüe.

[1] https://wiki.debian.org/ReproducibleBuilds
[2] https://reproducible-builds.org/specs/source-date-epoch/


diff -Nru sphinx-1.3.6/debian/changelog sphinx-1.3.6/debian/changelog
--- sphinx-1.3.6/debian/changelog	2016-03-03 18:22:21.0 +0100
+++ sphinx-1.3.6/debian/changelog	2016-04-13 14:05:28.0 +0200
@@ -1,3 +1,9 @@
+sphinx (1.3.6-2.0~reproducible1) unstable; urgency=medium
+
+  * Extends SOURCE_DATE_EPOCH support to copyright year.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Wed, 13 Apr 2016 09:45:47 +0200
+
 sphinx (1.3.6-2) unstable; urgency=medium
 
   * Use implementation of jstest from Iain Lane in hope it succeeds on
diff -Nru sphinx-1.3.6/debian/patches/correct_copyright_year_from_source_date_epoch.patch sphinx-1.3.6/debian/patches/correct_copyright_year_from_source_date_epoch.patch
--- sphinx-1.3.6/debian/patches/correct_copyright_year_from_source_date_epoch.patch	1970-01-01 01:00:00.0 +0100
+++ sphinx-1.3.6/debian/patches/correct_copyright_year_from_source_date_epoch.patch	2016-04-13 14:36:48.0 +0200
@@ -0,0 +1,45 @@
+Description: Correct copyright year from SOURCE_DATE_EPOCH
+ If the environment variable SOURCE_DATE_EPOCH is set, use it to correct
+ uncoherent copyright years that are set using strftime, which don't honour
+ SOURCE_DATE_EPOCH.
+ This helps reproducibility of packages that build-depends on sphinx.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+Index: sphinx-1.3.6/sphinx/config.py
+===
+--- sphinx-1.3.6.orig/sphinx/config.py
 sphinx-1.3.6/sphinx/config.py
+@@ -10,14 +10,14 @@
+ """
+ 
+ import re
+-from os import path, environ
++from os import path, environ, getenv
+ import shlex
+ 
+ from six import PY3, iteritems, string_types, binary_type, integer_types
+ 
+ from sphinx.errors import ConfigError
+ from sphinx.locale import l_
+-from sphinx.util.osutil import make_filename, cd
++from sphinx.util.osutil import make_filename, cd, ustrftime
+ from sphinx.util.pycompat import execfile_
+ 
+ nonascii_re = re.compile(br'[\x80-\xff]')
+@@ -286,6 +286,16 @@ class Config(object):
+ self.setup = config.get('setup', None)
+ self.extensions = config.get('extensions', [])
+ 
++# correct values of copyright year that are not coherent with
++# the SOURCE_DATE_EPOCH environment variable:
++source_date_epoch = getenv('SOURCE_DATE_EPOCH')
++if source_date_epoch is not None:
++for k in ['copyright','epub_copyright']:
++if k in config:
++config[k] = re.sub('^((\d{4}-)?)(\d{4})(?=[ ,])',
++   '\g<1>%s' % ustrftime('%Y'),
++   config[k])
++
+ def check_types(self, warn):
+ # check all values for deviation from the default value's type, since
+ # that can result in TypeErrors all over the place
diff -Nru sphinx-1.3.6/debian/patches/series sphinx-1.3.6/debian/patches/series
--- sphinx-1.3.6/debian/patches/series	2016-03-03 18:22:21.0 +0100
+++ sphinx-1.3.6/debian/patches/series	2016-04-13 14:02:26.0 +0200
@@ -7,3 +7,4 @@
 reproducible_inventory.diff
 reproducible_js_locale.diff
 reproducible_searchindex.diff
+correct_copyright_year_from_source_date_epoch.patch
diff -Nru sphinx-1.3.6/debian/patches/source_date_epoch.diff sphinx-1.3.6/debian/patches/source_date_epoch.diff
--- sphinx-1.3.6/debian/patches/source_date_epoch.diff	2016-03-03 18:22:21.0 +0100
+++ sphinx-1.3.6/debian/patches/source_date_epoch.diff	2016-04-13 10:03:43.0 +0200
@@ -11,10 +11,10 @@
  sphinx/util/osutil.py | 15 +++
  1 file changed, 11 insertions(+), 4 deletions(-)
 
-diff --git a/sphinx/util/osutil.py b/sphinx/util/osutil.py
-index 70d5cf5..e1d29a9 100644
 a/sphinx/util/osutil.py
-+++ b/sphinx/util/osutil.py
+Index: sphinx-1.3.6/sphinx/util/osutil.py
+=

Bug#820869: pyexiv2: please make the build reproducible (timestamps)

2016-04-13 Thread Alexis Bienvenüe
Source: pyexiv2
Version: 0.3.2-8
Severity: wishlist
Tags: patch upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: timestamps
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch honours the SOURCE_DATE_EPOCH environment variable
through the ustrftime function, to get a reproducible copyright year.
Once applied, pyexiv2 can be built reproducibly in our current
experimental framework.

Regards,
Alexis Bienvenüe.

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




diff -Nru pyexiv2-0.3.2/debian/changelog pyexiv2-0.3.2/debian/changelog
--- pyexiv2-0.3.2/debian/changelog	2015-04-28 11:26:28.0 +0200
+++ pyexiv2-0.3.2/debian/changelog	2016-04-13 11:31:43.0 +0200
@@ -1,3 +1,10 @@
+pyexiv2 (0.3.2-8.0~reproducible1) unstable; urgency=medium
+
+  * Get copyright year from ustrftime for documentation, to make the build
+reproducible.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Wed, 13 Apr 2016 11:31:43 +0200
+
 pyexiv2 (0.3.2-8) unstable; urgency=medium
 
   * Adjust Vcs-Svn URL.
diff -Nru pyexiv2-0.3.2/debian/patches/series pyexiv2-0.3.2/debian/patches/series
--- pyexiv2-0.3.2/debian/patches/series	2015-04-28 11:22:29.0 +0200
+++ pyexiv2-0.3.2/debian/patches/series	2016-04-13 10:58:31.0 +0200
@@ -1 +1,2 @@
 remove-date.patch
+use_source_date_for_copyright.patch
diff -Nru pyexiv2-0.3.2/debian/patches/use_source_date_for_copyright.patch pyexiv2-0.3.2/debian/patches/use_source_date_for_copyright.patch
--- pyexiv2-0.3.2/debian/patches/use_source_date_for_copyright.patch	1970-01-01 01:00:00.0 +0100
+++ pyexiv2-0.3.2/debian/patches/use_source_date_for_copyright.patch	2016-04-13 11:00:34.0 +0200
@@ -0,0 +1,25 @@
+Description: Use source date for copyright year
+ To get copyright year, use ustrftime, which honours SOURCE_DATE_EPOCH.
+ This makes the build reproducible.
+ See https://reproducible-builds.org/specs/source-date-epoch/
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+--- pyexiv2-0.3.2.orig/doc/conf.py
 pyexiv2-0.3.2/doc/conf.py
+@@ -14,6 +14,7 @@
+ import sys, os
+ import time
+ import pyexiv2
++from sphinx.util.osutil import ustrftime
+ 
+ # If extensions (or modules to document with autodoc) are in another directory,
+ # add these directories to sys.path here. If the directory is relative to the
+@@ -40,7 +41,7 @@ master_doc = 'index'
+ 
+ # General information about the project.
+ project = u'pyexiv2'
+-copyright = u'2006-%s, Olivier Tilloy' % time.strftime('%Y')
++copyright = u'2006-%s, Olivier Tilloy' % ustrftime('%Y')
+ 
+ # The version info for the project you're documenting, acts as replacement for
+ # |version| and |release|, also used in various other places throughout the


Bug#820815: freefem++: please make the build reproducible (fileordering,timestamps)

2016-04-12 Thread Alexis Bienvenüe
Source: freefem++
Version: 3.45-1
Severity: wishlist
Tags: patch upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: fileordering timestamps
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch fixes the order in which files are included in the
edp files, and honours SOURCE_DATE_EPOCH [2] when using the build date.
Once applied, freefem++ can be built reproducibly in our current
experimental framework.

Regards,
Alexis Bienvenüe.

 [1]: https://wiki.debian.org/ReproducibleBuilds
 [2]: https://reproducible-builds.org/specs/source-date-epoch/





diff -Nru freefem++-3.45/debian/changelog freefem++-3.45/debian/changelog
--- freefem++-3.45/debian/changelog	2016-03-19 23:24:48.0 +0100
+++ freefem++-3.45/debian/changelog	2016-04-12 19:10:09.0 +0200
@@ -1,3 +1,10 @@
+freefem++ (3.45-1.0~reproducible1) unstable; urgency=medium
+
+  * Set ls locale in Makefiles, for reproducible order.
+  * Honours SOURCE_DATE_EPOCH to date the build.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Tue, 12 Apr 2016 19:10:09 +0200
+
 freefem++ (3.45-1) unstable; urgency=medium
 
   * Imported Upstream version 3.45
diff -Nru freefem++-3.45/debian/patches/build_date_from_SOURCE_DATE_EPOCH.patch freefem++-3.45/debian/patches/build_date_from_SOURCE_DATE_EPOCH.patch
--- freefem++-3.45/debian/patches/build_date_from_SOURCE_DATE_EPOCH.patch	1970-01-01 01:00:00.0 +0100
+++ freefem++-3.45/debian/patches/build_date_from_SOURCE_DATE_EPOCH.patch	2016-04-12 18:49:38.0 +0200
@@ -0,0 +1,55 @@
+Description: Get build date from SOURCE_DATE_EPOCH
+ Get build date from SOURCE_DATE_EPOCH (if set), to make the build
+ reproducible.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+Index: freefem++-3.45/configure.ac
+===
+--- freefem++-3.45.orig/configure.ac
 freefem++-3.45/configure.ac
+@@ -128,8 +128,12 @@ m4_define([TOOL_DISABLE],
+ TOOL_PARAMETERS($1,$2,$3)
+ ])
+ 
++SOURCE_DATE_EPOCH="${SOURCE_DATE_EPOCH:-$(date +%s)}"
++FF_DATE=$(date -u -d "@$SOURCE_DATE_EPOCH" "+%Y-%m-%d" 2>/dev/null || date -u -r "$SOURCE_DATE_EPOCH" "+%Y-%m-%d" 2>/dev/null || date -u "+%Y-%m-%d")
++AC_SUBST(FF_DATE,$FF_DATE)
++
+ ff_HOSTARCH_pastix=
+-echo "#  Build with freefem++ with ./configure " `date`  >$ff_where_lib_conf
++echo "#  Build with freefem++ with ./configure $FF_DATE"  >$ff_where_lib_conf
+ # To allow anonymous CVS version to contain a "./configure" and
+ # Makefiles
+ 
+@@ -600,7 +604,6 @@ ff_prefix_dir="${prefix}/lib/ff++/$VERSI
+ AC_MSG_CHECKING(prefix dir freefem++  )
+ AC_MSG_RESULT($ff_prefix_dir)
+ 
+-FF_DATE=`date`
+ AC_DEFINE_UNQUOTED(VersionFreeFemDate,"$FF_DATE",FreeFem++ build date)
+ AC_DEFINE_UNQUOTED(FF_PREFIX_DIR,"${ff_prefix_dir}",FreeFem prefix  dir)
+ AC_SUBST(ff_prefix_dir,$ff_prefix_dir)
+Index: freefem++-3.45/src/fflib/Makefile.am
+===
+--- freefem++-3.45.orig/src/fflib/Makefile.am
 freefem++-3.45/src/fflib/Makefile.am
+@@ -64,5 +64,5 @@ AM_CPPFLAGS=-I$(srcdir)/../lglib -I$(src
+ EXTRA_DIST=strversionnumber.m4
+ BUILT_SOURCES=strversionnumber.cpp
+ strversionnumber.cpp: $(libff_a_SOURCES2) ../../configure
+-	m4 -DVersionFreeFemDate="`date`" strversionnumber.m4 > $@
++	m4 -DVersionFreeFemDate="@FF_DATE@" strversionnumber.m4 > $@
+ FORCE:
+Index: freefem++-3.45/src/medit/Makefile.am
+===
+--- freefem++-3.45.orig/src/medit/Makefile.am
 freefem++-3.45/src/medit/Makefile.am
+@@ -17,7 +17,7 @@ LDADD=picking.$(OBJEXT) ../libMesh/libMe
+ AM_CPPFLAGS=-I$(srcdir)/../libMesh
+ BUILT_SOURCES=compil.date
+ compil.date: $(ffmedit_SOURCES)
+-	echo "#define COMPIL " '"' `date` '(with ff++ $(VERSION))''"' > compil.date
++	echo "#define COMPIL " '" @FF_DATE@ (with ff++ $(VERSION))"' > compil.date
+ #.PHONY: compil.date
+ 
+ # ALH - during a parallel make, we should make sure that picking.o is not used before being made by a different
diff -Nru freefem++-3.45/debian/patches/ls-locale.patch freefem++-3.45/debian/patches/ls-locale.patch
--- freefem++-3.45/debian/patches/ls-locale.patch	1970-01-01 01:00:00.0 +0100
+++ freefem++-3.45/debian/patches/ls-locale.patch	2016-04-12 17:57:07.0 +0200
@@ -0,0 +1,85 @@
+Description: Set ls locale to C
+ Set ls locale to C, so that the order is always the same, whatever the
+ current locale is. This makes the build reproducible.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+--- freefem++-3.45.orig/examples++-3d/Makefile.am
 freefem++-3.45/examples++-3d/Makefile.am
+@@ -16,7 +

Bug#820809: wsdl4j: please make the build reproducible (environment)

2016-04-12 Thread Alexis Bienvenüe
Source: wsdl4j
Version: 1.6.3-2
Severity: wishlist
Tags: patch upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: environment
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch use a plain text representation of the copyright
character in the build.xml file, to avoid encoding issues with javadoc.
Once applied, wsdl4j can be built reproducibly in our current
experimental framework.

Regards,
Alexis Bienvenüe.

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






diff -Nru wsdl4j-1.6.3/debian/patches/javadoc_encoding.patch wsdl4j-1.6.3/debian/patches/javadoc_encoding.patch
--- wsdl4j-1.6.3/debian/patches/javadoc_encoding.patch	1970-01-01 01:00:00.0 +0100
+++ wsdl4j-1.6.3/debian/patches/javadoc_encoding.patch	2016-04-12 17:11:02.0 +0200
@@ -0,0 +1,18 @@
+Description: Fix javadoc encoding
+ Don't use UTF-8 characters in build.xml, to avoid encoding issues when
+ using javadoc and  make the build reproducible.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+Index: wsdl4j-1.6.3/build.xml
+===
+--- wsdl4j-1.6.3.orig/build.xml
 wsdl4j-1.6.3/build.xml
+@@ -193,7 +193,7 @@ Author:
+  windowtitle="${Name} API"
+  doctitle="${Name}"
+  breakiterator="yes"
+- bottom="Copyright  ${year} IBM. All Rights Reserved."
++ bottom="Copyright (c) ${year} IBM. All Rights Reserved."
+ />
+   
+ 
diff -Nru wsdl4j-1.6.3/debian/patches/series wsdl4j-1.6.3/debian/patches/series
--- wsdl4j-1.6.3/debian/patches/series	1970-01-01 01:00:00.0 +0100
+++ wsdl4j-1.6.3/debian/patches/series	2016-04-12 16:27:06.0 +0200
@@ -0,0 +1 @@
+javadoc_encoding.patch


Bug#820742: gmic: please make the build reproducible (timestamps)

2016-04-11 Thread Alexis Bienvenüe
Source: gmic
Version: 1.6.8-3
Severity: wishlist
Tags: patch upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: timestamps
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch strips the build date from help messages. Once
applied, gmic can be built reproducibly in our current experimental
framework.

Regards,
Alexis Bienvenüe.

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



diff -Nru gmic-1.6.8/debian/changelog gmic-1.6.8/debian/changelog
--- gmic-1.6.8/debian/changelog	2016-01-16 17:27:29.0 +0100
+++ gmic-1.6.8/debian/changelog	2016-04-11 23:07:20.0 +0200
@@ -1,3 +1,9 @@
+gmic (1.6.8-3.0~reproducible1) unstable; urgency=medium
+
+  * Strip build date from help output, to make the build reproducible.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Mon, 11 Apr 2016 23:07:20 +0200
+
 gmic (1.6.8-3) unstable; urgency=medium
 
   * [0e17dac] Add hardening flags.
diff -Nru gmic-1.6.8/debian/patches/series gmic-1.6.8/debian/patches/series
--- gmic-1.6.8/debian/patches/series	2016-01-16 17:27:29.0 +0100
+++ gmic-1.6.8/debian/patches/series	2016-04-11 23:05:34.0 +0200
@@ -1,2 +1,3 @@
 disable-optimization-in-upstream-makefile
 ldconfig-symlink-referencing-wrong-file
+strip_build_date
diff -Nru gmic-1.6.8/debian/patches/strip_build_date gmic-1.6.8/debian/patches/strip_build_date
--- gmic-1.6.8/debian/patches/strip_build_date	1970-01-01 01:00:00.0 +0100
+++ gmic-1.6.8/debian/patches/strip_build_date	2016-04-11 23:06:32.0 +0200
@@ -0,0 +1,27 @@
+Description: Strip build date
+ Strip build date and time from help outputs, to make the build reproducible.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+--- gmic-1.6.8.orig/src/CImg.h
 gmic-1.6.8/src/CImg.h
+@@ -5175,7 +5175,7 @@ namespace cimg_library_suffixed {
+ if (usage) {
+   std::fprintf(cimg::output(),"\n %s%s%s",cimg::t_red,cimg::basename(argv[0]),cimg::t_normal);
+   std::fprintf(cimg::output(),": %s",usage);
+-  std::fprintf(cimg::output()," (%s, %s)\n\n",__DATE__,__TIME__);
++  std::fprintf(cimg::output(),"\n\n");
+ }
+ if (defaut) std::fprintf(cimg::output(),"%s\n",defaut);
+   }
+@@ -5253,9 +5253,9 @@ namespace cimg_library_suffixed {
+\note Output is done on the default output stream.
+ **/
+ inline void info() {
+-  std::fprintf(cimg::output(),"\n %s%sCImg Library %u.%u.%u%s, compiled %s ( %s ) with the following flags:\n\n",
++  std::fprintf(cimg::output(),"\n %s%sCImg Library %u.%u.%u%s, compiled with the following flags:\n\n",
+cimg::t_red,cimg::t_bold,cimg_version/100,(cimg_version/10)%10,cimg_version%10,
+-   cimg::t_normal,__DATE__,__TIME__);
++   cimg::t_normal);
+ 
+   std::fprintf(cimg::output(),"  > Operating System:   %s%-13s%s %s('cimg_OS'=%d)%s\n",
+cimg::t_bold,


Bug#820741: sim4: please make the build reproducible (fileordering)

2016-04-11 Thread Alexis Bienvenüe
Source: sim4
Version: 0.0.20121010-2
Severity: wishlist
Tags: patch upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: fileordering
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch fixes the order in which C files are compiled. Once
applied, sim4 can be built reproducibly in our current experimental
framework.

Regards,
Alexis Bienvenüe.

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




diff -Nru sim4-0.0.20121010/debian/changelog sim4-0.0.20121010/debian/changelog
--- sim4-0.0.20121010/debian/changelog	2016-01-21 09:55:42.0 +0100
+++ sim4-0.0.20121010/debian/changelog	2016-04-12 00:08:43.0 +0200
@@ -1,3 +1,9 @@
+sim4 (0.0.20121010-2.0~reproducible1) unstable; urgency=medium
+
+  * Sort c files for reproducible build
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Tue, 12 Apr 2016 00:08:43 +0200
+
 sim4 (0.0.20121010-2) unstable; urgency=medium
 
   * Moved debian/upstream to debian/upstream/metadata
diff -Nru sim4-0.0.20121010/debian/patches/compilation_order.patch sim4-0.0.20121010/debian/patches/compilation_order.patch
--- sim4-0.0.20121010/debian/patches/compilation_order.patch	1970-01-01 01:00:00.0 +0100
+++ sim4-0.0.20121010/debian/patches/compilation_order.patch	2016-04-12 00:08:00.0 +0200
@@ -0,0 +1,14 @@
+Description: Compilation order
+ Sort c files for compilation, to make the build reproducible.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+--- sim4-0.0.20121010.orig/Makefile
 sim4-0.0.20121010/Makefile
+@@ -8,6 +8,6 @@ CFLAGS+=-g -O2 -Wall
+ LDLIBS=-lm
+  
+ sim4:
+-	$(CC) -o sim4 -I. $(CFLAGS) *.c $(LDLIBS) $(LDFLAGS)
++	$(CC) -o sim4 -I. $(CFLAGS) `LC_ALL=C ls *.c` $(LDLIBS) $(LDFLAGS)
+ clean:
+ 	rm -f sim4 *.o
diff -Nru sim4-0.0.20121010/debian/patches/series sim4-0.0.20121010/debian/patches/series
--- sim4-0.0.20121010/debian/patches/series	2013-09-12 11:00:31.0 +0200
+++ sim4-0.0.20121010/debian/patches/series	2016-04-12 00:06:59.0 +0200
@@ -1 +1,2 @@
 hardening.patch
+compilation_order.patch


Bug#820740: bless: please make the build reproducible (environment)

2016-04-11 Thread Alexis Bienvenüe
Source: bless
Version: 0.6.0-5
Severity: wishlist
Tags: patch
User: reproducible-bui...@lists.alioth.debian.org
Usertags: environment
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch fixes the SHELL used in the binary package
executables to /bin/sh instead of current one. Once applied, bless can
be built reproducibly in our current experimental framework.

Regards,
Alexis Bienvenüe.

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





diff -Nru bless-0.6.0/debian/changelog bless-0.6.0/debian/changelog
--- bless-0.6.0/debian/changelog	2015-09-09 15:49:19.0 +0200
+++ bless-0.6.0/debian/changelog	2016-04-11 23:19:02.0 +0200
@@ -1,3 +1,10 @@
+bless (0.6.0-5.0~reproducible1) unstable; urgency=medium
+
+  * Use shell /bin/sh in binary package executables, to make the build
+reproducible
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Mon, 11 Apr 2016 23:19:02 +0200
+
 bless (0.6.0-5) unstable; urgency=low
 
   * [6357a2e] Convert from CBDS to DH7
diff -Nru bless-0.6.0/debian/patches/series bless-0.6.0/debian/patches/series
--- bless-0.6.0/debian/patches/series	2015-09-09 15:38:44.0 +0200
+++ bless-0.6.0/debian/patches/series	2016-04-11 23:16:58.0 +0200
@@ -1,2 +1,3 @@
 use_default_compiler.patch
 force_gtk_action_namespace.patch
+use_sh
diff -Nru bless-0.6.0/debian/patches/use_sh bless-0.6.0/debian/patches/use_sh
--- bless-0.6.0/debian/patches/use_sh	1970-01-01 01:00:00.0 +0100
+++ bless-0.6.0/debian/patches/use_sh	2016-04-11 23:45:53.0 +0200
@@ -0,0 +1,35 @@
+Description: Use sh
+ Use shell /bin/sh in binary package executables, whatever the $SHELL
+ variable is when building, to make the build reproducible.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+Index: bless-0.6.0/bless-script.in
+===
+--- bless-0.6.0.orig/bless-script.in
 bless-0.6.0/bless-script.in
+@@ -1,3 +1,3 @@
+-#!@SHELL@
++#!/bin/sh
+ 
+ mono "@blesssrcdir@/bin/bless.exe" "$@"
+\ No newline at end of file
+Index: bless-0.6.0/data/help_script.tmpl.in
+===
+--- bless-0.6.0.orig/data/help_script.tmpl.in
 bless-0.6.0/data/help_script.tmpl.in
+@@ -1,4 +1,4 @@
+-#!@SHELL@
++#!/bin/sh
+ 
+ # Script that loads help for Bless
+ xml_help="@blessdocdir@/user/bless-manual.xml"
+Index: bless-0.6.0/src/bless-script.in
+===
+--- bless-0.6.0.orig/src/bless-script.in
 bless-0.6.0/src/bless-script.in
+@@ -1,3 +1,3 @@
+-#!@SHELL@
++#!/bin/sh
+ 
+ mono "@blesslibdir@/@PACKAGE_NAME@/bless.exe" "$@"
+\ No newline at end of file


Bug#820684: fop: please make the build reproducible (username,hostname,timestamps,locale)

2016-04-11 Thread Alexis Bienvenüe
Source: fop
Version: 1:2.1-2
Severity: wishlist
Tags: patch upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: username hostname timestamps locale
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch fixes the encoding of documentation files, strips the
timestamp from the fop-ttfreader man page, and removes hostname,
username and OS info from MANIFEST files.
Once applied, fop can be built reproducibly in our current experimental
framework.

Regards,
Alexis Bienvenüe.

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





diff -Nru fop-2.1/debian/changelog fop-2.1/debian/changelog
--- fop-2.1/debian/changelog	2016-02-15 08:56:48.0 +0100
+++ fop-2.1/debian/changelog	2016-04-11 13:51:45.0 +0200
@@ -1,3 +1,11 @@
+fop (1:2.1-2.0~reproducible1) unstable; urgency=medium
+
+  * Use d/changelog date for pod2man
+  * Strip user/host from MANIFEST
+  * Fix javadoc encoding
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Mon, 11 Apr 2016 11:48:50 +0200
+
 fop (1:2.1-2) unstable; urgency=medium
 
   [ Sylvestre Ledru ]
diff -Nru fop-2.1/debian/patches/javadoc_encoding.patch fop-2.1/debian/patches/javadoc_encoding.patch
--- fop-2.1/debian/patches/javadoc_encoding.patch	1970-01-01 01:00:00.0 +0100
+++ fop-2.1/debian/patches/javadoc_encoding.patch	2016-04-11 12:18:12.0 +0200
@@ -0,0 +1,16 @@
+Description: Set javadoc output encoding to UTF-8
+ Set javadoc output encoding to UTF-8, to make the build reproducible.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+Index: fop-2.1/build.xml
+===
+--- fop-2.1.orig/build.xml
 fop-2.1/build.xml
+@@ -963,6 +963,7 @@ NOTE:
+   windowtitle="${Name} ${version} API"
+   doctitle="Apache Formatting Objects Processor (FOP)"
+   bottom="Copyright ${year} The Apache Software Foundation. All Rights Reserved."
++  encoding="UTF-8" docencoding="UTF-8" charset="UTF-8"
+   overview="${src.dir}/java/org/apache/fop/overview.html"
+   maxmemory="256M">
+   
diff -Nru fop-2.1/debian/patches/series fop-2.1/debian/patches/series
--- fop-2.1/debian/patches/series	2016-02-15 08:56:48.0 +0100
+++ fop-2.1/debian/patches/series	2016-04-11 12:07:35.0 +0200
@@ -2,3 +2,5 @@
 fixbuildxml.patch
 replace-sRGB-profile.patch
 hyph_stacksize.patch
+strip_user_host_from_manifest.patch
+javadoc_encoding.patch
diff -Nru fop-2.1/debian/patches/strip_user_host_from_manifest.patch fop-2.1/debian/patches/strip_user_host_from_manifest.patch
--- fop-2.1/debian/patches/strip_user_host_from_manifest.patch	1970-01-01 01:00:00.0 +0100
+++ fop-2.1/debian/patches/strip_user_host_from_manifest.patch	2016-04-11 11:25:09.0 +0200
@@ -0,0 +1,81 @@
+Description: Strip user and host from MANIFEST
+ Strip user, host and os variables from MANIFEST.MF, to make the build
+ reproducible.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+--- fop-2.1.orig/build.xml
 fop-2.1/build.xml
+@@ -461,7 +461,7 @@ list of possible build targets.
+ 
+ 
+ http://xmlgraphics.apache.org/fop/)"/>
+-
++
+   
+ 
+   
+@@ -483,7 +483,7 @@ list of possible build targets.
+ 
+   
+ 
+-
++
+ 
+   
+   
+@@ -508,7 +508,7 @@ list of possible build targets.
+ 
+ 
+   
+-
++
+   
+   
+ 
+@@ -638,7 +638,7 @@ list of possible build targets.
+ 
+ 
+ http://xmlgraphics.apache.org/fop/)"/>
+-
++
+   
+   
+ 
+@@ -673,7 +673,7 @@ list of possible build targets.
+ 
+ 
+ http://xmlgraphics.apache.org/fop/)"/>
+-
++
+   
+   
+ 
+@@ -1044,7 +1044,7 @@ NOTE:
+   
+ 
+   
+-
++
+   
+   
+   
+@@ -1348,7 +1348,7 @@ NOTE:
+ 
+ 
+   
+-
++
+   
+   
+ 
+--- fop-2.1.orig/examples/plan/build.xml
 fop-2.1/examples/plan/build.xml
+@@ -133,7 +133,7 @@
+ 
+ 
+ http://xmlgraphics.apache.org/fop/)"/>
+-
++
+ 
+ 
+   
diff -Nru fop-2.1/debian/rules fop-2.1/debian/rules
--- fop-2.1/debian/rules	2016-02-15 08:56:48.0 +0100
+++ fop-2.1/debian/rules	2016-04-11 11:28:53.0 +0200
@@ -37,7 +37,6 @@
 
 	pod2man --section=1 \
 		--release="Fop-TTFReader " \
-		--date="`date`" \
 		debian/fop-ttfreader.pod > build/fop-ttfreader.1
 
 install/fop-doc::


Bug#820668: sawfish: please make the build reproducible (fileordering,timestamps,username,hostname)

2016-04-11 Thread Alexis Bienvenüe
Source: sawfish
Version: 1.11-2
Severity: wishlist
Tags: patch upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: fileordering timestamps username hostname
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch fixes the order in which files are included in the
theme tgz files, strips hostname and username from the config.h file,
and honours SOURCE_DATE_EPOCH when creating the config.h file. Once
applied, sawfish can be built reproducibly in our current experimental
framework.

Regards,
Alexis Bienvenüe.

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




diff -Nru sawfish-1.11/debian/changelog sawfish-1.11/debian/changelog
--- sawfish-1.11/debian/changelog	2016-03-19 18:05:17.0 +0100
+++ sawfish-1.11/debian/changelog	2016-04-11 10:30:04.0 +0200
@@ -1,3 +1,10 @@
+sawfish (1:1.11-2.0~reproducible1) unstable; urgency=medium
+
+  * Removes timestamps, and fix files order, to make the build
+reproducible.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Mon, 11 Apr 2016 10:30:04 +0200
+
 sawfish (1:1.11-2) unstable; urgency=low
 
   * Upload to unstable.
diff -Nru sawfish-1.11/debian/patches/honours_SOURCE_DATE_EPOCH_for_build_h sawfish-1.11/debian/patches/honours_SOURCE_DATE_EPOCH_for_build_h
--- sawfish-1.11/debian/patches/honours_SOURCE_DATE_EPOCH_for_build_h	1970-01-01 01:00:00.0 +0100
+++ sawfish-1.11/debian/patches/honours_SOURCE_DATE_EPOCH_for_build_h	2016-04-11 10:27:07.0 +0200
@@ -0,0 +1,32 @@
+Description: Honours SOURCE_DATE_EPOCH for build.h
+ Honours SOURCE_DATE_EPOCH when building build.h, to get reproducible build.
+ See https://reproducible-builds.org/specs/source-date-epoch/
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+--- sawfish-1.11.orig/build-info
 sawfish-1.11/build-info
+@@ -20,8 +20,11 @@ localedir="$5"
+ sys_name="$HOSTNAME.$LOCALDOMAIN"
+ user_name="$LOGNAME"
+ 
+-build_date="`date +'%a %b %e %Y'`"
+-build_time="`date +'%T %Z'`"
++SOURCE_DATE_EPOCH="${SOURCE_DATE_EPOCH:-$(date +%s)}"
++DATE_FMT="%Y-%m-%d"
++build_date=$(date -u -d "@$SOURCE_DATE_EPOCH" "+$DATE_FMT" 2>/dev/null || date -u -r "$SOURCE_DATE_EPOCH" "+$DATE_FMT" 2>/dev/null || date -u "+$DATE_FMT")
++DATE_FMT="%T %Z"
++build_time=$(date -u -d "@$SOURCE_DATE_EPOCH" "+$DATE_FMT" 2>/dev/null || date -u -r "$SOURCE_DATE_EPOCH" "+$DATE_FMT" 2>/dev/null || date -u "+$DATE_FMT")
+ 
+ cat >src/build.h <src/build.h <
 
-Index: sawfish.git/themes/Makefile.in
+Index: sawfish-1.11/themes/Makefile.in
 ===
 sawfish.git.orig/themes/Makefile.in	2016-02-07 14:01:21.138285458 +
-+++ sawfish.git/themes/Makefile.in	2016-02-08 20:39:18.072356084 +
+--- sawfish-1.11.orig/themes/Makefile.in
 sawfish-1.11/themes/Makefile.in
 @@ -48,7 +48,7 @@ install : all installdirs
  	  rm -rf $(DESTDIR)$(themedir)/$$d; \
  	  for f in $(srcdir)/$$d/*; do \
  	if [ $$f != $(srcdir)/$$d/CVS ]; then \
 -	  ( cd $(srcdir) && tar czf $$d.tar.gz $$d/* ) ; \
-+	  ( cd $(srcdir) && GZIP=-9n tar czf $$d.tar.gz $$d/* ) ; \
++	  ( cd $(srcdir) && GZIP=-9n tar czf $$d.tar.gz `LC_ALL=C ls $$d/*` ) ; \
  	  $(INSTALL_DATA) $$d.tar.gz $(DESTDIR)$(themedir)/$$d.tar.gz; \
  	fi \
  	  done \
diff -Nru sawfish-1.11/debian/patches/series sawfish-1.11/debian/patches/series
--- sawfish-1.11/debian/patches/series	2016-03-05 01:46:54.0 +0100
+++ sawfish-1.11/debian/patches/series	2016-04-11 10:25:57.0 +0200
@@ -4,3 +4,4 @@
 limit-max-dimensions.patch
 make-build-reproducible
 fix-desktop-entry-lacks-keywords-entry
+honours_SOURCE_DATE_EPOCH_for_build_h


Bug#820661: nullmailer: please make the build reproducible (fileordering)

2016-04-11 Thread Alexis Bienvenüe
Source: nullmailer
Version: 1.13-1
Severity: wishlist
Tags: patch upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: fileordering
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch fixes the order in which files are included in the
libnullmailer.a archive. Once applied, nullmailer can be built
reproducibly in our current experimental framework.

Regards,
Alexis Bienvenüe.

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



diff -Nru nullmailer-1.13/debian/changelog nullmailer-1.13/debian/changelog
--- nullmailer-1.13/debian/changelog	2014-08-08 02:19:32.0 +0200
+++ nullmailer-1.13/debian/changelog	2016-04-11 09:26:05.0 +0200
@@ -1,3 +1,9 @@
+nullmailer (1:1.13-1.0~reproducible1) unstable; urgency=medium
+
+  * Deterministic file order in archives.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Mon, 11 Apr 2016 09:26:05 +0200
+
 nullmailer (1:1.13-1) unstable; urgency=low
 
   * Ack NMU, thankyou for your help with this package.
diff -Nru nullmailer-1.13/debian/patches/15_sort_files_in_archive.diff nullmailer-1.13/debian/patches/15_sort_files_in_archive.diff
--- nullmailer-1.13/debian/patches/15_sort_files_in_archive.diff	1970-01-01 01:00:00.0 +0100
+++ nullmailer-1.13/debian/patches/15_sort_files_in_archive.diff	2016-04-11 09:35:26.0 +0200
@@ -0,0 +1,16 @@
+Description: Sort files in archive
+ Sort files when using mergelib to create libnullmailer.a, to get
+ reproducible build
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+Index: nullmailer-1.13/lib/mergelib.sh
+===
+--- nullmailer-1.13.orig/lib/mergelib.sh
 nullmailer-1.13/lib/mergelib.sh
+@@ -12,5 +12,5 @@ for input in "$@"; do
+ 	ar x ../../"$input"
+ 	cd ..
+ done
+-ar rc ../"$archive" */*
++ar rc ../"$archive" `LC_ALL=C ls */*`
+ ranlib ../"$archive"
diff -Nru nullmailer-1.13/debian/patches/series nullmailer-1.13/debian/patches/series
--- nullmailer-1.13/debian/patches/series	2014-08-07 10:01:55.0 +0200
+++ nullmailer-1.13/debian/patches/series	2016-04-11 09:24:19.0 +0200
@@ -8,3 +8,4 @@
 12_allow_no_dots.diff
 13_fix_automake.diff
 14_more_manpages.diff
+15_sort_files_in_archive.diff


Bug#820603: viking: please make the build reproducible (fileordering)

2016-04-10 Thread Alexis Bienvenüe
Source: viking
Version: 1.6-1
Severity: wishlist
Tags: patch upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: fileordering
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org
Control: forwarded -1 https://github.com/viking-gps/viking/pull/13

Dear Maintainer,

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

The attached patch fixes icon headers inclusion order. Once applied,
viking can be built reproducibly in our current experimental framework.

Regards,
Alexis Bienvenüe.

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


diff -Nru viking-1.6/debian/patches/series viking-1.6/debian/patches/series
--- viking-1.6/debian/patches/series	2015-09-15 23:14:43.0 +0200
+++ viking-1.6/debian/patches/series	2016-04-10 14:10:21.0 +0200
@@ -2,3 +2,4 @@
 0003-Add-missing-lz.patch
 no_doc-dir.patch
 fix-IT_PROG_INTLTOOL-and-AM_GNU_GETTEXT-conflict.patch
+sort-icon-headers.patch
diff -Nru viking-1.6/debian/patches/sort-icon-headers.patch viking-1.6/debian/patches/sort-icon-headers.patch
--- viking-1.6/debian/patches/sort-icon-headers.patch	1970-01-01 01:00:00.0 +0100
+++ viking-1.6/debian/patches/sort-icon-headers.patch	2016-04-10 14:22:01.0 +0200
@@ -0,0 +1,17 @@
+Description: Sort icon headers
+ Sort icon headers to build src/cons/icons.c, to get reproducible build.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+Index: viking-1.6/src/icons/Makefile.am
+===
+--- viking-1.6.orig/src/icons/Makefile.am
 viking-1.6/src/icons/Makefile.am
+@@ -267,7 +267,7 @@ icons.h: $(ALL_ICONS_HEADER)
+ icons.c: $(ALL_ICONS_HEADER)
+ 	echo "/* Generated file */" > $@
+ 	echo "#include " >> $@
+-	for file in *_pixmap.h ; do echo "#include \"$$file\"" >> $@ ; done
++	for file in $(ALL_ICONS_HEADER) ; do echo "#include \"$$file\"" >> $@ ; done
+ 
+ $(BUILT_SOURCES): $(srcdir)/Makefile.am
+ 


Bug#820240: lua-ldoc: please honour SOURCE_DATE_EPOCH

2016-04-10 Thread Alexis Bienvenüe
Hi Julian.

Le 10/04/2016 09:06, Julian Wollrath a écrit :
> the patch looks fine by me. Feel free to upload a new version of
> lua-ldoc with it applied.

Thanks for your review and green light.
However, I don't have any upload right…

Regards,
Alexis.



Bug#820522: gtkspell: please make the build reproducible (environment)

2016-04-09 Thread Alexis Bienvenüe
Source: gtkspell
Version: 2.0.16-1.1
Severity: wishlist
Tags: patch
User: reproducible-bui...@lists.alioth.debian.org
Usertags: environment
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch fixes the SHELL used in the examples/Makefile to
/bin/sh instead of current one. Once applied, gtkspell can be built
reproducibly in our current experimental framework.

Regards,
Alexis Bienvenüe.

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




diff -Nru gtkspell-2.0.16/debian/changelog gtkspell-2.0.16/debian/changelog
--- gtkspell-2.0.16/debian/changelog	2014-08-30 12:09:50.0 +0200
+++ gtkspell-2.0.16/debian/changelog	2016-04-09 14:05:56.0 +0200
@@ -1,3 +1,9 @@
+gtkspell (2.0.16-1.1.0~reproducible1) unstable; urgency=medium
+
+  * Set the examples SHELL to sh, to get a reproducible build.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Sat, 09 Apr 2016 14:05:56 +0200
+
 gtkspell (2.0.16-1.1) unstable; urgency=low
 
   * Non-maintainer upload.
diff -Nru gtkspell-2.0.16/debian/patches/series gtkspell-2.0.16/debian/patches/series
--- gtkspell-2.0.16/debian/patches/series	1970-01-01 01:00:00.0 +0100
+++ gtkspell-2.0.16/debian/patches/series	2016-04-09 14:04:04.0 +0200
@@ -0,0 +1 @@
+set_examples_shell_to_sh.patch
diff -Nru gtkspell-2.0.16/debian/patches/set_examples_shell_to_sh.patch gtkspell-2.0.16/debian/patches/set_examples_shell_to_sh.patch
--- gtkspell-2.0.16/debian/patches/set_examples_shell_to_sh.patch	1970-01-01 01:00:00.0 +0100
+++ gtkspell-2.0.16/debian/patches/set_examples_shell_to_sh.patch	2016-04-09 14:05:09.0 +0200
@@ -0,0 +1,12 @@
+Description: Set examples SHELL to sh
+ Set the examples/Makefile's SHELL to /bin/sh whatever the current SHELL is
+ to get the build reproducible.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+--- gtkspell-2.0.16.orig/examples/Makefile.am
 gtkspell-2.0.16/examples/Makefile.am
+@@ -4,3 +4,4 @@ INCLUDES = -I$(top_srcdir)
+ LDADD = @GTKSPELL_LIBS@ $(top_builddir)/gtkspell/libgtkspell.la
+ simple_SOURCES = simple.c
+ advanced_SOURCES = advanced.c
++SHELL=/bin/sh


Bug#820457: recode: please make the build reproducible (timestamps)

2016-04-08 Thread Alexis Bienvenüe
Source: recode
Version: 3.6-22
Severity: wishlist
Tags: patch upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: timestamps
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch makes recode building using a recent version of
help2man (from the debian package) instead of the old one shipped with
the recode sources. This version honours the SOURCE_DATE_EPOCH
environment variable, so that the date used in the documentation is
taken from the last debian/changelog entry. Once applied, recode can be
built reproducibly in our current experimental framework.

Regards,
Alexis Bienvenüe.

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


diff -Nru recode-3.6/debian/changelog recode-3.6/debian/changelog
--- recode-3.6/debian/changelog	2015-08-26 12:07:35.0 +0200
+++ recode-3.6/debian/changelog	2016-04-08 18:12:42.0 +0200
@@ -1,3 +1,9 @@
+recode (3.6-22.0~reproducible1) unstable; urgency=medium
+
+  * Uses packaged help2man instead of old version shipped with the sources.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Fri, 08 Apr 2016 18:12:42 +0200
+
 recode (3.6-22) unstable; urgency=medium
 
   * Change doc/mdate-sh to use TZ=UTC.
diff -Nru recode-3.6/debian/control recode-3.6/debian/control
--- recode-3.6/debian/control	2013-10-12 17:48:01.0 +0200
+++ recode-3.6/debian/control	2016-04-08 17:44:02.0 +0200
@@ -3,7 +3,7 @@
 Priority: optional
 Maintainer: Santiago Vila <sanv...@debian.org>
 Standards-Version: 3.9.4
-Build-Depends: debhelper (>= 9), gettext, texinfo
+Build-Depends: debhelper (>= 9), gettext, texinfo, help2man
 
 Package: recode
 Architecture: any
diff -Nru recode-3.6/debian/patches/14-use-packaged-help2man recode-3.6/debian/patches/14-use-packaged-help2man
--- recode-3.6/debian/patches/14-use-packaged-help2man	1970-01-01 01:00:00.0 +0100
+++ recode-3.6/debian/patches/14-use-packaged-help2man	2016-04-08 17:58:00.0 +0200
@@ -0,0 +1,58 @@
+Description: Use packaged help2man
+ Use packaged help2man instead of the outdated copy included in the
+ sources. This allows reproducibility, since help2man honours
+ SOURCE_DATE_EPOCH since version 1.47.1.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+Index: recode-3.6/doc/Makefile.am
+===
+--- recode-3.6.orig/doc/Makefile.am
 recode-3.6/doc/Makefile.am
+@@ -20,7 +20,7 @@ AUTOMAKE_OPTIONS = gnits
+ info_TEXINFOS = recode.texi
+ MAKEINFO = LANG= LANGUAGE= @MAKEINFO@
+ 
+-EXTRA_DIST = libiconv.texi rfc1345.texi File-Latin1 help2man Makemore \
++EXTRA_DIST = libiconv.texi rfc1345.texi File-Latin1 Makemore \
+ tables.py
+ 
+ MOSTLYCLEANFILES = recode.ops
+Index: recode-3.6/src/Makefile.am
+===
+--- recode-3.6.orig/src/Makefile.am
 recode-3.6/src/Makefile.am
+@@ -102,7 +102,7 @@ $(srcdir)/merged.c: mergelex.py $(L_STEP
+ $(srcdir)/recode.1: recode
+ 	@if test -r $@ && test ! -w $@; then \
+ 	  echo "WARNING: Page \`$@' read only, not updated"; \
+-	elif $(PERL) $(top_srcdir)/doc/help2man --output=$@ ./recode; then \
++	elif help2man --output=$@ ./recode; then \
+ 	  echo "Page \`$@' has been updated"; \
+ 	else \
+ 	  echo "WARNING: Page \`$@' has *not* been updated."; \
+Index: recode-3.6/src/Makefile.in
+===
+--- recode-3.6.orig/src/Makefile.in
 recode-3.6/src/Makefile.in
+@@ -819,7 +819,7 @@ $(srcdir)/merged.c: mergelex.py $(L_STEP
+ $(srcdir)/recode.1: recode
+ 	@if test -r $@ && test ! -w $@; then \
+ 	  echo "WARNING: Page \`$@' read only, not updated"; \
+-	elif $(PERL) $(top_srcdir)/doc/help2man --name="converts files between character sets" --output=$@ ./recode; then \
++	elif help2man --name="converts files between character sets" --output=$@ ./recode; then \
+ 	  echo "Page \`$@' has been updated"; \
+ 	else \
+ 	  echo "WARNING: Page \`$@' has *not* been updated."; \
+Index: recode-3.6/doc/Makefile.in
+===
+--- recode-3.6.orig/doc/Makefile.in
 recode-3.6/doc/Makefile.in
+@@ -106,7 +106,7 @@ AUTOMAKE_OPTIONS = gnits
+ info_TEXINFOS = recode.texi
+ MAKEINFO = LANG= LANGUAGE= @MAKEINFO@
+ 
+-EXTRA_DIST = libiconv.texi rfc1345.texi File-Latin1 help2man Makemore tables.py
++EXTRA_DIST = libiconv.texi rfc1345.texi File-Latin1 Makemore tables.py
+ 
+ 
+ MOSTLYCLEANFILES = recode.ops
diff -Nru recode-3.6/debian/patches/series recode-3.6/debian/patches/series
--- recode-3.6/debian/patches/series	2015-08-26 01:33:14.0 +0200
+++ recode-3.6/debian/patches/series	2016-04-08 17:30:43.0 +0200
@@ -12,3 +12,4 @@
 12-src-names-c-format-string
 13-mdate-sh-use-tz-utc
 99-config-guess-config-sub
+14-use-packaged-help2man


Bug#820435: asciidoctor: please honour SOURCE_DATE_EPOCH

2016-04-08 Thread Alexis Bienvenüe
Source: asciidoctor
Version: 1.5.4-1
Severity: wishlist
Tags: patch upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: toolchain
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

While working on the “reproducible builds” effort [1], we have noticed
that several packages (like ruby-build) use asciidoctor in their
building process, resulting in timestamps in man files that break
reproducibility.

To solve this kind of issues, it would be nice to have asciidoctor
support the SOURCE_DATE_EPOCH environment variable [2].

See the attached patch for a proposed solution.

Regards,
Alexis Bienvenüe.

[1] https://wiki.debian.org/ReproducibleBuilds
[2] https://reproducible-builds.org/specs/source-date-epoch/


diff -Nru asciidoctor-1.5.4/debian/changelog asciidoctor-1.5.4/debian/changelog
--- asciidoctor-1.5.4/debian/changelog	2016-02-29 20:11:19.0 +0100
+++ asciidoctor-1.5.4/debian/changelog	2016-04-08 11:20:04.0 +0200
@@ -1,3 +1,10 @@
+asciidoctor (1.5.4-1.0~reproducible1) unstable; urgency=medium
+
+  * Honour SOURCE_DATE_EPOCH to make build of packages using ronn
+reproducible.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Fri, 08 Apr 2016 11:20:04 +0200
+
 asciidoctor (1.5.4-1) unstable; urgency=medium
 
   * Team upload
diff -Nru asciidoctor-1.5.4/debian/patches/honour_SOURCE_DATE_EPOCH.patch asciidoctor-1.5.4/debian/patches/honour_SOURCE_DATE_EPOCH.patch
--- asciidoctor-1.5.4/debian/patches/honour_SOURCE_DATE_EPOCH.patch	1970-01-01 01:00:00.0 +0100
+++ asciidoctor-1.5.4/debian/patches/honour_SOURCE_DATE_EPOCH.patch	2016-04-08 12:14:52.0 +0200
@@ -0,0 +1,40 @@
+Description: Honour the SOURCE_DATE_EPOCH environment variable
+ Honour the SOURCE_DATE_EPOCH environment variable, so that output documents'
+ timestamp is set to last debian/changelog entry when building packages that
+ use asciidoctor in their building process.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+Index: asciidoctor-1.5.4/lib/asciidoctor/document.rb
+===
+--- asciidoctor-1.5.4.orig/lib/asciidoctor/document.rb
 asciidoctor-1.5.4/lib/asciidoctor/document.rb
+@@ -401,7 +401,11 @@ class Document < AbstractBlock
+   #attrs['infile'] = attrs['docfile']
+ 
+   # dynamic intrinstic attribute values
+-  now = ::Time.now
++  if ENV['SOURCE_DATE_EPOCH'].nil?
++now = ::Time.now
++  else
++now = ::Time.at(ENV['SOURCE_DATE_EPOCH'].to_i).gmtime
++  end
+   localdate = (attrs['localdate'] ||= now.strftime('%Y-%m-%d'))
+   unless (localtime = attrs['localtime'])
+ begin
+Index: asciidoctor-1.5.4/lib/asciidoctor.rb
+===
+--- asciidoctor-1.5.4.orig/lib/asciidoctor.rb
 asciidoctor-1.5.4/lib/asciidoctor.rb
+@@ -1308,7 +1308,11 @@ module Asciidoctor
+ if ::File === input
+   # TODO cli checks if input path can be read and is file, but might want to add check to API
+   input_path = ::File.expand_path input.path
+-  input_mtime = input.mtime
++  if ENV['SOURCE_DATE_EPOCH'].nil?
++input_mtime = input.mtime
++  else
++input_mtime = ::Time.at(ENV['SOURCE_DATE_EPOCH'].to_i).gmtime
++  end
+   lines = input.readlines
+   # hold off on setting infile and indir until we get a better sense of their purpose
+   attributes['docfile'] = input_path
diff -Nru asciidoctor-1.5.4/debian/patches/series asciidoctor-1.5.4/debian/patches/series
--- asciidoctor-1.5.4/debian/patches/series	2016-02-29 19:48:47.0 +0100
+++ asciidoctor-1.5.4/debian/patches/series	2016-04-08 11:18:11.0 +0200
@@ -3,3 +3,4 @@
 skip-asciimath-test.patch
 package-version.patch
 skip-unreadable-file.patch
+honour_SOURCE_DATE_EPOCH.patch


Bug#820240: lua-ldoc: please honour SOURCE_DATE_EPOCH

2016-04-06 Thread Alexis Bienvenüe
Source: lua-ldoc
Version: 1.4.3-5
Severity: wishlist
Tags: patch upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: toolchain
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Control: forwarded -1 https://github.com/stevedonovan/LDoc/pull/233

Dear Maintainer,

While working on the “reproducible builds” effort [1], we have noticed
that some packages (like lua-posix) use LDoc in their building process,
resulting in timestamps in documentation files that break reproducibility.

To solve this kind of issues, it would be nice to have LDoc support
the SOURCE_DATE_EPOCH environment variable [2].

See the attached patch for a solution to this issue.

Regards,
Alexis Bienvenüe.

[1] https://wiki.debian.org/ReproducibleBuilds
[2] https://reproducible-builds.org/specs/source-date-epoch/

diff -Nru lua-ldoc-1.4.3/debian/changelog lua-ldoc-1.4.3/debian/changelog
--- lua-ldoc-1.4.3/debian/changelog	2015-11-01 10:17:35.0 +0100
+++ lua-ldoc-1.4.3/debian/changelog	2016-04-06 08:57:58.0 +0200
@@ -1,3 +1,9 @@
+lua-ldoc (1.4.3-5.0~reproducible1) unstable; urgency=medium
+
+  * Honour the SOURCE_DATE_EPOCH environment variable
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Wed, 06 Apr 2016 08:57:58 +0200
+
 lua-ldoc (1.4.3-5) unstable; urgency=medium
 
   * Fix header used by lua-any adding 5.1 (Closes: #802248) 
diff -Nru lua-ldoc-1.4.3/debian/patches/0005-honour-SOURCE_DATE_EPOCH.patch lua-ldoc-1.4.3/debian/patches/0005-honour-SOURCE_DATE_EPOCH.patch
--- lua-ldoc-1.4.3/debian/patches/0005-honour-SOURCE_DATE_EPOCH.patch	1970-01-01 01:00:00.0 +0100
+++ lua-ldoc-1.4.3/debian/patches/0005-honour-SOURCE_DATE_EPOCH.patch	2016-04-06 08:57:21.0 +0200
@@ -0,0 +1,26 @@
+Description: Honour the SOURCE_DATE_EPOCH environment variable
+ Honour the SOURCE_DATE_EPOCH environment variable for even simpler
+ reproducible builds.
+ See https://reproducible-builds.org/specs/source-date-epoch/
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+--- lua-ldoc-1.4.3.orig/ldoc.lua
 lua-ldoc-1.4.3/ldoc.lua
+@@ -783,10 +783,14 @@ ldoc.modules = module_list
+ ldoc.title = ldoc.title or args.title
+ ldoc.project = ldoc.project or args.project
+ ldoc.package = args.package:match '%a+' and args.package or nil
+-if args.date == 'system' then
+-ldoc.updatetime = os.date("%Y-%m-%d %H:%M:%S")
++if os.getenv("SOURCE_DATE_EPOCH") == nil then
++   if args.date == 'system' then
++  ldoc.updatetime = os.date("%Y-%m-%d %H:%M:%S")
++   else
++  ldoc.updatetime = args.date
++   end
+ else
+-ldoc.updatetime = args.date
++   ldoc.updatetime = os.date("!%Y-%m-%d %H:%M:%S",os.getenv("SOURCE_DATE_EPOCH"))
+ end
+ 
+ local html = require 'ldoc.html'
diff -Nru lua-ldoc-1.4.3/debian/patches/series lua-ldoc-1.4.3/debian/patches/series
--- lua-ldoc-1.4.3/debian/patches/series	2015-11-01 10:17:35.0 +0100
+++ lua-ldoc-1.4.3/debian/patches/series	2016-04-06 08:55:47.0 +0200
@@ -2,3 +2,4 @@
 0002-Remove-non-existing-one-1.md-from-tests-config.ld.patch
 0003-Fix-broken-template-missing-closing-bracket.patch
 0004-make-system-date-override-able-via-date.patch
+0005-honour-SOURCE_DATE_EPOCH.patch


Bug#820226: chrony: please make the build reproducible (timestamps)

2016-04-06 Thread Alexis Bienvenüe
Source: chrony
Version: 2.2.1-1
Severity: wishlist
Tags: patch
User: reproducible-bui...@lists.alioth.debian.org
Usertags: timestamps
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch uses the last changelog entry date instead of the
build date to set the ntp_era_split default parameter. Once applied,
chrony can be built reproducibly in our current experimental framework.

Regards,
Alexis Bienvenüe.

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


diff -Nru chrony-2.2.1/debian/changelog chrony-2.2.1/debian/changelog
--- chrony-2.2.1/debian/changelog	2016-04-01 14:40:35.0 +0200
+++ chrony-2.2.1/debian/changelog	2016-04-06 19:09:01.0 +0200
@@ -1,3 +1,10 @@
+chrony (2.2.1-1.0~reproducible1) unstable; urgency=medium
+
+  * Fix ntp_era_split default value from last changelog entry, to get
+reproducible build.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Wed, 06 Apr 2016 19:09:01 +0200
+
 chrony (2.2.1-1) unstable; urgency=medium
 
   * Import upstream versions 2.2 and 2.2.1:
diff -Nru chrony-2.2.1/debian/patches/02_uses_SOURCE_DATE_EPOCH_for_ntp_era_split.patch chrony-2.2.1/debian/patches/02_uses_SOURCE_DATE_EPOCH_for_ntp_era_split.patch
--- chrony-2.2.1/debian/patches/02_uses_SOURCE_DATE_EPOCH_for_ntp_era_split.patch	1970-01-01 01:00:00.0 +0100
+++ chrony-2.2.1/debian/patches/02_uses_SOURCE_DATE_EPOCH_for_ntp_era_split.patch	2016-04-06 19:08:30.0 +0200
@@ -0,0 +1,28 @@
+Description: Use SOURCE_DATE_EPOCH for ntp_era_split
+ Use SOURCE_DATE_EPOCH instead of current build epoch for ntp_era_split,
+ to get reproducible build.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+--- chrony-2.2.1.orig/configure
 chrony-2.2.1/configure
+@@ -478,11 +478,15 @@ then
+ split_seconds=$ntp_era_split
+ split_days=0
+   else
+-split_seconds=`date '+%s'`
+-if [ "x$split_seconds" = "" ]; then
+-  echo "error: could not get current time, --with-ntp-era option is needed"
+-  exit 1
+-fi
++if [ "x$SOURCE_DATE_EPOCH" = "x" ]; then
++  split_seconds=`date '+%s'`
++  if [ "x$split_seconds" = "" ]; then
++echo "error: could not get current time, --with-ntp-era option is needed"
++exit 1
++  fi
++else
++  split_seconds=$SOURCE_DATE_EPOCH
++fi  
+ split_days=$((50 * 365))
+   fi
+ 
diff -Nru chrony-2.2.1/debian/patches/series chrony-2.2.1/debian/patches/series
--- chrony-2.2.1/debian/patches/series	2016-04-01 14:40:35.0 +0200
+++ chrony-2.2.1/debian/patches/series	2016-04-06 19:07:39.0 +0200
@@ -0,0 +1 @@
+02_uses_SOURCE_DATE_EPOCH_for_ntp_era_split.patch


  1   2   >