[OE-core] [PATCH v2 2/5] classes/populate_sdk_ext: prevent do_rootfs from executing on install

Paul Eggleton paul.eggleton at linux.intel.com
Mon Oct 19 15:48:21 UTC 2015


On Wednesday 14 October 2015 21:23:31 Paul Eggleton wrote:
> In 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].
> 
> Signed-off-by: Paul Eggleton <paul.eggleton at linux.intel.com>
> ---
>  meta/classes/populate_sdk_ext.bbclass |  5 ++++-
>  meta/files/ext-sdk-prepare.sh         | 16 ++++++++++++++++
>  2 files changed, 20 insertions(+), 1 deletion(-)
>  create mode 100644 meta/files/ext-sdk-prepare.sh
> 
> diff --git a/meta/classes/populate_sdk_ext.bbclass
> b/meta/classes/populate_sdk_ext.bbclass index 90033ba..0feb3b2 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 0000000..a5a46be
> --- /dev/null
> +++ b/meta/files/ext-sdk-prepare.sh
> @@ -0,0 +1,16 @@
> +#!/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
> +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 "Created bbappend %s\n" "$bbappend"
> +done
> +bitbake $sdk_targets || exit 1
> +rm -rf $target_sdk_dir/workspace/appends/*

Unfortunately this doesn't avoid the error I was trying to avoid because 
do_bootimg still executes:

https://bugzilla.yoctoproject.org/show_bug.cgi?id=7629

I'd better send a v3.

Cheers,
Paul

-- 

Paul Eggleton
Intel Open Source Technology Centre



More information about the Openembedded-core mailing list