Create a new, simpler eclass to handle SGML catalog installation. Rather than relying on external tool to add/remove catalogs in postinst/postrm, let ebuilds install interim catalogs and just register all installed catalogs.
Signed-off-by: Michał Górny <[email protected]> --- eclass/sgml-catalog-r1.eclass | 80 +++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 eclass/sgml-catalog-r1.eclass Port of all sgml ebuilds to the new eclass: https://github.com/gentoo/gentoo/pull/12858 diff --git a/eclass/sgml-catalog-r1.eclass b/eclass/sgml-catalog-r1.eclass new file mode 100644 index 000000000000..a7105d570795 --- /dev/null +++ b/eclass/sgml-catalog-r1.eclass @@ -0,0 +1,80 @@ +# Copyright 2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +# @ECLASS: sgml-catalog-r1.eclass +# @MAINTAINER: +# Michał Górny <[email protected]> +# @AUTHOR: +# Michał Górny <[email protected]> +# @BLURB: Functions for installing SGML catalogs +# @DESCRIPTION: +# sgml-catalog-r1 provides postinst/postrm for regenerating +# /etc/sgml/catalog to include all installed catalogs. + +case "${EAPI:-0}" in + 7) + ;; + *) + die "Unsupported EAPI=${EAPI} for ${ECLASS}" + ;; +esac + +EXPORT_FUNCTIONS pkg_postinst pkg_postrm + +if [[ ! ${_SGML_CATALOG_R1} ]]; then + +RDEPEND=">=app-text/sgml-common-0.6.3-r7" + +# @FUNCTION: sgml-catalog-r1_update_catalog +# @DESCRIPTION: +# Regenerate /etc/sgml/catalog to include all installed catalogs. +sgml-catalog-r1_update_catalog() { + local shopt_save=$(shopt -p nullglob) + shopt -s nullglob + local cats=( "${EROOT}"/etc/sgml/*.cat ) + ${shopt_save} + + if [[ ${#cats[@]} -gt 0 ]]; then + ebegin "Updating ${EROOT}/etc/sgml/catalog" + printf 'CATALOG "%s"\n' "${cats[@]}" > "${T}"/catalog && + mv "${T}"/catalog "${EROOT}"/etc/sgml/catalog + else + ebegin "Removing ${EROOT}/etc/sgml/catalog" + rm "${EROOT}"/etc/sgml/catalog && + { rmdir "${EROOT}"/etc/sgml &>/dev/null || :; } + fi + eend "${?}" +} + +# @FUNCTION: sgml-catalog-r1_update_env +# @DESCRIPTION: +# Regenerate environment variables and copy them to env.d. +sgml-catalog-r1_update_env() { + # gensgmlenv doesn't support overriding root + if [[ -z ${ROOT} && -x "${EPREFIX}/usr/bin/gensgmlenv" ]]; then + ebegin "Regenerating SGML environment variables" + gensgmlenv && + grep -v export "${EPREFIX}/etc/sgml/sgml.env" > "${T}"/93sgmltools-lite && + mv "${T}"/93sgmltools-lite "${EPREFIX}/etc/env.d/93sgmltools-lite" + eend "${?}" + fi +} + +# @FUNCTION: sgml-catalog-r1_pkg_postinst +# @DESCRIPTION: +# Perform catalog post installation tasks. +sgml-catalog-r1_pkg_postinst() { + sgml-catalog-r1_update_catalog + sgml-catalog-r1_update_env +} + +# @FUNCTION: sgml-catalog-r1_pkg_postrm +# @DESCRIPTION: +# Perform catalog post removal tasks. +sgml-catalog-r1_pkg_postrm() { + sgml-catalog-r1_update_catalog + sgml-catalog-r1_update_env +} + +_SGML_CATALOG_R1=1 +fi -- 2.23.0
