Make generated build_info source file deterministic. The order of a plain dict is not guaranteed.

PiperOrigin-RevId: 323423187
Change-Id: I7a086ce8cb6995b0da9e2eddceab671349ad41b6
This commit is contained in:
A. Unique TensorFlower 2020-07-27 13:01:19 -07:00 committed by TensorFlower Gardener
parent f413da875c
commit d475b4f7a5
2 changed files with 11 additions and 2 deletions

View File

@ -30,6 +30,10 @@ class BuildInfoTest(test.TestCase):
self.assertEqual(build_info.build_info['is_cuda_build'],
test.is_built_with_cuda())
def testDeterministicOrder(self):
self.assertEqual(['is_cuda_build', 'is_rocm_build'],
list(build_info.build_info.keys()))
if __name__ == '__main__':
test.main()

View File

@ -52,6 +52,9 @@ def write_build_info(filename, key_value_list):
else:
build_info[key] = value.format(**build_info)
# Sort the build info to ensure deterministic output.
sorted_build_info_pairs = sorted(build_info.items())
contents = """
# Copyright 2020 The TensorFlow Authors. All Rights Reserved.
#
@ -72,8 +75,10 @@ from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
build_info = {build_info}
""".format(build_info=build_info)
import collections
build_info = collections.OrderedDict(%s)
""" % sorted_build_info_pairs
open(filename, "w").write(contents)