diff options
author | Joshua Lock via Openembedded-core <openembedded-core@lists.openembedded.org> | 2019-07-30 13:16:08 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2019-07-31 23:03:01 +0100 |
commit | 75698648c0fd45acf03d677e0fa0cd74e258cfc0 (patch) | |
tree | 1846b69feb48dac140f3619b2a97bcaaff88f4ee | |
parent | 57d702ed5de571751517568872eda2b5ba9fa8df (diff) | |
download | poky-75698648c0fd45acf03d677e0fa0cd74e258cfc0.tar.gz |
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>
-rw-r--r-- | meta/classes/sstate.bbclass | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/meta/classes/sstate.bbclass b/meta/classes/sstate.bbclass index 3342c5ef50..ee029196da 100644 --- a/meta/classes/sstate.bbclass +++ b/meta/classes/sstate.bbclass | |||
@@ -659,8 +659,12 @@ def sstate_package(ss, d): | |||
659 | if d.getVar('SSTATE_SKIP_CREATION') == '1': | 659 | if d.getVar('SSTATE_SKIP_CREATION') == '1': |
660 | return | 660 | return |
661 | 661 | ||
662 | sstate_create_package = ['sstate_report_unihash', 'sstate_create_package'] | ||
663 | if d.getVar('SSTATE_SIG_KEY'): | ||
664 | sstate_create_package.append('sstate_sign_package') | ||
665 | |||
662 | for f in (d.getVar('SSTATECREATEFUNCS') or '').split() + \ | 666 | for f in (d.getVar('SSTATECREATEFUNCS') or '').split() + \ |
663 | ['sstate_report_unihash', 'sstate_create_package', 'sstate_sign_package'] + \ | 667 | sstate_create_package + \ |
664 | (d.getVar('SSTATEPOSTCREATEFUNCS') or '').split(): | 668 | (d.getVar('SSTATEPOSTCREATEFUNCS') or '').split(): |
665 | # All hooks should run in SSTATE_BUILDDIR. | 669 | # All hooks should run in SSTATE_BUILDDIR. |
666 | bb.build.exec_func(f, d, (sstatebuild,)) | 670 | bb.build.exec_func(f, d, (sstatebuild,)) |
@@ -776,13 +780,13 @@ sstate_create_package () { | |||
776 | python sstate_sign_package () { | 780 | python sstate_sign_package () { |
777 | from oe.gpg_sign import get_signer | 781 | from oe.gpg_sign import get_signer |
778 | 782 | ||
779 | if d.getVar('SSTATE_SIG_KEY'): | 783 | |
780 | signer = get_signer(d, 'local') | 784 | signer = get_signer(d, 'local') |
781 | sstate_pkg = d.getVar('SSTATE_PKG') | 785 | sstate_pkg = d.getVar('SSTATE_PKG') |
782 | if os.path.exists(sstate_pkg + '.sig'): | 786 | if os.path.exists(sstate_pkg + '.sig'): |
783 | os.unlink(sstate_pkg + '.sig') | 787 | os.unlink(sstate_pkg + '.sig') |
784 | signer.detach_sign(sstate_pkg, d.getVar('SSTATE_SIG_KEY', False), None, | 788 | signer.detach_sign(sstate_pkg, d.getVar('SSTATE_SIG_KEY', False), None, |
785 | d.getVar('SSTATE_SIG_PASSPHRASE'), armor=False) | 789 | d.getVar('SSTATE_SIG_PASSPHRASE'), armor=False) |
786 | } | 790 | } |
787 | 791 | ||
788 | python sstate_report_unihash() { | 792 | python sstate_report_unihash() { |