From 4fb5f012c32a2ed394091039a7213472001a98c9 Mon Sep 17 00:00:00 2001 From: iTitou Date: Wed, 20 Jan 2021 10:33:40 +0100 Subject: [PATCH] py/makeversionhdr: Honor SOURCE_DATE_EPOCH if present. This environment variable, if defined during the build process, indicates a fixed time that should be used in place of "now" when such a time is explicitely referenced. This allows for reproducible builds of micropython. See https://reproducible-builds.org/specs/source-date-epoch/ Signed-off-by: iTitou --- py/makeversionhdr.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/py/makeversionhdr.py b/py/makeversionhdr.py index 970a86e6ca..2f4bc91826 100644 --- a/py/makeversionhdr.py +++ b/py/makeversionhdr.py @@ -80,6 +80,12 @@ def make_version_header(filename): git_tag, git_hash = info + build_date = datetime.date.today() + if "SOURCE_DATE_EPOCH" in os.environ: + build_date = datetime.datetime.utcfromtimestamp( + int(os.environ["SOURCE_DATE_EPOCH"]) + ).date() + # Generate the file with the git and version info file_data = """\ // This file was generated by py/makeversionhdr.py @@ -89,7 +95,7 @@ def make_version_header(filename): """ % ( git_tag, git_hash, - datetime.date.today().strftime("%Y-%m-%d"), + build_date.strftime("%Y-%m-%d"), ) # Check if the file contents changed from last time