[Reproducible-builds] GSoC 2015 Week 11: Move forward reproducible builds

2015-08-07 Thread Dhole
Hi,

This week I have updated my patch for gettext to target the new version
uploaded to Debian unstable (0.19.5.1-1).
I pushed the updated patch to our git repo:
https://anonscm.debian.org/cgit/reproducible/gettext.git/commit/?h=pu/reproducible_buildsid=b6e972eab1f04f3fbd368433b496f1f4a6b372a3

I have also uploaded the new build to our custom APT repository, and
attached the patch to the open bug:
https://bugs.debian.org/792687

I have written a patch for the qthelpgenerator tool from qt4-x11 to
honour SOURCE_DATE_EPOCH when embedding timestamps in the generated qch
files (see issue timestamps_in_qch [1]). The tool qthelpgenerator embeds
timestamps in different places, so in order to find a general solution I
added the method reproducibleDateTime in the class QDateTime which
returns a deterministic date honouring SOURCE_DATE_EPOCH in case the
variable is set. Then I replaced the instances of
QDateTime::currentDateTime() with QDateTime::reproducibleDateTime()
where needed.
I have pushed the patch to our git repo:
https://anonscm.debian.org/cgit/reproducible/qt4-x11.git/commit/?h=pu/reproducible_buildsid=ee300f6185ce82eb932dbe1b2dca2113b88afb56

I have also uploaded the build to our custom APT repository, and opened
a bug with the patch in Debian:
https://bugs.debian.org/794681

And I have also updated the wiki accordingly.

After patching qt4-x11, 3 packages became reproducible in my machine:
- ktikz
- qmf
- linkchecker

qmf didn't become reproducible in Jenkins: there is a weird issue with
having different files in build 1 and 2 (apparently files are missing in
both builds). This may be caused by parallelism issues and needs further
investigation.

There are still 12 packages that where tagged with timestamps_in_qch
that didn't become reproducible. They are affected by randomness_in_qdoc
[2]. Also some of them show variations in qch files (it seems to be a
history of SQL commands that differ between builds).

I have fixed some individual packages without notes:

Affected by timestamps in zip metadata (timestamps_in_zip issue)
- foxyproxy
https://bugs.debian.org/794779
- xul-ext-monkeysphere
https://bugs.debian.org/794781

Embedding of dates:
- freeipmi
https://bugs.debian.org/794792
- doc-base
https://bugs.debian.org/794793
- debiandoc-sgml-doc
https://bugs.debian.org/794795

For next week I'll probably look at the randomness_in_qdoc [2] issue.


 [1]
https://reproducible.debian.net/issues/unstable/timestamps_in_qch_issue.html
 [2]
https://reproducible.debian.net/issues/unstable/randomness_in_qdoc_issue.html

Best regards,
-- 
Dhole



signature.asc
Description: OpenPGP digital signature
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

[Reproducible-builds] Bug#794888: debbindiff: WARNING Unknown squashfs entry: create_inode: could not create character device /tmp/.../dev/console, because you're not superuser

2015-08-07 Thread Holger Levsen
package: debbindiff
version: 53

Hi,

filing a bug as suggested on irc.

https://jenkins.debian.net/view/reproducible/job/reproducible_openwrt/53/consoleFull
 showed these lines at the end:

/srv/reproducible-results/tmp.EAwfyuKo8f/b2/ar71xx 
/srv/reproducible-results/tmp.EAwfyuKo8f/b1/ar71xx
/srv/reproducible-results/tmp.EAwfyuKo8f/b1/ar71xx
/srv/reproducible-results/tmp.EAwfyuKo8f/b2/ramips 
/srv/reproducible-results/tmp.EAwfyuKo8f/b1/ramips
/srv/reproducible-results/tmp.EAwfyuKo8f/b1/ramips
 WARNING Unknown squashfs entry: 
 WARNING Unknown squashfs entry: 
create_inode: could not create character device 
/tmp/tmploEVFzdebbindiff/dev/console, because you're not superuser!
create_inode: could not create character device 
/tmp/tmpXGtk0Mdebbindiff/dev/console, because you're not superuser!
Fri  7 Aug 15:38:47 UTC 2015 - debbindiff 28 found issues, please investigate 
ramips/openwrt-ramips-rt288x-root.squashfs
Fri  7 Aug 15:38:51 UTC 2015 - debbindiff 28 found issues, please investigate 
ramips/openwrt-ramips-rt288x-rt-n15-squashfs-sysupgrade.bin
Fri  7 Aug 15:38:54 UTC 2015 - debbindiff 28 found issues, please investigate 
ramips/openwrt-ramips-rt288x-uImage.bin
Fri  7 Aug 15:38:57 UTC 2015 - debbindiff 28 found issues, please investigate 
ramips/openwrt-ramips-rt288x-vmlinux.bin
/srv/reproducible-results/tmp.EAwfyuKo8f/b2/x86 
/srv/reproducible-results/tmp.EAwfyuKo8f/b1/x86
/srv/reproducible-results/tmp.EAwfyuKo8f/b1/x86
/srv/reproducible-results/tmp.EAwfyuKo8f/b2/ar71xx 
/srv/reproducible-results/tmp.EAwfyuKo8f/b1/ar71xx
/srv/reproducible-results/tmp.EAwfyuKo8f/b1/ar71xx

This reminds of #789003 but is not quite the same.


cheers,
Holger


signature.asc
Description: This is a digitally signed message part.
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

[Reproducible-builds] Bug#794892: autogen: please make the build reproducible (cpu, locale, timestamps)

2015-08-07 Thread Valentin Lorentz
Source: autogen
Version: 1:5.18.6~pre3-3
Severity: wishlist
Tags: patch
User: reproducible-builds@lists.alioth.debian.org
Usertags: cpu locale timestamps
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

Hi!

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

The attached patch fixes the following issues:
* run time of ./configure affects a preprocessor constant
* locale-dependant sort
* timezone-dependant date

Once applied, and after pdftex is fixed [2], autogen will be buildable
reproducibly in our current experimental framework.

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

Regards,
Valentin
diff -ru autogen-5.18.6~pre3.orig/autoopts/tpl/agman-cmd.tpl autogen-5.18.6~pre3/autoopts/tpl/agman-cmd.tpl
--- autogen-5.18.6~pre3.orig/autoopts/tpl/agman-cmd.tpl	2015-08-05 09:18:53.539284309 +
+++ autogen-5.18.6~pre3/autoopts/tpl/agman-cmd.tpl	2015-08-07 18:05:30.0 +
@@ -33,7 +33,7 @@
 (define head-line (lambda()
 (sprintf .TH %s %s \%s\ \%s\ \%s\\n.n
 (get prog-name) man-sect
-(shell date '+%d %b %Y') package-text section-name) ))
+(shell LC_ALL=C date -u '+%d %b %Y' -d @$SOURCE_DATE_EPOCH ) package-text section-name) ))
 
 (define man-page #t)
 (out-push-new)  :+][+:
diff -ru autogen-5.18.6~pre3.orig/autoopts/tpl/agman-file.tpl autogen-5.18.6~pre3/autoopts/tpl/agman-file.tpl
--- autogen-5.18.6~pre3.orig/autoopts/tpl/agman-file.tpl	2015-08-05 09:18:53.539284309 +
+++ autogen-5.18.6~pre3/autoopts/tpl/agman-file.tpl	2015-08-07 18:05:30.0 +
@@ -31,7 +31,7 @@
 (define head-line (lambda()
 (sprintf .TH %s %s \%s\ \%s\ \%s\\n.n
 (get prog-name) man-sect
-(shell date '+%d %b %Y') package-text section-name) ))
+(shell LC_ALL=C date -u '+%d %b %Y' -d @$SOURCE_DATE_EPOCH ) package-text section-name) ))
 
 (define man-page #t)
 
diff -ru autogen-5.18.6~pre3.orig/configure.ac autogen-5.18.6~pre3/configure.ac
--- autogen-5.18.6~pre3.orig/configure.ac	2015-08-05 09:18:53.555284310 +
+++ autogen-5.18.6~pre3/configure.ac	2015-08-07 16:34:39.0 +
@@ -33,7 +33,6 @@
 AC_LIBTOOL_WIN32_DLLm4_define(AC_PROVIDE_AC_LIBTOOL_WIN32_DLL)
 AC_PROG_LIBTOOL
 ifdef([AC_REVISION],AC_REVISION($Revision: 4.34 $),)dnl
-[config_start_time=`date +%s 2/dev/null`]
 # --
 # Substitute VERSION vars here, so that they can be used by the Makefile
 # --
@@ -178,17 +177,11 @@
 fi
 M4_SRC=`cd $srcdir/config ; echo [a-z]*.m4`
 ENABLE_STATIC=${enable_static}
-config_end_time=`date +%s 2/dev/null`
-time_delta=`expr ${config_end_time} - ${config_start_time} 2/dev/null`
 
-if test -z ${time_delta}
-then time_delta=10
-elif test ${time_delta} -lt 5
-then time_delta=5 ; fi
-
-AG_TIMEOUT=${time_delta}
+ag_timeout=10
+AG_TIMEOUT=${ag_timeout}
 ]
-AC_DEFINE_UNQUOTED(AG_DEFAULT_TIMEOUT, ${time_delta},
+AC_DEFINE_UNQUOTED(AG_DEFAULT_TIMEOUT, ${ag_timeout},
[define to suitable timeout limit for shell command])
 AC_SUBST(M4_SRC)
 AC_SUBST(AGnam)
diff -ru autogen-5.18.6~pre3.orig/debian/rules autogen-5.18.6~pre3/debian/rules
--- autogen-5.18.6~pre3.orig/debian/rules	2015-08-05 09:18:53.527284309 +
+++ autogen-5.18.6~pre3/debian/rules	2015-08-07 18:14:15.654037956 +
@@ -3,8 +3,10 @@
 export DEB_LDFLAGS_MAINT_APPEND := -Wl,--as-needed
 export DEB_CFLAGS_MAINT_APPEND := -Wall -Wno-format-contains-nul
 # Used by 10_libopts_tarball_perms.diff
+export LC_COLLATE=C
+export LC_ALL=C
 export BUILD_DATE := $(shell dpkg-parsechangelog --show-field Date)
-DATECHLOG := $(shell date -d '$(BUILD_DATE)' +%Y-%m-%d)
+DATECHLOG := $(shell date -u -d '$(BUILD_DATE)' +%Y-%m-%d)
 
 override_dh_auto_configure:
 	dh_auto_configure --verbose -- \
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

Re: [Reproducible-builds] Bug#794795: debiandoc-sgml-doc: please make the build reproducible

2015-08-07 Thread Dhole
On 08/07/2015 03:39 PM, Osamu Aoki wrote:
 I noticed many people are fixing this issue in this way.  That may fix
 some itch for small group of highly technically minded people but does
 disservice to many end-users.
 
 We should better as DD than the one proposed.
 -  versiondate/version
 
 That's very rough approach.
 
 Let's promote to use the last changelog entry date for this kind of
 BUILD_DATE for reproducible build.
 
 I think something like the following to set it:
 
 # short date of this Debian package (debian/changelog)
 BUILD_DATE ?= $(shell { date +'%Y-%m-%d' -d`dpkg-parsechangelog -SDate` || 
 date +'(No changelog) %Y-%m-%d' ; })
 
 Patch should be more like
 
 -  versiondate/version
 +  versionbuilddate;/version
 
 Then set the date via entity.
 
 Osamu
 

Hi Osamu,

I understand your concern about keeping the date on the generated docs.
As per your suggested solution: replacing the timestamp with the date
from latests debian/changelog entry is something we are usually doing in
the reproducible builds team to fix issues like this one.

In this case, I didn't find a nice way to pass an external variable to
the sgml files. That's why my first approach was to plainly remove the
timestamp (It happens in many packages that the timestamp is not really
needed). But I understand that in debiandoc-sgml-doc the date should be
kept. I've searched through the documentation of debiandoc, but I didn't
find how to pass external values. How do you define an entity
(builddate in your example) so that it can be filled externally?

I can provide a patch like that once I learn how to pass external
variables to the docs :)

Thanks!
-- 
Dhole



signature.asc
Description: OpenPGP digital signature
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds