Say why we allow override of build timestamp
authorDavid Neto <dneto@google.com>
Tue, 17 Jan 2017 20:41:23 +0000 (15:41 -0500)
committerDavid Neto <dneto@google.com>
Tue, 17 Jan 2017 20:42:02 +0000 (15:42 -0500)
It's for reproducible builds.

Also, fix Python formatting.

CHANGES
utils/update_build_version.py

diff --git a/CHANGES b/CHANGES
index 043f818..c88421c 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -3,6 +3,8 @@ Revision history for SPIRV-Tools
 v2016.7-dev 2017-01-06
  - Add build target spirv-tools-vimsyntax to generate spvasm.vim, a SPIR-V
    assembly syntax file for Vim.
+ - Version string: Allow overriding of wall clock timestamp with contents
+   of environment variable SOURCE_DATE_EPOCH.
  - Fixes:
    #508: Support compilation under CYGWIN
    #517: Fix validation when continue (or case) contstruct is also the head of a
index db688e4..d2984d2 100755 (executable)
@@ -110,9 +110,15 @@ def describe(directory):
             return command_output(
                 ['git', 'rev-parse', 'HEAD'], directory).rstrip().decode()
         except:
-            return 'unknown hash, {}'.format(datetime.date.fromtimestamp(
-                int(os.environ.get('SOURCE_DATE_EPOCH', time.time()))
-                ).isoformat())
+            # This is the fallback case where git gives us no information,
+            # e.g. because the source tree might not be in a git tree.
+            # In this case, usually use a timestamp.  However, to ensure
+            # reproducible builds, allow the builder to override the wall
+            # clock time with enviornment variable SOURCE_DATE_EPOCH
+            # containing a (presumably) fixed timestamp.
+            timestamp = int(os.environ.get('SOURCE_DATE_EPOCH', time.time()))
+            formatted = datetime.date.fromtimestamp(timestamp).isoformat()
+            return 'unknown hash, {}'.format(formatted)
 
 
 def main():