From 1c2d5aeae2fa2dfc16bc60b6cf0b310f826337fd Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Tue, 25 Feb 2020 11:01:02 +0000 Subject: abi_version/sstatesig: Introduce HASHEQUIV_HASH_VERSION We've found we need a way to cause a change in signatures and move to a new hash 'namespace' with hashequiv. This introduces a variable which allows us to do this. Signed-off-by: Richard Purdie --- meta/conf/abi_version.conf | 8 ++++++++ meta/lib/oe/sstatesig.py | 3 +++ 2 files changed, 11 insertions(+) diff --git a/meta/conf/abi_version.conf b/meta/conf/abi_version.conf index 4964880108..2bdc55695b 100644 --- a/meta/conf/abi_version.conf +++ b/meta/conf/abi_version.conf @@ -5,3 +5,11 @@ # with general agreement from the core team. # OELAYOUT_ABI = "12" + +# +# HASHEQUIV_HASH_VERSION is injected into the output hash calculation used by +# hashequiv. Changing this means previous hashes will no longer match, allowing +# a reset of the equivalence, for example when reproducibility issues break the +# existing match data. Distros can also append to this value for the same effect. +# +HASHEQUIV_HASH_VERSION = "1" diff --git a/meta/lib/oe/sstatesig.py b/meta/lib/oe/sstatesig.py index 4325b66a9e..d24e3738ae 100644 --- a/meta/lib/oe/sstatesig.py +++ b/meta/lib/oe/sstatesig.py @@ -477,11 +477,14 @@ def OEOuthashBasic(path, sigfile, task, d): h = hashlib.sha256() prev_dir = os.getcwd() include_owners = os.environ.get('PSEUDO_DISABLED') == '0' + extra_content = d.getVar('HASHEQUIV_HASH_VERSION') try: os.chdir(path) update_hash("OEOuthashBasic\n") + if extra_content: + update_hash(extra_content + "\n") # It is only currently useful to get equivalent hashes for things that # can be restored from sstate. Since the sstate object is named using -- cgit 1.2.3-korg