Subject: Perl's .pod files include timestamps, making Perl package builds non-deterministic
From: [email-masked] (Ludovic Courtès)
To: [email-masked]
Date: Thu, 16 Jun 2016 13:33:46 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Here’s an example:

--8<---------------cut here---------------start------------->8---
$ diff -ru /gnu/store/fmib129w05hbwbikd7x48s37hvr8nrdf-perl-io-stringy-2.110 /gnu/store/fmib129w05hbwbikd7x48s37hvr8nrdf-perl-io-stringy-2.110-check
diff -ru /gnu/store/fmib129w05hbwbikd7x48s37hvr8nrdf-perl-io-stringy-2.110/lib/perl5/5.22.1/x86_64-linux/perllocal.pod /gnu/store/fmib129w05hbwbikd7x48s37hvr8nrdf-perl-io-stringy-2.110-check/lib/perl5/5.22.1/x86_64-linux/perllocal.pod
--- /gnu/store/fmib129w05hbwbikd7x48s37hvr8nrdf-perl-io-stringy-2.110/lib/perl5/5.22.1/x86_64-linux/perllocal.pod	1970-01-01 01:00:01.000000000 +0100
+++ /gnu/store/fmib129w05hbwbikd7x48s37hvr8nrdf-perl-io-stringy-2.110-check/lib/perl5/5.22.1/x86_64-linux/perllocal.pod	1970-01-01 01:00:01.000000000 +0100
@@ -1,4 +1,4 @@
-=head2 Thu Jun 16 11:29:36 2016: C<Module> L<IO::Stringy|IO::Stringy>
+=head2 Thu Jun 16 11:29:34 2016: C<Module> L<IO::Stringy|IO::Stringy>
 
 =over 4
 --8<---------------cut here---------------end--------------->8---

The problem is described in <git://git.debian.org/git/reproducible/notes.git>:

--8<---------------cut here---------------start------------->8---
timestamps_in_documentation_generated_by_podman:
  description: |
    The module Pod::Man includes timestamps in its embedded manpages:
    http://sources.debian.net/src/perl/latest/cpan/podlators/lib/Pod/Man.pm/?hl=1700#L977
    They should be based on the mtime of the original file.
  url: https://wiki.debian.org/ReproducibleBuilds/TimestampsInManpagesGeneratedByPodMan
  deterministic: True
--8<---------------cut here---------------end--------------->8---

Ludo’.