[1/1] xmlcatalog.bbclass: execute xmlcatalog only if it's available

Submitted by Qi.Chen@windriver.com on July 5, 2019, 1:30 a.m. | Patch ID: 162781

Details

Message ID c9d93056cbc6067892aa042e5f2c71f3cc264656.1562290204.git.Qi.Chen@windriver.com
State New
Headers show

Commit Message

Qi.Chen@windriver.com July 5, 2019, 1:30 a.m.
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@windriver.com>
---
 meta/classes/xmlcatalog.bbclass | 2 ++
 1 file changed, 2 insertions(+)

Patch hide | download patch | download mbox

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)

Comments

Richard Purdie July 5, 2019, 10:35 a.m.
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@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
Ross Burton July 5, 2019, 4:38 p.m.
We could just always install libxml2 into the SDK...

On Fri, 5 Jul 2019 at 02:18, Chen Qi <Qi.Chen@windriver.com> 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@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)
> --
> 1.9.1
>
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
Qi.Chen@windriver.com July 8, 2019, 7:14 a.m.
On 07/06/2019 12:38 AM, Burton, Ross wrote:
> We could just always install libxml2 into the SDK...

Good idea. I'll send out a new patch.

> On Fri, 5 Jul 2019 at 02:18, Chen Qi <Qi.Chen@windriver.com> 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@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)
>> --
>> 1.9.1
>>
>> --
>> _______________________________________________
>> Openembedded-core mailing list
>> Openembedded-core@lists.openembedded.org
>> http://lists.openembedded.org/mailman/listinfo/openembedded-core