summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Eggleton <paul.eggleton@linux.intel.com>2016-07-23 00:38:09 +1200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-07-26 08:56:31 +0100
commit4253e2e0f394f8ef2c30bbfec8672d64b9eb9c54 (patch)
tree9ca7ceac262a6b4316352d46e0dc311ebed82f93
parentf84b01b289ef281c70b83cb89f7b4c3fdfedf4fc (diff)
downloadpoky-4253e2e0f394f8ef2c30bbfec8672d64b9eb9c54.tar.gz
classes/populate_sdk_ext: allow including toolchain in eSDK on install
If we're to completely replace the standard SDK with the extensible SDK, we need to be able to provide the standard toolchain on install without doing anything other than installing it, so that you can install the SDK and then point your IDE at it. This is particularly applicable to the minimal SDK which normally installs nothing by default. NOTE: enabling this option currently adds ~280MB to the size of the minimal eSDK installer. If we need to reduce this further we would have to look at adjusting the dependencies and/or the sstate_depvalid() function in sstate.bbclass which eliminates dependencies, or look at reducing the size of the artifacts themselves. Implements [YOCTO #9751]. (From OE-Core rev: ed0d8ed72370df694f720cc13897493478dc1de9) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/classes/populate_sdk_ext.bbclass19
-rw-r--r--meta/lib/oe/copy_buildsystem.py5
-rw-r--r--meta/recipes-core/meta/meta-extsdk-toolchain.bb15
3 files changed, 36 insertions, 3 deletions
diff --git a/meta/classes/populate_sdk_ext.bbclass b/meta/classes/populate_sdk_ext.bbclass
index 720142f822..211a02286e 100644
--- a/meta/classes/populate_sdk_ext.bbclass
+++ b/meta/classes/populate_sdk_ext.bbclass
@@ -21,6 +21,7 @@ SDK_EXT_task-populate-sdk-ext = "-ext"
21# Options are full or minimal 21# Options are full or minimal
22SDK_EXT_TYPE ?= "full" 22SDK_EXT_TYPE ?= "full"
23SDK_INCLUDE_PKGDATA ?= "0" 23SDK_INCLUDE_PKGDATA ?= "0"
24SDK_INCLUDE_TOOLCHAIN ?= "0"
24 25
25SDK_RECRDEP_TASKS ?= "" 26SDK_RECRDEP_TASKS ?= ""
26 27
@@ -54,6 +55,8 @@ def get_sdk_install_targets(d, images_only=False):
54 if not images_only: 55 if not images_only:
55 if d.getVar('SDK_INCLUDE_PKGDATA', True) == '1': 56 if d.getVar('SDK_INCLUDE_PKGDATA', True) == '1':
56 sdk_install_targets += ' meta-world-pkgdata:do_allpackagedata' 57 sdk_install_targets += ' meta-world-pkgdata:do_allpackagedata'
58 if d.getVar('SDK_INCLUDE_TOOLCHAIN', True) == '1':
59 sdk_install_targets += ' meta-extsdk-toolchain:do_populate_sysroot'
57 60
58 return sdk_install_targets 61 return sdk_install_targets
59 62
@@ -309,6 +312,19 @@ python copy_buildsystem () {
309 lockedsigs_pruned, 312 lockedsigs_pruned,
310 lockedsigs_copy) 313 lockedsigs_copy)
311 314
315 if d.getVar('SDK_INCLUDE_TOOLCHAIN', True) == '1':
316 lockedsigs_base = d.getVar('WORKDIR', True) + '/locked-sigs-base2.inc'
317 lockedsigs_toolchain = d.getVar('STAGING_DIR_HOST', True) + '/locked-sigs/locked-sigs-extsdk-toolchain.inc'
318 shutil.move(lockedsigs_pruned, lockedsigs_base)
319 oe.copy_buildsystem.merge_lockedsigs(['do_populate_sysroot'],
320 lockedsigs_base,
321 lockedsigs_toolchain,
322 lockedsigs_pruned)
323 oe.copy_buildsystem.create_locked_sstate_cache(lockedsigs_toolchain,
324 d.getVar('SSTATE_DIR', True),
325 sstate_out, d,
326 fixedlsbstring)
327
312 if d.getVar('SDK_EXT_TYPE', True) == 'minimal': 328 if d.getVar('SDK_EXT_TYPE', True) == 'minimal':
313 if derivative: 329 if derivative:
314 # Assume the user is not going to set up an additional sstate 330 # Assume the user is not going to set up an additional sstate
@@ -486,7 +502,8 @@ do_populate_sdk_ext[dirs] = "${@d.getVarFlag('do_populate_sdk', 'dirs', False)}"
486 502
487do_populate_sdk_ext[depends] = "${@d.getVarFlag('do_populate_sdk', 'depends', False)} \ 503do_populate_sdk_ext[depends] = "${@d.getVarFlag('do_populate_sdk', 'depends', False)} \
488 buildtools-tarball:do_populate_sdk uninative-tarball:do_populate_sdk \ 504 buildtools-tarball:do_populate_sdk uninative-tarball:do_populate_sdk \
489 ${@'meta-world-pkgdata:do_collect_packagedata' if d.getVar('SDK_INCLUDE_PKGDATA', True) == '1' else ''}" 505 ${@'meta-world-pkgdata:do_collect_packagedata' if d.getVar('SDK_INCLUDE_PKGDATA', True) == '1' else ''} \
506 ${@'meta-extsdk-toolchain:do_locked_sigs' if d.getVar('SDK_INCLUDE_TOOLCHAIN', True) == '1' else ''}"
490 507
491do_populate_sdk_ext[rdepends] += "${@' '.join([x + ':do_build' for x in d.getVar('SDK_TARGETS', True).split()])}" 508do_populate_sdk_ext[rdepends] += "${@' '.join([x + ':do_build' for x in d.getVar('SDK_TARGETS', True).split()])}"
492 509
diff --git a/meta/lib/oe/copy_buildsystem.py b/meta/lib/oe/copy_buildsystem.py
index eddf5bb2da..b5f546f99f 100644
--- a/meta/lib/oe/copy_buildsystem.py
+++ b/meta/lib/oe/copy_buildsystem.py
@@ -145,7 +145,7 @@ def prune_lockedsigs(excluded_tasks, excluded_targets, lockedsigs, pruned_output
145 invalue = True 145 invalue = True
146 f.write(line) 146 f.write(line)
147 147
148def merge_lockedsigs(copy_tasks, lockedsigs_main, lockedsigs_extra, merged_output, copy_output): 148def merge_lockedsigs(copy_tasks, lockedsigs_main, lockedsigs_extra, merged_output, copy_output=None):
149 merged = {} 149 merged = {}
150 arch_order = [] 150 arch_order = []
151 with open(lockedsigs_main, 'r') as f: 151 with open(lockedsigs_main, 'r') as f:
@@ -195,7 +195,8 @@ def merge_lockedsigs(copy_tasks, lockedsigs_main, lockedsigs_extra, merged_outpu
195 fulltypes.append(typename) 195 fulltypes.append(typename)
196 f.write('SIGGEN_LOCKEDSIGS_TYPES = "%s"\n' % ' '.join(fulltypes)) 196 f.write('SIGGEN_LOCKEDSIGS_TYPES = "%s"\n' % ' '.join(fulltypes))
197 197
198 write_sigs_file(copy_output, list(tocopy.keys()), tocopy) 198 if copy_output:
199 write_sigs_file(copy_output, list(tocopy.keys()), tocopy)
199 if merged_output: 200 if merged_output:
200 write_sigs_file(merged_output, arch_order, merged) 201 write_sigs_file(merged_output, arch_order, merged)
201 202
diff --git a/meta/recipes-core/meta/meta-extsdk-toolchain.bb b/meta/recipes-core/meta/meta-extsdk-toolchain.bb
index 9bff22053c..886ff076dc 100644
--- a/meta/recipes-core/meta/meta-extsdk-toolchain.bb
+++ b/meta/recipes-core/meta/meta-extsdk-toolchain.bb
@@ -11,3 +11,18 @@ do_populate_sysroot[deptask] = "do_populate_sysroot"
11# NOTE: There is logic specific to this recipe in setscene_depvalid() 11# NOTE: There is logic specific to this recipe in setscene_depvalid()
12# within sstate.bbclass, so if you copy or rename this and expect the same 12# within sstate.bbclass, so if you copy or rename this and expect the same
13# functionality you'll need to modify that as well. 13# functionality you'll need to modify that as well.
14
15LOCKED_SIGS_INDIR = "${D}/locked-sigs"
16
17addtask do_locked_sigs after do_populate_sysroot
18SSTATETASKS += "do_locked_sigs"
19do_locked_sigs[sstate-inputdirs] = "${LOCKED_SIGS_INDIR}"
20do_locked_sigs[sstate-outputdirs] = "${STAGING_DIR_HOST}/locked-sigs"
21
22python do_locked_sigs() {
23 import oe.copy_buildsystem
24 outdir = os.path.join(d.getVar('LOCKED_SIGS_INDIR', True))
25 bb.utils.mkdirhier(outdir)
26 sigfile = os.path.join(outdir, 'locked-sigs-extsdk-toolchain.inc')
27 oe.copy_buildsystem.generate_locked_sigs(sigfile, d)
28}