Communicating about the change in behaviour for ar
Hi,
I was trying to import the new version of make into unstable, and
I discovered that t/10 tests about the archive related part of makes
test suite failed. The reason was a change in the behaviour of ar,
which is now configured with --enable-deterministic-archives. When
adding files and the archive index use zero for UIDs, GIDs, timestamps,
and use consistent file modes for all files. When this option is used,
if ar is used with identical options and identical input files,
multiple runs will create identical output files regardless of the
input files' owners, groups, file modes, or modification times. This
seems like good news for reproducible builds.
Unfortunately, when using makes libxx(*.a) syntax for creating
archives, make needs the timestamp of the file in order to decide to
update it or not. With the current deterministic behavior of ar, the
timestamp is always 0. This is behaviour that is not backwards
compatible (as can be seen in the bug report #798804 and
#798913). Some operations, instead of being no-ops, now rebuild theg/Lunar
archive.
T think the change, because of the benefits of the
reproducible builds, are a good thing, but I also think that they are
not visible to the general user base (not all the users of ar and make
are debian developers, and the release is not the only thing built
using ar and make). My recommendations is a NEWS file entry for
binutils and make; and a mention in the release announcement for
reproducible builds.
I have uploaded a version of make the defaults to adding U to the
ARFLAGS, but, on research and reflection, I would be open to reverting
that and adding a NEWS entry.
Manoj
--
Anything worth doing is worth overdoing.
Manoj Srivastava <srivasta@debian.org> <http://www.debian.org/~srivasta/>
4096R/C5779A1C E37E 5EC5 2A01 DA25 AD20 05B6 CF48 9438 C577 9A1C
Reply to: