]> code.ossystems Code Review - openembedded-core.git/commitdiff
openjade/sgml-common: Add sstate postrm commands
authorRichard Purdie <richard.purdie@linuxfoundation.org>
Thu, 15 Sep 2016 10:48:39 +0000 (11:48 +0100)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Thu, 15 Sep 2016 21:56:37 +0000 (22:56 +0100)
If you bump the PR of sgml-common and openjade-native but not sgml-
common-native, you will see a failure as files were removed from the
sysroot but still referenced by the sgml docbook catalog.

To properly handle this, the clean function needs to run at sstate
removal time, the problem is that this sstate removal can happen when
the metadata isn't present, so the correct removal commands are
unknown.

To avoid this, we need to write the commands into a "postrm" script
when we install the files, this can then be executed at sstate removal
time.

[YOCTO #8273]

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/recipes-devtools/openjade/openjade-native_1.3.2.bb
meta/recipes-devtools/sgml-common/sgml-common-native_0.6.3.bb

index afcb8ca13a4a65461ad6cef5aa66811ea1972e55..8b15b0c7ec171de981dcababe1a139078c2aa670 100644 (file)
@@ -48,7 +48,6 @@ CXXFLAGS += "-fno-tree-dse"
 
 SSTATEPOSTINSTFUNCS += "openjade_sstate_postinst"
 SYSROOT_PREPROCESS_FUNCS += "openjade_sysroot_preprocess"
-CLEANFUNCS += "openjade_sstate_clean"
 
 # configure.in needs to be reloacted to trigger reautoconf
 do_extraunpack () {
@@ -104,6 +103,15 @@ openjade_sstate_postinst() {
                ${SYSROOT_DESTDIR}${bindir_crossscripts}/install-catalog-openjade \
                        --add ${sysconfdir}/sgml/sgml-docbook.cat \
                        ${sysconfdir}/sgml/openjade-${PV}.cat
+               cat << EOF > ${SSTATE_INST_POSTRM}
+#!/bin/sh
+# Ensure that the catalog file sgml-docbook.cat is properly
+# updated when the package is removed from sstate cache.
+files="${sysconfdir}/sgml/sgml-docbook.bak ${sysconfdir}/sgml/sgml-docbook.cat"
+for f in \$files; do
+       [ ! -f \$f ] || sed -i '/\/sgml\/openjade-${PV}.cat/d' \$f
+done
+EOF
        fi
 }
 
@@ -111,12 +119,3 @@ openjade_sysroot_preprocess () {
     install -d ${SYSROOT_DESTDIR}${bindir_crossscripts}/
     install -m 755 ${STAGING_BINDIR_NATIVE}/install-catalog ${SYSROOT_DESTDIR}${bindir_crossscripts}/install-catalog-openjade
 }
-
-openjade_sstate_clean () {
-       # Ensure that the catalog file sgml-docbook.cat is properly
-       # updated when the package is removed from sstate cache.
-       files="${sysconfdir}/sgml/sgml-docbook.bak ${sysconfdir}/sgml/sgml-docbook.cat"
-       for f in $files; do
-               [ ! -f $f ] || sed -i '/\/sgml\/openjade-${PV}.cat/d' $f
-       done
-}
index 597536570d31c34bda4693bb914c0ad69b6a84ea..97b308a88b64332bfe4a9ce45bb530e0da1671d8 100644 (file)
@@ -22,8 +22,6 @@ S = "${WORKDIR}/sgml-common-${PV}"
 
 SYSROOT_PREPROCESS_FUNCS += "sgml_common_native_mangle"
 SSTATEPOSTINSTFUNCS += "sgml_common_sstate_postinst"
-CLEANFUNCS += "sgml_common_sstate_clean"
-
 
 do_install_append() {
        # install-catalog script contains hard-coded references to
@@ -59,13 +57,14 @@ sgml_common_sstate_postinst() {
                                fi
                        done
                fi
-       fi
-}
+               cat << EOF > ${SSTATE_INST_POSTRM}
+#!/bin/sh
 
-sgml_common_sstate_clean () {
-       # Ensure that the catalog file sgml-docbook.cat is properly
-       # updated when the package is removed from sstate cache.
-       if [ -f ${sysconfdir}/sgml/sgml-docbook.cat ]; then
-               sed -i '/\/sgml\/sgml-ent.cat/d' ${sysconfdir}/sgml/sgml-docbook.cat
+# Ensure that the catalog file sgml-docbook.cat is properly
+# updated when the package is removed from sstate cache.
+if [ -f ${sysconfdir}/sgml/sgml-docbook.cat ]; then
+       sed -i '/\/sgml\/sgml-ent.cat/d' ${sysconfdir}/sgml/sgml-docbook.cat
+fi
+EOF
        fi
 }