summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert Yang <liezhi.yang@windriver.com>2016-11-14 19:28:58 -0800
committerRobert Yang <liezhi.yang@windriver.com>2016-12-21 06:18:56 +0000
commit990382018e7fc6b4b502fed451b73a83c13c4a24 (patch)
tree56a092c87b740e27540c51b10057900a01b31905
parent31da36a28c832ff634f099ad4f3f871b442b02cc (diff)
downloadopenembedded-core-contrib-990382018e7fc6b4b502fed451b73a83c13c4a24.tar.gz
openembedded-core-contrib-990382018e7fc6b4b502fed451b73a83c13c4a24.tar.bz2
openembedded-core-contrib-990382018e7fc6b4b502fed451b73a83c13c4a24.zip
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>
-rw-r--r--meta/classes/populate_sdk_ext.bbclass48
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() {