Re: [Reproducible-builds] dpkg_1.18.1.0~reproducible5 ftbfs

2015-08-04 Thread Guillem Jover
On Tue, 2015-08-04 at 08:42:48 -0700, Vagrant Cascadian wrote:
> On 2015-07-31, Guillem Jover wrote:
> > Right, I noticed this quite some time ago, but forgot to bring it up.
> > W/o having checked anything, it might be that whoever prepared the
> > release perhaps forgot to «autoreconf -f -i» the sources and prepared
> > it from a previous .dsc instead of a git tree?
> 
> I *think* what's happening is the reproducible builds git tree doesn't
> include tags for the version, and .dist-version isn't present, so
> ./get-version is returning an empty string (it can't get it from git or
> From .dist-version), so "autoreconf -f -i" fails... running:
> 
>   echo 1.18.1.0~reproducible5 > .dist-version
>   autoreconf -f -i
>   debuild -us -uc # or your build of choice
> 
> Seems to fix/workaround the issue.

Ah, the problem is that the releases are being made directly from
git with dpkg-buildpackage. The correct way to release dpkg is to
«make dist» and then build Debian packages from that tarball.

The detailed instructions on releasing can be found on the “How to
release“ section here:

  

although several points might not be relevant here.

Thanks,
Guillem

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

Re: [Reproducible-builds] package uploaded to our repo

2015-08-04 Thread Holger Levsen
Hi,

On Dienstag, 4. August 2015, Holger Levsen wrote:
> dpkg_1.18.1.0~reproducible6.dsc has just been uploaded to
> https://wiki.debian.org/ReproducibleBuilds/ExperimentalToolchain

and I've also managed to build this on armhf and upload these binaries too.

Vagrant's hint of adding the .dist-version file helped, but this wasn't 
enough, I also had to run autoreconf as he described, which appearantly only 
changed files in .gitignore. Anyway, that debuild than succeeded on amd64 and 
after that I've build the package on armhf too...

So, we have our basic experimental toolchain (=sid+patched dpkg) ready on 
armhf now too!

https://reproducible.debian.net/index_repositories.html nicely now shows the 4 
packages which still need to be buld for armhf, which I hope to do tomorrow...


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] package uploaded to our repo

2015-08-04 Thread Holger Levsen
dpkg_1.18.1.0~reproducible6.dsc has just been uploaded to 
https://wiki.debian.org/ReproducibleBuilds/ExperimentalToolchain

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


[Reproducible-builds] package uploaded to our repo

2015-08-04 Thread Eduard Sanou
gettext_0.19.5.1-1.0~reproducible1.dsc has just been uploaded to 
https://wiki.debian.org/ReproducibleBuilds/ExperimentalToolchain

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


[Reproducible-builds] Bug#794603: xchat: please make the build reproducible (timestamps, randomness)

2015-08-04 Thread Valentin Lorentz
Source: xchat
Version: 2.8.8-7.3
Severity: wishlist
Tags: patch
User: reproducible-builds@lists.alioth.debian.org
Usertags: timestamps randomness
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

Hi!

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

The attached patch removes extra timestamps from the build system and
strip Build ID from the produced executable. Once applied, xchat can be
built reproducibly in our current experimental framework.

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

Regards,
Valentin
diff -ru xchat-2.8.8.orig/debian/control xchat-2.8.8/debian/control
--- xchat-2.8.8.orig/debian/control	2015-08-04 18:38:25.271425177 +
+++ xchat-2.8.8/debian/control	2015-08-04 19:20:18.931512526 +
@@ -4,7 +4,7 @@
 Maintainer: Davide Puricelli (evo) 
 Uploaders: Bart Martens 
 Standards-Version: 3.8.4.0
-Build-Depends: debhelper (>= 5), bison, libssl-dev, libglib2.0-dev, libgtk2.0-dev (>= 2.0.6), libperl-dev, gettext (>= 0.10.37), libtool, zlib1g-dev, perl (>= 5.8), python-dev, tcl-dev, autotools-dev, libdbus-glib-1-dev, libgtkspell-dev, gconf2, dpkg-dev (>= 1.13.19), libsexy-dev, chrpath, imagemagick, autoconf
+Build-Depends: debhelper (>= 5), bison, libssl-dev, libglib2.0-dev, libgtk2.0-dev (>= 2.0.6), libperl-dev, gettext (>= 0.10.37), libtool, zlib1g-dev, perl (>= 5.8), python-dev, tcl-dev, autotools-dev, libdbus-glib-1-dev, libgtkspell-dev, gconf2, dpkg-dev (>= 1.13.19), libsexy-dev, chrpath, imagemagick, autoconf, dh-strip-nondeterminism
 Homepage: http://www.xchat.org/
 
 Package: xchat
diff -ru xchat-2.8.8.orig/debian/rules xchat-2.8.8/debian/rules
--- xchat-2.8.8.orig/debian/rules	2015-08-04 18:38:25.271425177 +
+++ xchat-2.8.8/debian/rules	2015-08-04 19:29:11.975531049 +
@@ -89,6 +89,7 @@
 	dh_link -pxchat
 ifeq "$(findstring nostrip,$(DEB_BUILD_OPTIONS))" ""
 	dh_strip -pxchat
+	dh_strip_nondeterminism -pxchat
 endif	
 	dh_compress -pxchat
 	dh_fixperms -pxchat
diff -ru xchat-2.8.8.orig/src/fe-gtk/about.c xchat-2.8.8/src/fe-gtk/about.c
--- xchat-2.8.8.orig/src/fe-gtk/about.c	2015-08-04 18:38:25.267425176 +
+++ xchat-2.8.8/src/fe-gtk/about.c	2015-08-04 19:28:08.0 +
@@ -55,7 +55,6 @@
 
 	(snprintf) (buf, sizeof (buf),
  "An IRC Client for UNIX.\n\n"
- "This binary was compiled on "__DATE__"\n"
  "Using GTK %d.%d.%d X %d\n"
  "Running on %s",
  gtk_major_version, gtk_minor_version, gtk_micro_version,
@@ -126,7 +125,7 @@
 #else
 "Renderer: %s\n"
 #endif
-"Compiled: "__DATE__"\n\n"
+"\n"
 "\302\251 1998-2010 Peter \305\275elezn\303\275 ",
 	_("A multiplatform IRC Client"),
 	get_cpu_str(),
diff -ru xchat-2.8.8.orig/src/fe-text/fe-text.c xchat-2.8.8/src/fe-text/fe-text.c
--- xchat-2.8.8.orig/src/fe-text/fe-text.c	2015-08-04 18:38:25.267425176 +
+++ xchat-2.8.8/src/fe-text/fe-text.c	2015-08-04 19:28:08.0 +
@@ -103,7 +103,6 @@
 "\n"
 " \017xchat \00310"PACKAGE_VERSION"\n"
 " \017Running on \00310%s \017glib \00310%d.%d.%d\n"
-" \017This binary compiled \00310"__DATE__"\017\n",
 get_cpu_str(),
 glib_major_version, glib_minor_version, glib_micro_version);
 	fe_print_text (sess, buf, 0);
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

[Reproducible-builds] Bug#794586: ocaml: Please make ocamldoc produce reproducible manpages

2015-08-04 Thread Valentin Lorentz
Source: ocaml
Version: 4.01.0-5
Severity: wishlist
Tags: patch
User: reproducible-builds@lists.alioth.debian.org
Usertags: timestamps
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

Hi!

While working on the “reproducible builds” effort [1], we have noticed
that packages using ocamldoc to write manpages could not be built
reproducibly, including ocaml itself.

The attached patch removes extra timestamps from the generated
documentation. Once applied, ocamldoc-generated manpages can be built
reproducibly in our current experimental framework.

Note: this patch itself does not make ocaml build reproducibly, I will
submit a patch for that after #794583 is fixed.

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

Regards,
Valentin
diff -u../chroot/root/ocaml-4.01.0/ocamldoc/odoc_man.ml
--- ocamldoc/odoc_man.ml	2012-10-15 19:50:56.0 +0200
+++ ../chroot/root/ocaml-4.01.0/ocamldoc/odoc_man.ml	2015-08-03 23:33:12.0 +0200
@@ -720,14 +720,13 @@
 (** Generate the man page for the given class.*)
 method generate_for_class cl =
   Odoc_info.reset_type_names () ;
-  let date = Unix.time () in
   let file = self#file_name cl.cl_name in
   try
 let chanout = self#open_out file in
 let b = new_buf () in
 bs b (".TH \""^cl.cl_name^"\" ");
 bs b !man_section ;
-bs b (" "^(Odoc_misc.string_of_date ~hour: false date)^" ");
+bs b (" source: "^Odoc_misc.current_date^" ");
 bs b "OCamldoc ";
 bs b ("\""^(match !Global.title with Some t -> t | None -> "")^"\"\n");
 
@@ -779,14 +778,13 @@
 (** Generate the man page for the given class type.*)
 method generate_for_class_type ct =
   Odoc_info.reset_type_names () ;
-  let date = Unix.time () in
   let file = self#file_name ct.clt_name in
   try
 let chanout = self#open_out file in
 let b = new_buf () in
 bs b (".TH \""^ct.clt_name^"\" ");
 bs b !man_section ;
-bs b (" "^(Odoc_misc.string_of_date ~hour: false date)^" ");
+bs b (" source: "^Odoc_misc.current_date^" ");
 bs b "OCamldoc ";
 bs b ("\""^(match !Global.title with Some t -> t | None -> "")^"\"\n");
 
@@ -836,14 +834,13 @@
 (** Generate the man file for the given module type.
@raise Failure if an error occurs.*)
 method generate_for_module_type mt =
-  let date = Unix.time () in
   let file = self#file_name mt.mt_name in
   try
 let chanout = self#open_out file in
 let b = new_buf () in
 bs b (".TH \""^mt.mt_name^"\" ");
 bs b !man_section ;
-bs b (" "^(Odoc_misc.string_of_date ~hour: false date)^" ");
+bs b (" source: "^Odoc_misc.current_date^" ");
 bs b "OCamldoc ";
 bs b ("\""^(match !Global.title with Some t -> t | None -> "")^"\"\n");
 
@@ -914,14 +911,13 @@
 (** Generate the man file for the given module.
@raise Failure if an error occurs.*)
 method generate_for_module m =
-  let date = Unix.time () in
   let file = self#file_name m.m_name in
   try
 let chanout = self#open_out file in
 let b = new_buf () in
 bs b (".TH \""^m.m_name^"\" ");
 bs b !man_section ;
-bs b (" "^(Odoc_misc.string_of_date ~hour: false date)^" ");
+bs b (" source: "^Odoc_misc.current_date^" ");
 bs b "OCamldoc ";
 bs b ("\""^(match !Global.title with Some t -> t | None -> "")^"\"\n");
 
@@ -1045,14 +1041,13 @@
   | Res_const (_,f) -> f.vc_name
  )
  in
- let date = Unix.time () in
   let file = self#file_name name in
   try
 let chanout = self#open_out file in
 let b = new_buf () in
 bs b (".TH \""^name^"\" ");
 bs b !man_section ;
-bs b (" "^(Odoc_misc.string_of_date ~hour: false date)^" ");
+bs b (" source: "^Odoc_misc.current_date^" ");
 bs b "OCamldoc ";
 bs b ("\""^(match !Global.title with Some t -> t | None -> "")^"\"\n");
 bs b ".SH NAME\n";
diff -u ocamldoc/odoc_misc.ml ../chroot/root/ocaml-4.01.0/ocamldoc/odoc_misc.ml
--- ocamldoc/odoc_misc.ml	2012-10-15 19:50:56.0 +0200
+++ ../chroot/root/ocaml-4.01.0/ocamldoc/odoc_misc.ml	2015-08-03 23:26:58.0 +0200
@@ -223,9 +223,9 @@
 None -> None
   | Some v -> Some (f v)
 
-let string_of_date ?(hour=true) d =
+let string_of_date ?(absolute=false) ?(hour=true) d =
   let add_0 s = if String.length s < 2 then "0"^s else s in
-  let t = Unix.localtime d in
+  let t = (if absolute then Unix.gmtime else Unix.localtime) d in
   (string_of_int (t.Unix.tm_year + 1900))^"-"^
   (add_0 (string_of_int (t.Unix.tm_mon + 1)))^"-"^
   (add_0 (string_of_int t.Unix.tm_mday))^
@@ -238,6 +238,14 @@
  ""
   )
 
+let current_date =
+  let time =
+try
+  float_of_string (Sys.getenv "SOURCE_DATE_EPOCH")
+with
+  Sys_error _ -> Unix.time ()
+  in string_of_date ~absolute: true ~hour: false time
+
 

[Reproducible-builds] Bug#794583: ocaml: Allow setting arbitrary RNG seed in ocamlopt

2015-08-04 Thread Valentin Lorentz
Source: ocaml
Version: 4.01.0
Severity: wishlist
User: reproducible-builds@lists.alioth.debian.org
Usertags: randomness
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

While working on the “reproducible builds” effort [1], we have noticed
that ocamlopt relies on temporary files whose names are generated
randomly and are part of the output files' symbols.

Therefore, we need a way to make these names determinist. For instance,
reading an environment variable in the main function of ocamlopt
(driver/optmain.ml) and calling “Random.seed 0” if it is set would be
perfect.
Using OCAMLPARAM (driver/compenv.ml) would work as well.

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

Regards,
Valentin



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

Re: [Reproducible-builds] dpkg_1.18.1.0~reproducible5 ftbfs

2015-08-04 Thread Vagrant Cascadian
On 2015-07-31, Guillem Jover wrote:
> On Fri, 2015-07-31 at 16:49:13 +0200, Holger Levsen wrote:
>> so yesterday I tried to build 
>> http://reproducible.alioth.debian.org/debian/dpkg_1.18.1.0~reproducible5.dsc 
>> with pbuilder on sid/armhf and that failed _exactly_ like 
>> https://reproducible.debian.net/rbuild/unstable/amd64/dpkg_1.18.1.0~reproducible5.rbuild.log
>> 
>> I then tried to build dpkg_1.18.1.dsc from sid proper and that built 
>> flawlessly on sid/armhf.
>> 
>> Thus I conclude our reproducible patches cause this, whatever this is. Yet I 
>> lack time atm to debug this, so this mail is merely a note to Guillem and a 
>> call for help to the reproducible folks.
>
> Right, I noticed this quite some time ago, but forgot to bring it up.
> W/o having checked anything, it might be that whoever prepared the
> release perhaps forgot to «autoreconf -f -i» the sources and prepared
> it from a previous .dsc instead of a git tree?

I *think* what's happening is the reproducible builds git tree doesn't
include tags for the version, and .dist-version isn't present, so
./get-version is returning an empty string (it can't get it from git or
From .dist-version), so "autoreconf -f -i" fails... running:

  echo 1.18.1.0~reproducible5 > .dist-version
  autoreconf -f -i
  debuild -us -uc # or your build of choice

Seems to fix/workaround the issue.


live well,
  vagrant


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

Re: [Reproducible-builds] ARM build machines

2015-08-04 Thread Holger Levsen
Hi,

so on https://jenkins.debian.net/view/reproducible/ you can now see 12 armhf 
related jobs, so there is a setup_pbuilder_testing, 
setup_schroot_testing_debbindiff and a maintenance job for each of the four 
armhf build hosts. IOW: remote job scheduling now works \o/

What's missing now to make use of them:

- dpkg 1.18.1.0~reproducible5 ftbfs in clean sid chroot, this needs to be 
fixed
- the scheduler needs to be taught how to schedule armhf
- the build script needs to be taught to deal with remote hosts

Stay tuned.


cheers,
Holger

P.S.: yes, in future those amd64 specific jobs should also be renamed to 
reflect that.



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