[Reproducible-builds] [Help-tar] [PATCH] Add --clamp-mtime option

Jérémy Bobbio lunar at debian.org
Thu Jun 4 15:59:11 UTC 2015


Hi!

Paul, Thanks for your quick reply. :)

Paul Eggert:
> An option along these lines sounds like it would be useful, thanks.  But I
> have some confusions and/or problems with the suggestion.
> 
> First, the patch doesn't alter the documentation, which is typically the
> hardest part of any change like this.  The documentation should give an
> example of how the new option would be useful.

Indeed. I have only changed `--help` output so far:

    --clamp-mtime     only set time when the file is more recent
                      than what was given with --mtime

If you feel it's a worthwile addition to `tar`, I shall update the rest
of the documentation.

> Second, I'm having trouble seeing how to use the option (and this is
> probably because of the first item...).  How does the maintainer keep track
> of a clamped mtime?  Isn't that a hassle to maintain?  Can't 'tar' do this
> for you, instead of your having to do it?

I am not sure who is the “maintainer” you are referring to.

To give a concrete example, to get reproducible mtimes in a tar file,
you can currently do the following:

    BUILD_DATE="Mon, 01 Jun 2015 18:11:50 +0200"

    tar -cf archive.tar --mtime="$BUILD_DATE" "$DIR"

You can get the same result by doing:

    find "$DIR" -print0 | xargs -0r touch --no-dereference --date="$BUILD_DATE"
    tar -cf archive.tar "$DIR"

But this makes every timestamps equal. Instead, to keep some
information about the original files, we currently do:

    find "$DIR" -newermt "$BUILD_DATE' -print0 | \
        xargs -0r touch --no-dereference --date="$BUILD_DATE"
    tar -cf archive.tar "$DIR"

And with the `--clamp-mtime` option, we could replace the last lines by:

    tar -cf archive.tar --mtime="$BUILD_DATE" --clamp-mtime "$DIR"

Bonus: actual file metadata are not altered.

(This leaves aside other issues I have previously mentioned, focusing
only on timestamps. This would already help us tackle the issue of
the mtimes of the tarballs inside .deb).

In the context of Debian packages, we can set BUILD_DATE to the value of
`dpkg-parsechangelog -S Date`. So no further changes would be required.

-- 
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/20150604/5a4e5a63/attachment.sig>


More information about the Reproducible-builds mailing list