diff options
author | Paul Eggleton <paul.eggleton@linux.intel.com> | 2016-07-25 20:41:39 +1200 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-07-26 08:56:31 +0100 |
commit | 0b2ca6687404999a3f663b116259c041a39d389d (patch) | |
tree | d7a58b786b23e1547d5395527d239cdb6e6a8156 /meta/lib/oe/copy_buildsystem.py | |
parent | 2ac1fdf53741f1943623df47c7a2bfa2a91544b9 (diff) | |
download | poky-0b2ca6687404999a3f663b116259c041a39d389d.tar.gz |
classes/populate_sdk_ext: filter sstate within the extensible SDK
Use the new oe-check-sstate to filter the sstate artifacts shipped with
the extensible SDK by effectively running bitbake within the produced
eSDK and and getting it to tell us which tasks it will restore from
sstate. This has several benefits:
1) We drop the *-initial artifacts from the minimal + toolchain eSDK.
This still leaves us with a reasonably large SDK for this
configuration, however it does pave the way for future reductions
since we are actually filtering by what will be expected to be there
on install rather than hoping that whatever cuts we make will match.
2) We verify bitbake's basic operation within the eSDK, i.e. that
we haven't messed up the configuration
3) We verify that the sstate artifacts we expect to be present are
present (at least in the sstate cache for the build producing the
eSDK). Outside deletion of sstate artifacts has been a problem up to
now, and this should at least catch that earlier i.e. during the
build rather than when someone tries to install the eSDK.
This does add a couple of minutes to the do_populate_sdk_ext time, but
it seems like the most appropriate way to handle this.
Should mostly address [YOCTO #9083] and [YOCTO #9626].
(From OE-Core rev: 4b7b48fcb9b39fccf8222650c2608325df2a4507)
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/lib/oe/copy_buildsystem.py')
-rw-r--r-- | meta/lib/oe/copy_buildsystem.py | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/meta/lib/oe/copy_buildsystem.py b/meta/lib/oe/copy_buildsystem.py index b5f546f99f..4d3faf6681 100644 --- a/meta/lib/oe/copy_buildsystem.py +++ b/meta/lib/oe/copy_buildsystem.py | |||
@@ -200,11 +200,11 @@ def merge_lockedsigs(copy_tasks, lockedsigs_main, lockedsigs_extra, merged_outpu | |||
200 | if merged_output: | 200 | if merged_output: |
201 | write_sigs_file(merged_output, arch_order, merged) | 201 | write_sigs_file(merged_output, arch_order, merged) |
202 | 202 | ||
203 | def create_locked_sstate_cache(lockedsigs, input_sstate_cache, output_sstate_cache, d, fixedlsbstring=""): | 203 | def create_locked_sstate_cache(lockedsigs, input_sstate_cache, output_sstate_cache, d, fixedlsbstring="", filterfile=None): |
204 | bb.note('Generating sstate-cache...') | 204 | bb.note('Generating sstate-cache...') |
205 | 205 | ||
206 | nativelsbstring = d.getVar('NATIVELSBSTRING', True) | 206 | nativelsbstring = d.getVar('NATIVELSBSTRING', True) |
207 | bb.process.run("gen-lockedsig-cache %s %s %s %s" % (lockedsigs, input_sstate_cache, output_sstate_cache, nativelsbstring)) | 207 | bb.process.run("gen-lockedsig-cache %s %s %s %s %s" % (lockedsigs, input_sstate_cache, output_sstate_cache, nativelsbstring, filterfile or '')) |
208 | if fixedlsbstring: | 208 | if fixedlsbstring: |
209 | nativedir = output_sstate_cache + '/' + nativelsbstring | 209 | nativedir = output_sstate_cache + '/' + nativelsbstring |
210 | if os.path.isdir(nativedir): | 210 | if os.path.isdir(nativedir): |
@@ -216,3 +216,21 @@ def create_locked_sstate_cache(lockedsigs, input_sstate_cache, output_sstate_cac | |||
216 | src = os.path.join(nativedir, i) | 216 | src = os.path.join(nativedir, i) |
217 | dest = os.path.join(destdir, i) | 217 | dest = os.path.join(destdir, i) |
218 | os.rename(src, dest) | 218 | os.rename(src, dest) |
219 | |||
220 | def check_sstate_task_list(d, targets, filteroutfile, cmdprefix='', cwd=None, logfile=None): | ||
221 | import subprocess | ||
222 | |||
223 | bb.note('Generating sstate task list...') | ||
224 | |||
225 | if not cwd: | ||
226 | cwd = os.getcwd() | ||
227 | if logfile: | ||
228 | logparam = '-l %s' % logfile | ||
229 | else: | ||
230 | logparam = '' | ||
231 | cmd = "%sBB_SETSCENE_ENFORCE=1 PSEUDO_DISABLED=1 oe-check-sstate %s -s -o %s %s" % (cmdprefix, targets, filteroutfile, logparam) | ||
232 | env = dict(d.getVar('BB_ORIGENV', False)) | ||
233 | env.pop('BUILDDIR', '') | ||
234 | pathitems = env['PATH'].split(':') | ||
235 | env['PATH'] = ':'.join([item for item in pathitems if not item.endswith('/bitbake/bin')]) | ||
236 | bb.process.run(cmd, stderr=subprocess.STDOUT, env=env, cwd=cwd, executable='/bin/bash') | ||