diff options
author | Robert Yang <liezhi.yang@windriver.com> | 2016-11-14 19:28:58 -0800 |
---|---|---|
committer | Robert Yang <liezhi.yang@windriver.com> | 2016-12-21 06:18:56 +0000 |
commit | 990382018e7fc6b4b502fed451b73a83c13c4a24 (patch) | |
tree | 56a092c87b740e27540c51b10057900a01b31905 /meta | |
parent | 31da36a28c832ff634f099ad4f3f871b442b02cc (diff) | |
download | openembedded-core-contrib-990382018e7fc6b4b502fed451b73a83c13c4a24.tar.gz |
populate_sdk_ext.bbclass: install multilib SDKs
Fixed:
MACHINE = "qemux86-64"
require conf/multilib.conf
MULTILIBS = "multilib:lib32"
DEFAULTTUNE_virtclass-multilib-lib32 = "x86"
IMAGE_CLASSES += "testimage"
$ bitbake core-image-minimal -cpopulate_sdk_ext
$ bitbake core-image-minimal -ctestsdkext
[snip]
Testing /buildarea/lyang1/test_po/tmp/work/qemux86_64-poky-linux/core-image-minimal/1.0-r0/testsdkext//tc/environment-setup-x86-pokymllib32-linux
test_cvs (oeqa.sdk.buildcvs.BuildCvsTest) ... FAIL
[snip]
It was failed because no lib32 toolchains.
These fixes include:
* Set SDK_TARGETS correctly
* Return multilib depends in get_ext_sdk_depends()
* Write information to all environment-setup-* scripts.
[YOCTO #10647]
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Diffstat (limited to 'meta')
-rw-r--r-- | meta/classes/populate_sdk_ext.bbclass | 48 |
1 files changed, 28 insertions, 20 deletions
diff --git a/meta/classes/populate_sdk_ext.bbclass b/meta/classes/populate_sdk_ext.bbclass index e181c51653..d309991497 100644 --- a/meta/classes/populate_sdk_ext.bbclass +++ b/meta/classes/populate_sdk_ext.bbclass @@ -39,7 +39,7 @@ SDK_LOCAL_CONF_BLACKLIST ?= "CONF_VERSION \ SDK_INHERIT_BLACKLIST ?= "buildhistory icecc" SDK_UPDATE_URL ?= "" -SDK_TARGETS ?= "${PN}" +SDK_TARGETS ?= "${@multilib_pkg_extend(d, d.getVar('BPN'))}" def get_sdk_install_targets(d, images_only=False): sdk_install_targets = '' @@ -567,12 +567,14 @@ SDK_PRE_INSTALL_COMMAND_task-populate-sdk-ext = "${sdk_ext_preinst}" sdk_ext_postinst() { printf "\nExtracting buildtools...\n" cd $target_sdk_dir - env_setup_script="$target_sdk_dir/environment-setup-${REAL_MULTIMACH_TARGET_SYS}" + env_setup_scripts="`ls $target_sdk_dir/environment-setup-*`" ./${SDK_BUILDTOOLS_INSTALLER} -d buildtools -y > buildtools.log if [ $? -ne 0 ]; then printf 'ERROR: buildtools installation failed:\n' cat buildtools.log - echo "printf 'ERROR: this SDK was not fully installed and needs reinstalling\n'" >> $env_setup_script + for e in $env_setup_scripts; do + echo "printf 'ERROR: this SDK was not fully installed and needs reinstalling\n'" >> $e + done exit 1 fi @@ -581,23 +583,25 @@ sdk_ext_postinst() { # We don't need the log either since it succeeded rm -f buildtools.log - # Make sure when the user sets up the environment, they also get - # the buildtools-tarball tools in their path. - echo ". $target_sdk_dir/buildtools/environment-setup*" >> $env_setup_script + for e in $env_setup_scripts; do + # Make sure when the user sets up the environment, they also get + # the buildtools-tarball tools in their path. + echo ". $target_sdk_dir/buildtools/environment-setup*" >> $e + # Allow bitbake environment setup to be ran as part of this sdk. + echo "export OE_SKIP_SDK_CHECK=1" >> $e - # Allow bitbake environment setup to be ran as part of this sdk. - echo "export OE_SKIP_SDK_CHECK=1" >> $env_setup_script + # A bit of another hack, but we need this in the path only for devtool + # so put it at the end of $PATH. + echo "export PATH=$target_sdk_dir/sysroots/${SDK_SYS}${bindir_nativesdk}:\$PATH" >> $e - # A bit of another hack, but we need this in the path only for devtool - # so put it at the end of $PATH. - echo "export PATH=$target_sdk_dir/sysroots/${SDK_SYS}${bindir_nativesdk}:\$PATH" >> $env_setup_script + echo "printf 'SDK environment now set up; additionally you may now run devtool to perform development tasks.\nRun devtool --help for further details.\n'" >> $e - echo "printf 'SDK environment now set up; additionally you may now run devtool to perform development tasks.\nRun devtool --help for further details.\n'" >> $env_setup_script + # Warn if trying to use external bitbake and the ext SDK together + echo "(which bitbake > /dev/null 2>&1 && \ + echo 'WARNING: attempting to use the extensible SDK in an environment set up to run bitbake - this may lead to unexpected results. Please source this script in a new shell session instead.') || \ + true" >> $e + done - # Warn if trying to use external bitbake and the ext SDK together - echo "(which bitbake > /dev/null 2>&1 && \ - echo 'WARNING: attempting to use the extensible SDK in an environment set up to run bitbake - this may lead to unexpected results. Please source this script in a new shell session instead.') || \ - true" >> $env_setup_script if [ "$prepare_buildsystem" != "no" ]; then printf "Preparing build system...\n" @@ -612,6 +616,9 @@ sdk_ext_postinst() { python $target_sdk_dir/ext-sdk-prepare.py $LOGFILE '${SDK_INSTALL_TARGETS}'" if [ $? -ne 0 ]; then echo "printf 'ERROR: this SDK was not fully installed and needs reinstalling\n'" >> $env_setup_script + for e in $env_setup_scripts; do + echo "printf 'ERROR: this SDK was not fully installed and needs reinstalling\n'" >> $e + done exit 1 rm $target_sdk_dir/ext-sdk-prepare.py fi @@ -642,10 +649,11 @@ fakeroot python do_populate_sdk_ext() { def get_ext_sdk_depends(d): # Note: the deps varflag is a list not a string, so we need to specify expand=False deps = d.getVarFlag('do_image_complete', 'deps', False) - pn = d.getVar('PN') - deplist = ['%s:%s' % (pn, dep) for dep in deps] - for task in ['do_image_complete', 'do_rootfs', 'do_build']: - deplist.extend((d.getVarFlag(task, 'depends') or '').split()) + deplist = [] + for pn in multilib_pkg_extend(d, d.getVar('BPN')).split(): + deplist += ['%s:%s' % (pn, dep) for dep in deps] + for task in ['do_image_complete', 'do_rootfs', 'do_build']: + deplist.extend((d.getVarFlag(task, 'depends') or '').split()) return ' '.join(deplist) python do_sdk_depends() { |