diff --git a/meta/classes/populate_sdk_ext.bbclass b/meta/classes/populate_sdk_ext.bbclass index 90033bab5a..0feb3b20c5 100644 --- a/meta/classes/populate_sdk_ext.bbclass +++ b/meta/classes/populate_sdk_ext.bbclass @@ -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 } diff --git a/meta/files/ext-sdk-prepare.sh b/meta/files/ext-sdk-prepare.sh new file mode 100644 index 0000000000..160c71e97c --- /dev/null +++ b/meta/files/ext-sdk-prepare.sh @@ -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, but still +# ensure all dependencies are extracted from sstate +# This is a hack, to be sure, but we really don't need to do this here +for sdktarget in $sdk_targets ; do + bbappend=`recipetool newappend $target_sdk_dir/workspace $sdktarget` + printf 'python do_rootfs_forcevariable () {\n bb.utils.mkdirhier(d.getVar("IMAGE_ROOTFS", True))\n}\n' > $bbappend + printf 'python do_bootimg () {\n pass\n}\n' >> $bbappend + printf 'python do_bootdirectdisk () {\n pass\n}\n' >> $bbappend + printf 'python do_vmimg () {\n pass\n}\n' >> $bbappend + printf "Created bbappend %s\n" "$bbappend" +done +bitbake $sdk_targets || exit 1 +rm -rf $target_sdk_dir/workspace/appends/*