[RTEMS Project] #4265: Add rtems_get_build_hash()

RTEMS trac trac at rtems.org
Wed Feb 24 07:04:45 UTC 2021


#4265: Add rtems_get_build_hash()
-----------------------------+------------------------------
 Reporter:  Sebastian Huber  |       Owner:  Sebastian Huber
     Type:  enhancement      |      Status:  assigned
 Priority:  normal           |   Milestone:  6.1
Component:  rtems            |     Version:  6
 Severity:  normal           |  Resolution:
 Keywords:                   |  Blocked By:
 Blocking:                   |
-----------------------------+------------------------------

Comment (by Sebastian Huber):

 Yes, you can iterate over conf.env:
 {{{#!diff
 diff --git a/wscript b/wscript
 index 6626fafb74..84b845dce4 100755
 --- a/wscript
 +++ b/wscript
 @@ -1359,6 +1359,27 @@ 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()))
 +    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 +1412,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):

 }}}
 An alternative would be to explicitly add (or remove) build options.

--
Ticket URL: <http://devel.rtems.org/ticket/4265#comment:2>
RTEMS Project <http://www.rtems.org/>
RTEMS Project


More information about the bugs mailing list