Adhere to SOURCE_DATE_EPOCH specification to fix reproducibility #1314
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description of the issue
Currently Makefile uses current date and time as an argument to the linker which leads to the timestamp being embedded in the binary causing reproducibility issues: we will get different binaries each time we build we build the project.
Reproducible builds are ones where the same source code input produces the same binary output. This helps with caching, authentication of binaries, etc.
Description of changes
My change adds support for a standardised variable. When set, this variable indicates that the build environment wishes to have the value of this variable used as timestamps instead of "current time".
See:
https://reproducible-builds.org/specs/source-date-epoch/
https://reproducible-builds.org/docs/source-date-epoch/
License
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your current license (MIT).
Tests
I am able to build the project after applying this patch.
Furthermore, examining the resulting binaries shows that timestamps are set as expected.