Skip to contentSkip to conversation

xmlcatalog.bbclass: execute xmlcatalog only if it's available

PATCH In review Chen Qi 3 participants 5 messages Jul 5, 2019 – Jul 8, 2019

lore
Share & tools
lore
author
#1 lore raw

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

In reply to Chen Qi

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

---
 meta/classes/xmlcatalog.bbclass | 2 ++
 1 file changed, 2 insertions(+)
meta/classes/xmlcatalog.bbclass +2 -0
index 075aef8..e805e7b 100644
@@ -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)
Signature · 1 line
1.9.1

Chen Qi

author
#0 lore raw

cover xmlcatalog.bbclass: execute xmlcatalog only if it's available

*** BLURB HERE ***
The following changes since commit 4fd9ee4670293632cc0ca1e64b8833eb6014435d:

  bitbake: bitbake: Add --skip-setscene option (2019-07-03 17:00:57 +0100)

are available in the git repository at:

git://git.pokylinux.org/poky-contrib ChenQi/xmlcatalog-esdk
http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=ChenQi/xmlcatalog-esdk

Chen Qi (1):
xmlcatalog.bbclass: execute xmlcatalog only if it's available

 meta/classes/xmlcatalog.bbclass | 2 ++
 1 file changed, 2 insertions(+)
Signature · 1 line
1.9.1
#2 lore raw
In reply to Chen Qi
Quoted 24 lines · Chen Qi

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

---
 meta/classes/xmlcatalog.bbclass | 2 ++
 1 file changed, 2 insertions(+)
meta/classes/xmlcatalog.bbclass +0 -0
index 075aef8..e805e7b 100644

meta/classes/xmlcatalog.bbclass XMLCATALOGS ?= "" · line 12

Quoted 8 lines
meta/classes/xmlcatalog.bbclass +2 -0
@@ -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

#3 lore raw
In reply to Chen Qi

We could just always install libxml2 into the SDK...

Quoted 41 lines · Chen Qi

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

---
 meta/classes/xmlcatalog.bbclass | 2 ++
 1 file changed, 2 insertions(+)
meta/classes/xmlcatalog.bbclass +2 -1
index 075aef8..e805e7b 100644
@@ -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
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core

author
#4 lore raw
Quoted 1 line · Ross

We could just always install libxml2 into the SDK...

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

Quoted 41 lines · Chen Qi
Quoted 40 lines

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

---
  meta/classes/xmlcatalog.bbclass | 2 ++
  1 file changed, 2 insertions(+)
meta/classes/xmlcatalog.bbclass +2 -1
index 075aef8..e805e7b 100644
@@ -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
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core