[rb-general] Source code timestamps
HW42
hw42 at ipsumj.de
Fri Dec 2 19:54:00 CET 2016
Ian Jackson:
> Are the timestamps of source files part of the inputs for a
> reproducible build ?
I think the general answer is: it depends ;P
For example for Debian currently the answer is clearly yes. The source
package is considered "the source" and it is expected that it is
extracted in a way that the contained file timestamps are retained.
There are a number of things which rely on this behavior AFAIK. (If this
is desirable is another question)
> Most of the practical reproducibility checking systems I am aware of
> start by unpacking a tarball, containing (at least most of) the
> source. Many build systems then transfer the timestamps of files
> which are to be installed unmodified into the staging area. The
> resulting timestamps are then typically bundled up into the binary
> package.
>
> The effect of this is that timestamps from that source tarball are
> encoded in the output binary package.
>
> But source code is not transmitted only through tarballs. Nowadays
> source code is transmitted via version control systems, much of the
> time. Version control systems do manage timestamps, of course, but
> often it is not possible to reliably recompute the timestamps of a
> tarball, given only the data in the version control system.
>
> Also, build systems depend on timestamps to operate correctly. I
> recently discovered that some packages in Debian do not build if the
> source timestamps of a freshly extracted source package are
> manipulated in reasonble (but unexpected) ways.
>
> Do we have a way through this swamp ?
I think that a build should not depend on file timestamps and other
similar metadata as far as reasonable possible [0]. I raised similar
concerns when discussing timestamp clamping in [1]. Something like git's
approach (only path and and u+x bit for normal files) seems reasonable.
Realistically we probably need something like "don't set timestamps
earlier than the extraction date" for Make like build systems.
I think there is no consensus about this. For example dpkg (AFAIK)
intentionally clamps timestamps when creating .debs (instead of setting
it to the last ChangeLog date or dropping them completely).
[0]: A file belonging to the wrong user or changing the timestamps
during a build is for example unreasonable.
[1]: http://lists.reproducible-builds.org/pipermail/rb-general/2016-November/000111.html
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 854 bytes
Desc: OpenPGP digital signature
URL: <http://lists.reproducible-builds.org/pipermail/rb-general/attachments/20161202/fa560987/attachment.sig>
More information about the rb-general
mailing list