Explorar el Código

BuildSystem: Sort input file lists

so that godot package builds reproducibly
in spite of indeterministic filesystem readdir order
and http://bugs.python.org/issue30461

See https://reproducible-builds.org/ for why this is good.

Sort font input file list, so that builtin_fonts.gen.h
is created in a reproducible way

Sort list of platforms, so that editor/register_exporters.gen.cpp
is created in a reproducible way

Sort list of source files, so that .a files and resulting godot binaries
are created in a reproducible way
Bernhard M. Wiedemann hace 7 años
padre
commit
83b856c046
Se han modificado 3 ficheros con 3 adiciones y 2 borrados
  1. 1 1
      SConstruct
  2. 1 0
      editor/SCsub
  3. 1 1
      methods.py

+ 1 - 1
SConstruct

@@ -23,7 +23,7 @@ platform_exporters = []
 platform_apis = []
 global_defaults = []
 
-for x in glob.glob("platform/*"):
+for x in sorted(glob.glob("platform/*")):
     if (not os.path.isdir(x) or not os.path.exists(x + "/detect.py")):
         continue
     tmppath = "./" + x

+ 1 - 0
editor/SCsub

@@ -77,6 +77,7 @@ if env['tools']:
     # Fonts
     flist = glob.glob(path + "/../thirdparty/fonts/*.ttf")
     flist.extend(glob.glob(path + "/../thirdparty/fonts/*.otf"))
+    flist.sort()
     env.Depends('#editor/builtin_fonts.gen.h', flist)
     env.CommandNoCache('#editor/builtin_fonts.gen.h', flist, run_in_subprocess(editor_builders.make_fonts_header))
 

+ 1 - 1
methods.py

@@ -13,7 +13,7 @@ def add_source_files(self, sources, filetype, lib_env=None, shared=False):
 
     if isbasestring(filetype):
         dir_path = self.Dir('.').abspath
-        filetype = glob.glob(dir_path + "/" + filetype)
+        filetype = sorted(glob.glob(dir_path + "/" + filetype))
 
     for path in filetype:
         sources.append(self.Object(path))