summaryrefslogtreecommitdiffstats
path: root/meta/classes/sstate.bbclass
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2014-09-05 10:40:02 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2014-09-17 22:00:25 +0100
commitc5cc4993f0555d3fc7a7aa5a471ec2b8e940dec6 (patch)
tree5d590aa0bb70f013793dc43b2fbe5683bc17dae7 /meta/classes/sstate.bbclass
parent7d80f8e9468253496a7097685aac8f468940a9c5 (diff)
downloadpoky-c5cc4993f0555d3fc7a7aa5a471ec2b8e940dec6.tar.gz
sstatesig/sstate: Add support for locked down sstate cache usage
I've been giving things some thought, specifically why sstate doesn't get used more and why we have people requesting external toolchains. I'm guessing the issue is that people don't like how often sstate can change and the lack of an easy way to lock it down. Locking it down is actually quite easy so patch implements some basics of how you can do this (for example to a specific toolchain). With an addition like this to local.conf (or wherever): SIGGEN_LOCKEDSIGS = "\ gcc-cross:do_populate_sysroot:a8d91b35b98e1494957a2ddaf4598956 \ eglibc:do_populate_sysroot:13e8c68553dc61f9d67564f13b9b2d67 \ eglibc:do_packagedata:bfca0db1782c719d373f8636282596ee \ gcc-cross:do_packagedata:4b601ff4f67601395ee49c46701122f6 \ " the code at the end of the email will force the hashes to those values for the recipes mentioned. The system would then find and use those specific objects from the sstate cache instead of trying to build anything. Obviously this is a little simplistic, you might need to put an override against this to only apply those revisions for a specific architecture for example. You'd also probably want to put code in the sstate hash validation code to ensure it really did install these from sstate since if it didn't you'd want to abort the build. This patch also implements support to add to bitbake -S which dumps the locked sstate checksums for each task into a ready prepared include file locked-sigs.inc (currently placed into cwd). There is a function, bb.parse.siggen.dump_lockedsigs() which can be called to trigger the same functionality from task space. A warning is added to sstate.bbclass through a call back into the siggen class to warn if objects are not used from the locked cache. The SIGGEN_ENFORCE_LOCKEDSIGS variable controls whether this is just a warning or a fatal error. A script is provided to generate sstate directory from a locked-sigs file. (From OE-Core rev: 7e14784f2493a19c6bfe3ec3f05a5cf9797a2f22) (From OE-Core rev: 884d4fa3e77cf32836f14a113c11489076f4a84d) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/classes/sstate.bbclass')
-rw-r--r--meta/classes/sstate.bbclass3
1 files changed, 3 insertions, 0 deletions
diff --git a/meta/classes/sstate.bbclass b/meta/classes/sstate.bbclass
index 6f1cfb27d9..d3e251c0bf 100644
--- a/meta/classes/sstate.bbclass
+++ b/meta/classes/sstate.bbclass
@@ -713,6 +713,9 @@ def sstate_checkhashes(sq_fn, sq_task, sq_hash, sq_hashfn, d):
713 evdata['found'].append( (sq_fn[task], sq_task[task], sq_hash[task], sstatefile ) ) 713 evdata['found'].append( (sq_fn[task], sq_task[task], sq_hash[task], sstatefile ) )
714 bb.event.fire(bb.event.MetadataEvent("MissedSstate", evdata), d) 714 bb.event.fire(bb.event.MetadataEvent("MissedSstate", evdata), d)
715 715
716 if hasattr(bb.parse.siggen, "checkhashes"):
717 bb.parse.siggen.checkhashes(missed, ret, sq_fn, sq_task, sq_hash, sq_hashfn, d)
718
716 return ret 719 return ret
717 720
718BB_SETSCENE_DEPVALID = "setscene_depvalid" 721BB_SETSCENE_DEPVALID = "setscene_depvalid"