[OE-core] [PATCH 1/1] xmlcatalog.bbclass: execute xmlcatalog only if it's available

Richard Purdie richard.purdie at linuxfoundation.org
Fri Jul 5 10:35:05 UTC 2019


On Fri, 2019-07-05 at 09:30 +0800, Chen Qi wrote:
> For build-sysroots.bb, the xmlcatalog would not be in its
> staging directory. Causing the following error for eSDK.
> 
> ERROR: build-sysroots-1.0-r0 do_build_native_sysroot: Command '/PATH/TO/IMAGE/testsdkext/tmp/sysroots/x86_64/usr/bin/postinst-docbook-xml-dtd4-native-xmlcatalog' returned non-zero exit status 127.
> ERROR: build-sysroots-1.0-r0 do_build_native_sysroot: Function failed: do_build_native_sysroot
> 
> The problem could be reproduced by the following steps.
> 1. Add in local.conf:
>    IMAGE_INSTALL_append = " btrfs-tools"
>    DISTRO_FEATURES_append = " api-documentation"
>    INHERIT += "testsdk"
> 2. bitbake core-image-minimal -c populate_sdk_ext
> 3. bitbake core-image-minimal -c testsdkext
> 
> Signed-off-by: Chen Qi <Qi.Chen at windriver.com>
> ---
>  meta/classes/xmlcatalog.bbclass | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/meta/classes/xmlcatalog.bbclass b/meta/classes/xmlcatalog.bbclass
> index 075aef8..e805e7b 100644
> --- a/meta/classes/xmlcatalog.bbclass
> +++ b/meta/classes/xmlcatalog.bbclass
> @@ -5,6 +5,8 @@ XMLCATALOGS ?= ""
>  SYSROOT_PREPROCESS_FUNCS_append = " xmlcatalog_sstate_postinst"
>  
>  xmlcatalog_complete() {
> +	# In case of eSDK, build-sysroot does not have xmlcatalog in its staging directory.
> +	[ "`which xmlcatalog`" = "" ] && exit 0
>  	ROOTCATALOG="${STAGING_ETCDIR_NATIVE}/xml/catalog"
>  	if [ ! -f $ROOTCATALOG ]; then
>  		mkdir --parents $(dirname $ROOTCATALOG)

This seems rather risky since it leaves the sysroot in an unexpected
state and means that elsewhere in the code we now have to account for
postinst scripts which may or may not have run.

Whilst this fixes a bug I worry it may open up a whole new class of
even worse problems :(

Cheers,

Richard





More information about the Openembedded-core mailing list