Bug#922168: debian-handbook: FTBFS randomly (dh-strip-nondeterminism fails to handle a PNG file)

Chris Lamb lamby at debian.org
Tue Feb 12 22:46:53 GMT 2019


tags 922168 + patch
thanks

Hi Santiago,

> > Glancing very quickly at this package, I suspect the PNG is
> > generated correctly (otherwise the PNG handler would typically not
> > be called), but then strip-nondeterminism's parallel executation is
> > choking at the hardlinks that rdfind(1) creates in debian/rules.
> > 
> > If that sounds sensible, please feel free to reassign to dh-strip-
> > nondeterminism (and add an affects to taste).
> 
> Yes, I think it makes sense. Incidentally, I'm currently using
> machines with one core and machines with two cores, but this package
> only failed to build for me on the machines having two cores.

I've got a hacky testcase locally that confirms this. Does this make
sense as a patch, perhaps?

  diff --git a/bin/dh_strip_nondeterminism b/bin/dh_strip_nondeterminism
  index 5c82b16..6f7d693 100755
  --- a/bin/dh_strip_nondeterminism
  +++ b/bin/dh_strip_nondeterminism
  @@ -45,7 +45,7 @@ things to exclude.
   
   init();
   
  -my @nondeterministic_files;
  +my (@nondeterministic_files, %seen);
   
   sub testfile {
   	return if -l $_ or -d $_; # Skip directories and symlinks always.
  @@ -57,6 +57,11 @@ sub testfile {
   		return if ($fn=~m/\Q$f\E/);
   	}
   
  +	# Deduplicate hardlinks to avoid issues under parallelism
  +	my ($dev, $inode, undef, $nlink) = stat($_);
  +	return if defined $nlink && $nlink > 1 && $seen{"$inode.$dev"};
  +	$seen{"$inode.$dev"} = 1;
  +
   	my $normalizer = File::StripNondeterminism::get_normalizer_for_file($_);
   	if ($normalizer) {
   		push @nondeterministic_files, [$fn, $normalizer];


Regards,

-- 
      ,''`.
     : :'  :     Chris Lamb
     `. `'`      lamby at debian.org 🍥 chris-lamb.co.uk
       `-



More information about the Reproducible-builds mailing list