[PATCH 01/10] build: Generate build hash

Sebastian Huber sebastian.huber at embedded-brains.de
Wed Feb 24 13:57:21 UTC 2021


Update #4265.
---
 wscript | 27 ++++++++++++++++++++++++++-
 1 file changed, 26 insertions(+), 1 deletion(-)

diff --git a/wscript b/wscript
index 6626fafb74..83c7c446bb 100755
--- a/wscript
+++ b/wscript
@@ -1359,6 +1359,30 @@ def get_compiler(conf, cp, variant):
     return value
 
 
+def _generate_build_hash(conf):
+    import hashlib
+    import base64
+
+    build_hash = ""
+    for key in sorted(conf.env):
+        build_hash = build_hash + key + str(conf.env[key])
+    for discard in [
+        conf.env.PREFIX,
+        conf.bldnode.make_node(conf.env.VARIANT).abspath(),
+        conf.path.abspath(),
+    ]:
+        build_hash = build_hash.replace(discard, "")
+    state = hashlib.sha256()
+    state.update(build_hash.encode("utf-8"))
+    conf.define(
+        "RTEMS_BUILD_HASH",
+        base64.urlsafe_b64encode(state.digest()).decode("utf-8"),
+    )
+    conf.write_config_header(
+        conf.env.VARIANT + "/cpukit/include/rtems/build-hash.h"
+    )
+
+
 def configure_variant(conf, cp, bsp_map, path_list, top_group, variant):
     conf.msg("Configure board support package (BSP)", variant, color="YELLOW")
 
@@ -1391,9 +1415,10 @@ def configure_variant(conf, cp, bsp_map, path_list, top_group, variant):
         conf.fatal("No such base BSP: '{}'".format(variant))
     bsp_item.configure(conf, cic)
 
-    options = set([o[0].upper() for o in cp.items(variant)])
+    options = set(o[0].upper() for o in cp.items(variant))
     for o in options.difference(cic.options):
         conf.msg("Unknown configuration option", o.upper(), color="RED")
+    _generate_build_hash(conf)
 
 
 def check_forbidden_options(ctx, opts):
-- 
2.26.2



More information about the devel mailing list