This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Hi! A few months ago I submited a patch to allow the embedded timestamps by C/C++ macros to be set externally [2], which was already an improvement over [1]. I was told to wait until the GCC 7 stage 1 started to send this patch again. I'm quoting from the original emails: > As a reminder for the motivation behind this patch, we are working on > the reproducible builds project which aims to provide users with a way > to reproduce bit-for-bit identical binary packages from the source and > build environment. The project involves Debian as well as several other > free software projects. See <https://reproducible-builds.org/> for more > information. > In order to do this, we need to make the build processes > deterministic. As you can imagine, gcc is quite involved in producing > Debian packages. One issue we encounter in many packages that fail to > build reproducibly is the use of the __DATE__, __TIME__ C macros [3], > right now we have 442 affected packages that would need patching > (either removing the macros, or passing a known date externally). > A solution for toolchain packages that embed timestamps during the > build process has been proposed for anyone interested and it consists > of the following: The build environment can export an environment > variable called SOURCE_DATE_EPOCH with a known timestamp in Unix epoch > format (In our case, we use the last date of the package's debian > changelog). The toolchain package running during the build can check > if the exported variable is set and if so, instead of embedding the > local date/time, embed the date/time from SOURCE_DATE_EPOCH. > The proposal to use SOURCE_DATE_EPOCH has now been gathered in a more > formal specification [4], so that any project can adhere to it to > achieve reproducible builds when dealing with timestamps. > It would be very beneficial to our project (and other free software > projects working on reproducible builds) if gcc supported this > feature. I'm attaching a patch for the svn/trunk GCC repository (now GCC 7) that enables this feature: it modifies the behavior of the macros __DATE__ and __TIME__ when the environment variable SOURCE_DATE_EPOCH is exported. Documentation of the environment variable is also provided. Note: I have already gone through the copyright assignment process :) [1] https://gcc.gnu.org/ml/gcc-patches/2015-06/msg02210.html [2] https://gcc.gnu.org/ml/gcc-patches/2015-11/msg01890.html [3] https://wiki.debian.org/ReproducibleBuilds/TimestampsFromCPPMacros [4] https://reproducible-builds.org/specs/source-date-epoch/ Best regards, -- Dhole
Attachment:
gcc-SOURCE_DATE_EPOCH-patch-2016_04_17.diff.txt
Description: Text document
Attachment:
ChangeLog
Description: Text document
Attachment:
signature.asc
Description: PGP signature
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |