December 12, 2019
https://issues.dlang.org/show_bug.cgi?id=20444

          Issue ID: 20444
           Summary: Make __DATE__ in dlang reproducible using
                    SOURCE_DATE_EPOCH
           Product: D
           Version: D2
          Hardware: x86_64
                OS: Linux
            Status: NEW
          Severity: enhancement
          Priority: P1
         Component: dmd
          Assignee: nobody@puremagic.com
          Reporter: jelle@vdwaa.nl

The reproducible builds project is working on achieving bit for bit identical builds on for example two different systems. To prove that the same source can be used on two different machines to create an identical build. Timestamps lead to unreproducibility by use of __DATE__ or __TIME__, other compilers such as GCC support SOURCE_DATE_EPOCH which makes the build reproducible by using that epoch timestamp value as value for the __DATE__.

It would be nice to see the D compiler also support SOURCE_DATE_EPOCH so that __DATE__ and __TIME__ does not need to be removed from source code to make builds reproducible.

More about reproducible builds can be found here: https://reproducible-builds.org/ and about SOURCE_DATE_EPOCH https://reproducible-builds.org/docs/source-date-epoch/

GCC references: https://gcc.gnu.org/onlinedocs/cpp/Environment-Variables.html https://wiki.debian.org/ReproducibleBuilds/TimestampsFromCPPMacros

--