diff Resources/EmbedStaticAssets.py @ 17:154cb76a042f

make the build of static assets reproducible
author Sebastien Jodogne <s.jodogne@gmail.com>
date Sat, 05 Aug 2023 11:36:33 +0200
parents 39585ba26f20
children 36049c04ee27
line wrap: on
line diff
--- a/Resources/EmbedStaticAssets.py	Mon Jun 19 10:05:31 2023 +0200
+++ b/Resources/EmbedStaticAssets.py	Sat Aug 05 11:36:33 2023 +0200
@@ -95,6 +95,9 @@
     count = 0
 
     for root, dirs, files in os.walk(SOURCE):
+        files.sort()
+        dirs.sort()
+
         for f in files:
             fullPath = os.path.join(root, f)
             relativePath = os.path.relpath(os.path.join(root, f), SOURCE)
@@ -106,11 +109,11 @@
             if sys.version_info < (3, 0):
                 # Python 2.7
                 fileobj = io.BytesIO()
-                gzip.GzipFile(fileobj=fileobj, mode='w').write(content)
+                gzip.GzipFile(fileobj=fileobj, mode='w', mtime=0).write(content)
                 compressed = fileobj.getvalue()
             else:
                 # Python 3.x
-                compressed = gzip.compress(content)
+                compressed = gzip.compress(content, mtime=0)
 
             EncodeFileAsCString(g, variable, compressed)
             WriteChecksum(g, variable + '_md5', content)
@@ -121,7 +124,7 @@
     
     g.write('void ReadStaticAsset(std::string& target, const std::string& path)\n')
     g.write('{\n')
-    for (path, variable) in index.items():
+    for (path, variable) in sorted(index.items()):
         g.write('  if (path == "%s")\n' % path)
         g.write('  {\n')
         g.write('    Uncompress(target, %s, sizeof(%s) - 1, %s_md5);\n' % (variable, variable, variable))