Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

update on reproducible builds



Hello,

Since yesterday the releng build server has been updated to run
"build.sh -P", which sets MKREPRO and MKREPRO_TIMESTAMP automatically.
For those not familiar with those options, the first variable
arranges things so programs don't contain build-specific dates/times
etc.; the second variable sets the times of all built artifacts
to that timestamp. This means that every file in that is the result
of that build has that exact timestamp.

This timestamp is determined in the build system as the timestamp
of the latest file committed in the source tree. To achieve this,
a program is ran "cvslatest" that scans all the CVS/Entries files
to find the latest timestamp.

While this works well for freshly checked-out trees, this did not
work until now for updated trees. This is because "cvs update"
updates files not to the original repository timestamp, but to the
timestamp of the updated file.

This is done so that when someone runs "cvs update" on a tree, the
updated files have the newest timestamp in the system, so that
previously built artifacts are considered stale by "make".

I have changed the CVS server on cvs.netbsd.org, not to do this
anymore and always provide the timestamps to the client, which
means that even "cvs update" now sets the time for updated files.
I am planning to provide a flag on the client side to emulate the
previous behavior if people want it.

The upshot of all this is that we are very close to having multiple
builds of the same source trees on different hosts and different
source paths to be producing completely identical results.

Best,

christos


Home | Main Index | Thread Index | Old Index