On 2023-07-31 08:29, Sergey Poznyakoff wrote:
As an afterthought, this is not necessarily so, because POSIX format
with all extended headers removed, is indistinguishable from ustar.
Right, and if Piotr can remote the subsecond components from his
timestamps, he'll be generating posix-format tarballs that are also
ustar format (and gnu format) and will not differ from his old tarballs
at all.
This is why I suggested a new option to remove the subsecond components.
I ran into a similar problem when generating the TZDB tarballs. These
tarballs need to be portable to a wide variety of machines and so don't
use any POSIX features: they're ustar format. The Makefile[1] has a
set-timestamp.out rule that use a complex set of 'touch' commands to
make sure all source files have their time-of-commit as their mtime,
that all timestamps are a multiple of 1 second, that all files are at
least 1 second newer than the files they depend on. This guarantees that
all timestamps are reproducible. It would be nice if GNU Tar had an
option to do all that, so that the Makefile didn't have to run 'touch'
all the time. (I realize that I'm asking for a lot in the case of access
to Git timestamps and to dependencies, but this is what TZDB needs.)
[1]: https://github.com/eggert/tz/blob/main/Makefile