Files
poky/meta/recipes-devtools/openjade/openjade-native_1.3.2.bb
Richard Purdie 2a2634e10d openjade/sgml-common: Add sstate postrm commands
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]

(From OE-Core rev: cdae3e76232110903d124195b036e4e70fb28aa4)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2016-09-16 15:24:02 +01:00

122 lines
4.7 KiB
BlitzBasic

SUMMARY = "Tools for working with DSSSL stylesheets for SGML and XML documents"
DESCRIPTION = "OpenJade is a suite of tools for validating, \
processing, and applying DSSSL (Document Style Semantics and \
Specification Language) stylesheets to SGML and XML documents."
HOMEPAGE = "http://openjade.sourceforge.net"
SECTION = "base"
LICENSE = "BSD"
LIC_FILES_CHKSUM = "file://COPYING;md5=641ff1e4511f0a87044ad42f87cb1045"
PR = "r5"
DEPENDS = "opensp-native sgml-common-native"
RDEPENDS_${PN} = "sgml-common-native"
SRC_URI = "${SOURCEFORGE_MIRROR}/openjade/openjade-${PV}.tar.gz \
file://makefile.patch \
file://msggen.pl.patch \
file://reautoconf.patch \
file://user-declared-default-constructor.patch \
file://fix-regex.patch \
file://no-libtool.patch"
SRC_URI[md5sum] = "7df692e3186109cc00db6825b777201e"
SRC_URI[sha256sum] = "1d2d7996cc94f9b87d0c51cf0e028070ac177c4123ecbfd7ac1cb8d0b7d322d1"
UPSTREAM_CHECK_URI = "http://openjade.sourceforge.net/download.html"
inherit autotools-brokensep native
# Statically link local libs to avoid gold link issue [YOCTO #2972]
PACKAGECONFIG ?= "static-only-libs"
PACKAGECONFIG[static-only-libs] = "--enable-static --disable-shared,--enable-static --enable-shared,,"
EXTRA_OECONF = "--enable-spincludedir=${STAGING_INCDIR}/OpenSP \
--enable-splibdir=${STAGING_LIBDIR}"
# We need to set datadir explicitly, but adding it to EXTRA_OECONF
# results in it being specified twice when configure is run.
CONFIGUREOPTS := "${@d.getVar('CONFIGUREOPTS', True).replace('--datadir=${datadir}', '--datadir=${STAGING_DATADIR}/sgml/openjade-${PV}')}"
# CONFIGUREOPTS has hard coded paths so we need to ignore it's vardeps
# there are other bits in there too but they are picked up by other variable
# dependencies so it all works out
oe_runconf[vardepsexclude] += "CONFIGUREOPTS"
CFLAGS =+ "-I${S}/include"
CXXFLAGS += "-fno-tree-dse"
SSTATEPOSTINSTFUNCS += "openjade_sstate_postinst"
SYSROOT_PREPROCESS_FUNCS += "openjade_sysroot_preprocess"
# configure.in needs to be reloacted to trigger reautoconf
do_extraunpack () {
cp ${S}/config/configure.in ${S}/
}
addtask extraunpack after do_patch before do_configure
# We need to do this else the source interdependencies aren't generated and
# build failures can result (e.g. zero size style/Makefile.dep file)
do_compile_prepend () {
oe_runmake depend
}
do_install() {
# Refer to http://www.linuxfromscratch.org/blfs/view/stable/pst/openjade.html
# for details.
install -d ${D}${bindir} ${D}${libdir}
if ${@bb.utils.contains('PACKAGECONFIG', 'static-only-libs', 'true', 'false', d)}; then
install -m 0755 jade/openjade ${D}${bindir}/openjade
oe_libinstall -a -C style libostyle ${D}${libdir}
oe_libinstall -a -C spgrove libospgrove ${D}${libdir}
oe_libinstall -a -C grove libogrove ${D}${libdir}
else
install -m 0755 jade/.libs/openjade ${D}${bindir}/openjade
oe_libinstall -a -so -C style libostyle ${D}${libdir}
oe_libinstall -a -so -C spgrove libospgrove ${D}${libdir}
oe_libinstall -a -so -C grove libogrove ${D}${libdir}
fi
ln -sf openjade ${D}${bindir}/jade
install -d ${D}${datadir}/sgml/openjade-${PV}
install -m 644 dsssl/catalog ${D}${datadir}/sgml/openjade-${PV}
install -m 644 dsssl/*.dtd ${D}${datadir}/sgml/openjade-${PV}
install -m 644 dsssl/*.dsl ${D}${datadir}/sgml/openjade-${PV}
install -m 644 dsssl/*.sgm ${D}${datadir}/sgml/openjade-${PV}
install -d ${datadir}/sgml/openjade-${PV}
install -m 644 dsssl/catalog ${datadir}/sgml/openjade-${PV}/catalog
install -d ${D}${sysconfdir}/sgml
echo "CATALOG ${datadir}/sgml/openjade-${PV}/catalog" > \
${D}${sysconfdir}/sgml/openjade-${PV}.cat
}
openjade_sstate_postinst() {
if [ "${BB_CURRENTTASK}" = "populate_sysroot" -o "${BB_CURRENTTASK}" = "populate_sysroot_setscene" ]
then
# Ensure that the catalog file sgml-docbook.cat is properly
# updated when the package is installed from sstate cache.
${SYSROOT_DESTDIR}${bindir_crossscripts}/install-catalog-openjade \
--add ${sysconfdir}/sgml/sgml-docbook.bak \
${sysconfdir}/sgml/openjade-${PV}.cat
${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
}
openjade_sysroot_preprocess () {
install -d ${SYSROOT_DESTDIR}${bindir_crossscripts}/
install -m 755 ${STAGING_BINDIR_NATIVE}/install-catalog ${SYSROOT_DESTDIR}${bindir_crossscripts}/install-catalog-openjade
}