classes/sstate: regenerate sstate when signing enabled

This change ensures that the task signatures changes, and therefore
sstate tasks are rerun, when signing is enabled. This has the
positive outcome that if signing is enabled new signed shared state
objects will be produced, rather than just signing shared state
objects for tasks where no work has been performed yet.

The downside of this change is that enabling/disabling sstate object
signing alters the taskhash and results in rebuilding the world.

(From OE-Core rev: ef60c65e3856682b90b17ae06a1b675756fd4496)

Signed-off-by: Joshua Lock <jlock@vmware.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Joshua Lock via Openembedded-core
2019-07-30 13:16:08 +00:00
committed by Richard Purdie
parent 57d702ed5d
commit 75698648c0

View File

@@ -659,8 +659,12 @@ def sstate_package(ss, d):
if d.getVar('SSTATE_SKIP_CREATION') == '1':
return
sstate_create_package = ['sstate_report_unihash', 'sstate_create_package']
if d.getVar('SSTATE_SIG_KEY'):
sstate_create_package.append('sstate_sign_package')
for f in (d.getVar('SSTATECREATEFUNCS') or '').split() + \
['sstate_report_unihash', 'sstate_create_package', 'sstate_sign_package'] + \
sstate_create_package + \
(d.getVar('SSTATEPOSTCREATEFUNCS') or '').split():
# All hooks should run in SSTATE_BUILDDIR.
bb.build.exec_func(f, d, (sstatebuild,))
@@ -776,13 +780,13 @@ sstate_create_package () {
python sstate_sign_package () {
from oe.gpg_sign import get_signer
if d.getVar('SSTATE_SIG_KEY'):
signer = get_signer(d, 'local')
sstate_pkg = d.getVar('SSTATE_PKG')
if os.path.exists(sstate_pkg + '.sig'):
os.unlink(sstate_pkg + '.sig')
signer.detach_sign(sstate_pkg, d.getVar('SSTATE_SIG_KEY', False), None,
d.getVar('SSTATE_SIG_PASSPHRASE'), armor=False)
signer = get_signer(d, 'local')
sstate_pkg = d.getVar('SSTATE_PKG')
if os.path.exists(sstate_pkg + '.sig'):
os.unlink(sstate_pkg + '.sig')
signer.detach_sign(sstate_pkg, d.getVar('SSTATE_SIG_KEY', False), None,
d.getVar('SSTATE_SIG_PASSPHRASE'), armor=False)
}
python sstate_report_unihash() {