Extensible SDK fixes
cover Extensible SDK fixes
The following changes since commit e42d8eff9eed7d1454b4f331d96dcee6dea232df:
bash: Disable custom memory allocator (2015-10-12 14:35:42 +0100)
are available in the git repository at:
git://git.openembedded.org/openembedded-core-contrib paule/extsdkfixes2
http://cgit.openembedded.org/cgit.cgi/openembedded-core-contrib/log/?h=paule/extsdkfixes2
Paul Eggleton (4):
classes/populate_sdk_ext: consistent indentation classes/populate_sdk_ext: prevent do_rootfs from executing classes/populate_sdk_ext: add note to env setup script toolchain-shar-extract.sh: print full-length title underline
meta/classes/populate_sdk_ext.bbclass | 15 ++++++++++----- meta/files/ext-sdk-prepare.sh | 20 ++++++++++++++++++++ meta/files/toolchain-shar-extract.sh | 5 +++-- 3 files changed, 33 insertions(+), 7 deletions(-) create mode 100644 meta/files/ext-sdk-prepare.sh
Signature · 1 line
2.1.0
PATCH 1/4 classes/populate_sdk_ext: consistent indentation
Make the indentation consistent before doing further work on this part of the code.
--- meta/classes/populate_sdk_ext.bbclass | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
meta/classes/populate_sdk_ext.bbclass +5 -5
@@ -238,11 +238,11 @@ sdk_ext_postinst() { mv *-nativesdk-libc.tar.* $target_sdk_dir/`dirname ${oe_init_build_env_path}` if [ "$prepare_buildsystem" != "no" ]; then - printf "Preparing build system...\n" - # dash which is /bin/sh on Ubuntu will not preserve the - # current working directory when first ran, nor will it set $1 when - # sourcing a script. That is why this has to look so ugly. - sh -c ". buildtools/environment-setup* > preparing_build_system.log && cd $target_sdk_dir/`dirname ${oe_init_build_env_path}` && set $target_sdk_dir && . $target_sdk_dir/${oe_init_build_env_path} $target_sdk_dir >> preparing_build_system.log && bitbake ${SDK_TARGETS} >> preparing_build_system.log" || { echo "SDK preparation failed: see `pwd`/preparing_build_system.log" ; exit 1 ; } + printf "Preparing build system...\n" + # dash which is /bin/sh on Ubuntu will not preserve the + # current working directory when first ran, nor will it set $1 when + # sourcing a script. That is why this has to look so ugly. + sh -c ". buildtools/environment-setup* > preparing_build_system.log && cd $target_sdk_dir/`dirname ${oe_init_build_env_path}` && set $target_sdk_dir && . $target_sdk_dir/${oe_init_build_env_path} $target_sdk_dir >> preparing_build_system.log && bitbake ${SDK_TARGETS} >> preparing_build_system.log" || { echo "SDK preparation failed: see `pwd`/preparing_build_system.log" ; exit 1 ; } fi echo done }
Signature · 1 line
2.1.0
PATCH 2/4 classes/populate_sdk_ext: prevent do_rootfs from executing
In reply to Paul EggletonIn order to prepare the build system within the extensible SDK, we actually go ahead and build the targets specified by SDK_TARGETS (by default the image the SDK was built for). Assuming that's an image, we don't actually need to build the image itself - we just need to have everything done up to the point before building the image, so that we have everything needed in the sysroot.
In order to do this, create temporary bbappends for each of the targets in the workspace layer that stub out do_rootfs. This is a little bit of a hack but is the least intrusive fix at this point. To make things a bit tidier, I have split out the preparation commands into a separate script so we can run that in the appropriate environment rather than all the commands separately.
Fixes [YOCTO #7590].
--- meta/classes/populate_sdk_ext.bbclass | 5 ++++- meta/files/ext-sdk-prepare.sh | 20 ++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 meta/files/ext-sdk-prepare.sh
meta/classes/populate_sdk_ext.bbclass +4 -1
@@ -203,6 +203,8 @@ install_tools() { install $buildtools_path ${SDK_OUTPUT}/${SDKPATH} install ${SDK_DEPLOY}/${BUILD_ARCH}-nativesdk-libc.tar.bz2 ${SDK_OUTPUT}/${SDKPATH} + + install -m 0755 ${COREBASE}/meta/files/ext-sdk-prepare.sh ${SDK_OUTPUT}/${SDKPATH} } # Since bitbake won't run as root it doesn't make sense to try and install
@@ -242,8 +244,9 @@ sdk_ext_postinst() { # dash which is /bin/sh on Ubuntu will not preserve the # current working directory when first ran, nor will it set $1 when # sourcing a script. That is why this has to look so ugly. - sh -c ". buildtools/environment-setup* > preparing_build_system.log && cd $target_sdk_dir/`dirname ${oe_init_build_env_path}` && set $target_sdk_dir && . $target_sdk_dir/${oe_init_build_env_path} $target_sdk_dir >> preparing_build_system.log && bitbake ${SDK_TARGETS} >> preparing_build_system.log" || { echo "SDK preparation failed: see `pwd`/preparing_build_system.log" ; exit 1 ; } + sh -c ". buildtools/environment-setup* > preparing_build_system.log && cd $target_sdk_dir/`dirname ${oe_init_build_env_path}` && set $target_sdk_dir && . $target_sdk_dir/${oe_init_build_env_path} $target_sdk_dir >> preparing_build_system.log && $target_sdk_dir/ext-sdk-prepare.sh $target_sdk_dir '${SDK_TARGETS}' >> preparing_build_system.log 2>&1" || { echo "SDK preparation failed: see `pwd`/preparing_build_system.log" ; exit 1 ; } fi + rm -f $target_sdk_dir/ext-sdk-prepare.sh echo done }
meta/files/ext-sdk-prepare.sh new file +20 -0
@@ -0,0 +1,20 @@ +#!/bin/sh + +# Prepare the build system within the extensible SDK + +target_sdk_dir="$1" +sdk_targets="$2" + +# Avoid actually building images during this phase +# This is a hack, to be sure, but we really don't need to do this here +mkdir -p $target_sdk_dir/classes +printf 'python do_rootfs_forcevariable () {\n bb.utils.mkdirhier(d.getVar("IMAGE_ROOTFS", True))\n}\n' > $target_sdk_dir/classes/extsdk-dummy-build.bbclass +for sdktarget in $sdk_targets ; do + bbappend=`recipetool newappend $target_sdk_dir/workspace $sdktarget` + printf "inherit extsdk-dummy-build\n" > $bbappend + printf "Created bbappend %s\n" "$bbappend" +done +bitbake $sdk_targets || exit 1 +rm -f $target_sdk_dir/classes/extsdk-dummy-build.bbclass +rmdir $target_sdk_dir/classes || true +rm -rf $target_sdk_dir/workspace/appends
Signature · 1 line
2.1.0
PATCH 3/4 classes/populate_sdk_ext: add note to env setup script
In reply to Paul EggletonPrint a note at the end of the environment setup script pointing to devtool.
--- meta/classes/populate_sdk_ext.bbclass | 2 ++ 1 file changed, 2 insertions(+)
meta/classes/populate_sdk_ext.bbclass +2 -0
@@ -236,6 +236,8 @@ sdk_ext_postinst() { # so put it at the end of $PATH. echo "export PATH=\$PATH:$target_sdk_dir/sysroots/${SDK_SYS}/${bindir_nativesdk}" >> $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'" >> $env_setup_script + # For now this is where uninative.bbclass expects the tarball mv *-nativesdk-libc.tar.* $target_sdk_dir/`dirname ${oe_init_build_env_path}`
Signature · 1 line
2.1.0
PATCH 4/4 toolchain-shar-extract.sh: print full-length title underline
In reply to Paul EggletonPrint a line that's the full length of the title that it's underneath.
--- meta/files/toolchain-shar-extract.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
meta/files/toolchain-shar-extract.sh +3 -2
@@ -68,8 +68,9 @@ while getopts ":yd:nDRS" OPT; do esac done -echo "@SDK_TITLE@ installer version @SDK_VERSION@" -echo "===========================================================" +titlestr="@SDK_TITLE@ installer version @SDK_VERSION@" +printf "%s\n" "$titlestr" +printf "%${#titlestr}s\n" | tr " " "=" if [ $verbose = 1 ] ; then set -x
Signature · 1 line
2.1.0