Package: dh-buildinfo Version: 0.9+nmu1 Severity: wishlist Tags: patch Hi!
It would really help the “reproducible efforts” [1] if dh-buildinfo would produce a stable output each time it is called. The attached patch do this by: * calling gzip with the `-n` flag in order to prevent it to store a timestamp; * sorting the package lists by name. The later might not be the nicest code, I don't really know Perl. [1] http://wiki.debian.org/ReproducibleBuilds Thanks! -- Lunar .''`. lu...@debian.org : :Ⓐ : # apt-get install anarchism `. `'` `-
diff -Nru dh-buildinfo-0.9+nmu1/debian/changelog dh-buildinfo-0.9+nmu2/debian/changelog --- dh-buildinfo-0.9+nmu1/debian/changelog 2012-05-13 12:22:38.000000000 +0200 +++ dh-buildinfo-0.9+nmu2/debian/changelog 2013-09-08 23:22:26.000000000 +0200 @@ -1,3 +1,10 @@ +dh-buildinfo (0.9+nmu2) UNRELEASED; urgency=low + + * Do not record timestamps when compressing buildinfo file. + * Output packages sorted by name. + + -- Jérémy Bobbio <lu...@debian.org> Sun, 08 Sep 2013 20:59:23 +0000 + dh-buildinfo (0.9+nmu1) unstable; urgency=low * Non-maintainer upload. diff -Nru dh-buildinfo-0.9+nmu1/dh_buildinfo dh-buildinfo-0.9+nmu2/dh_buildinfo --- dh-buildinfo-0.9+nmu1/dh_buildinfo 2012-05-13 11:53:10.000000000 +0200 +++ dh-buildinfo-0.9+nmu2/dh_buildinfo 2013-09-08 23:28:36.000000000 +0200 @@ -161,12 +161,14 @@ while (shift @essentials ne '') { } ; + @essentials = sort @essentials; # get output in the same format as build-essential and explicit build-deps #@essentials = BuildDeps::depends(join (', ', @essentials), @status); # closure my @essentialsclosure = deps_closure(\@essentials, \%depends, $excludes); + @essentialsclosure = sort @essentialsclosure; add_to_closure(\@essentialsclosure, $excludes); # record @@ -201,9 +203,11 @@ # have the expression parsed my @buildessentials = BuildDeps::depends($bestring, @status); + @buildessentials = sort @buildessentials; # closure my @buildessentialsclosure = deps_closure(\@buildessentials, \%depends, $excludes); + @buildessentialsclosure = sort @buildessentialsclosure; add_to_closure (\@buildessentialsclosure, $excludes); # record @@ -222,16 +226,18 @@ my %fields = BuildDeps::parse_control ('debian/control'); if (defined $fields{'Build-Depends-Indep'}) { @builddepsindep = BuildDeps::depends($fields{'Build-Depends-Indep'}, @status); + @builddepsindep = sort @builddepsindep; } # closure my @builddepsindepclosure = deps_closure(\@builddepsindep, \%depends, $excludes); + @builddepsindepclosure = sort @builddepsindepclosure; add_to_closure (\@builddepsindepclosure, $excludes); # record $buildinfo .= "\n\n Declared Arch-indep Build-Dependencies:\n\n" . - pkgformat (\@builddepsindep, 0, @status) . + pkgformat (@builddepsindep, 0, @status) . "\n\n Arch-indep Build-Dependencies closure:\n\n" . pkgformat (\@builddepsindepclosure, 1, @status); @@ -244,10 +250,12 @@ %fields = BuildDeps::parse_control ('debian/control'); if (defined $fields{'Build-Depends'}) { @builddeps = BuildDeps::depends($fields{'Build-Depends'}, @status); + @builddeps = sort @builddeps; } # closure my @builddepsclosure = deps_closure(\@builddeps, \%depends, $excludes); + @builddepsclosure = sort @builddepsclosure; #add_to_closure (\@builddepsclosure, $excludes); # record @@ -265,7 +273,7 @@ } sub install_buildinfo { - complex_doit("gzip -9f debian/buildinfo >debian/buildinfo.gz"); + complex_doit("gzip -9nf debian/buildinfo >debian/buildinfo.gz"); foreach my $package (@{$dh{DOPACKAGES}}) { my $tmp=tmpdir($package); my $arch=package_arch($package);
signature.asc
Description: Digital signature