]> git.wh0rd.org Git - elf2flt.git/commit
elf2flt.c: add support for SOURCE_DATE_EPOCH
authorThomas Petazzoni <thomas.petazzoni@bootlin.com>
Fri, 27 Dec 2019 15:40:42 +0000 (16:40 +0100)
committerMike Frysinger <vapier@gmail.com>
Sun, 29 Dec 2019 14:12:08 +0000 (19:57 +0545)
commit453398f917d167f8c308c8f997270c48ae8f8b12
tree887d949b3402df964f365247dc9da4f431cd9a55
parent1c9b454336eaf38f7d037917a3120fae04193fbe
elf2flt.c: add support for SOURCE_DATE_EPOCH

The bFLT header has a "build_date" field which contains the date/time
at which the bFLT file was created. Unfortunately, this breaks
reproducible builds as two identical builds done at different times
will produce different results.

For example, on a bFLT binary, diffoscope reports the following
change:

  00000000: 6246 4c54 0000 0004 0000 0045 0001 48d4  bFLT.......E..H.
  00000010: 0002 85a0 0002 fe50 0000 1000 0002 85a0  .......P........
 -00000020: 0000 0757 0000 0001 5e05 742e 0000 0000  ...W....^.t.....
 +00000020: 0000 0757 0000 0001 5e05 a5c2 0000 0000  ...W....^.......

In order to address this, this commit adds support for the
SOURCE_DATE_EPOCH environment variable, which is standardized by the
reproducible-builds.org group at
https://reproducible-builds.org/specs/source-date-epoch/.

We simply use the time from the SOURCE_DATE_EPOCH variable (which
contains the number of seconds since Epoch) when SOURCE_DATE_EPOCH is
available in the environment, and otherwise fallback to the existing
logic that takes the current time using time().

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
elf2flt.c