Skip to content

storage.Directory.export_to_tar: default mtime=utils._magic_timestamp

Change the default value of mtime when doing export_to_tar() from '0' to _magic_timestamp. This avoids problems in other software, which assume that an mtime of '0' means the file does not exist.

There is more than one example where files with an mtime of zero are treated as non-existant by other software. e.g. ninja and Template Toolkit.

The OSTree project also express an intention to move from an mtime of 0 to an mtime of 1:

For this reason, OSTree acts as though all timestamps are set to time_t 0, so that comparisons will be considered up-to-date. Note that for a few releases, OSTree used 1 to fix warnings such as GNU Tar emitting "implausibly old time stamp" with 0; however, until we have a mechanism to transition cleanly to 1, for compatibilty OSTree is reverted to use zero again.

From the comments on export_to_tar(), the motivation for having an mtime of 0 was to have reproducible results, rather than it specifically being the value 0.

Additionally, the reproducible builds project has a page on archives; it mentions the benefits of setting all the files to have the same mtime, or clamping the mtime. It makes no mention of a motivation for the mtime to be specifically 0.

Fixes #914 (closed)

Edited by Angelos Evripiotis

Merge request reports

Loading