[Buildroot] [PATCH] toolchain/wrapper: fake __DATE_ and __TIME__ for older gcc

Peter Korsgaard peter at korsgaard.com
Sun Oct 22 14:10:07 UTC 2017


>>>>> "Arnout" == Arnout Vandecappelle (Essensium/Mind) <arnout at mind.be> writes:

Hi,

 > From: "Yann E. MORIN" <yann.morin.1998 at free.fr>
 > Starting with version 7, gcc automatically recognises and enforces the
 > environment variable SOURCE_DATE_EPOCH, and fakes __DATE__ and __TIME__
 > accordingly, to produce reproducible builds (at least in regards to date
 > and time).

 > However, older gcc versions do not offer this feature.

 > So, we use our toolchain wrapper to force-feed __DATE__ and __TIME__ as
 > macros, which will take precedence over those that gcc may compute
 > itself. We compute them according to the specs:
 >     https://reproducible-builds.org/specs/source-date-epoch/
 >     https://gcc.gnu.org/onlinedocs/cpp/Standard-Predefined-Macros.html

 > Since we define macros otherwise internal to gcc, we have to tell it not
 > to warn about that. The -Wno-builtin-macro-redefined flag was introduced
 > in gcc-4.4.0. Therefore, we make BR2_REPRODUCIBLE depend on GCC >= 4.4.

 > gcc-7 will ignore SOURCE_DATE_EPOCH when __DATE__ and __TIME__ are
 > user-defined. Anyway, this is of no consequence: whether __DATE__ and
 > __TIME__ or SOURCE_DATE_EPOCH takes precedence, it would yield the
 > exact same end result since we use the same logic to compute it. Note
 > that we didn't copy the code for it from gcc so using the same logic
 > doesn't imply that we're inheriting GPL-3.0.

 > Signed-off-by: "Yann E. MORIN" <yann.morin.1998 at free.fr>
 > Cc: Jérôme Pouiller <jezz at sysmic.org>
 > Cc: Thomas Petazzoni <thomas.petazzoni at free-electrons.com>
 > Cc: Arnout Vandecappelle <arnout at mind.be>
 > Cc: Peter Korsgaard <peter at korsgaard.com>
 > [Arnout: rewrite commit message]
 > Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout at mind.be>

Committed, thanks.

-- 
Bye, Peter Korsgaard



More information about the buildroot mailing list