[Reproducible-builds] Bug#774422: perl: please make perl builds reproducible

Jérémy Bobbio lunar at debian.org
Fri Jan 9 20:05:28 UTC 2015


Niko Tyni:
> > Subject: [PATCH] Fix mtimes before building binary packages
> > 
> > To enable perl to build reproducibly, mtimes of any files created
> > after the date of the latest debian/changelog entry will be changed to
> > that date.
> 
> Is this because of the date header in manpages? Setting the POD_MAN_DATE
> environment variable could/should suffice for that, I think. See
> debian/patches/fixes/pod_man_reproducible_date.diff

This is needed to have reproducible mtimes in data.tar and control.tar.
This is done right before calling dpkg-source.

> > Subject: [PATCH] Stop recording build date and time
> > 
> > In order to make the package build reproducibly, we remove the
> > recording of the build date and time. This was already optional
> > in case the __DATE__ C pre-processor macro was not available.
> 
> I expect this needs to be made configurable for upstream to accept
> it. Also, it might be safer to replace __DATE__ and __TIME__ with
> some placeholders rather than dropping them, at least until this is
> upstreamed. There might well be some crazy things parsing 'perl -V'
> output or something like that which could choke if the lines are left
> out altogether.

I went ahead with removing the values because there were already
#ifdefs. But maybe the value of cf_time should be passed through `-D` or
something similar. I'm not sure what the best way is.

> > Subject: [PATCH] Create libperl.a using deterministic mode
> > 
> > In order to make Perl builds reproducible, create libperl.a using ar
> > in deterministic mode.
> 
> This patch was duplicated in your mail: first
> 
> > -	$(AR) rcu $(LIBPERL) $(obj) $(DYNALOADER)
> > +	$(AR) Drcu $(LIBPERL) $(obj) $(DYNALOADER)
> 
> and later
> 
> > -	$(AR) rcu $(LIBPERL) $(obj) $(DYNALOADER)
> > +	$(AR) Drc $(LIBPERL) $(obj) $(DYNALOADER)

Oops. The later is the one to pick. 'D' is incompatible with 'u'.

> > Subject: [PATCH] Set mtime of patchlevel.h to highest mtime of Debian patches
> > 
> > $patchlevel_date in perlbug is determined by looking at patchlevel.h mtime.
> > In order to make Perl builds reproducible, we thus set this value to
> > the highest mtime of all the Debian patches.
> > ---
> >  debian/gen-patchlevel | 10 ++++++++++
> 
> Not sure the 'touch' part belongs in gen-patchlevel, which currently
> just prints to STDOUT. But I can see it would be nice to pick up the
> mtime while reading the patches anyway. I wonder if we could/should
> use the changelog date instead, though. The whole thing of writing
> $patchlevel_date into perlbug to see how old this perl is feels weird...

I believe this is a matter of taste. :)

Thanks for having a look,
-- 
Lunar                                .''`. 
lunar at debian.org                    : :Ⓐ  :  # apt-get install anarchism
                                    `. `'` 
                                      `-   
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.alioth.debian.org/pipermail/reproducible-builds/attachments/20150109/96b7c6e3/attachment.sig>


More information about the Reproducible-builds mailing list