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! We are working in Debian âand I know other free software projects careâ in providing our users with a way to reproduce bit-for-bit identical binary packages from the source and build environment. See <https://wiki.debian.org/ReproducibleBuilds/About> for some rationale and further explanations. 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 [1], right now we have 456 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. 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 gcc-5.1.0 that enables this feature: it modifies the behavior of the macros __DATE__ and __TIME__ when SOURCE_DATE_EPOCH is exported. What do you think? Any suggestions or other ideas that help getting reproducible builds are welcomed. I'm willing to extend the documentation if the patch feels appropriate. Thanks for your attention! [1] https://wiki.debian.org/ReproducibleBuilds/TimestampsFromCPPMacros Best regards, Dhole
Attachment:
set_DATE_TIME_externally.diff.txt
Description: Text document
Attachment:
signature.asc
Description: OpenPGP digital signature
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |