| # Copyright 2019 Gentoo Authors |
| # Distributed under the terms of the GNU General Public License v2 |
| |
| # @ECLASS: sgml-catalog-r1.eclass |
| # @MAINTAINER: |
| # Michał Górny <mgorny@gentoo.org> |
| # @AUTHOR: |
| # Michał Górny <mgorny@gentoo.org> |
| # @SUPPORTED_EAPIS: 7 |
| # @BLURB: Functions for installing SGML catalogs |
| # @DESCRIPTION: |
| # This eclass regenerates /etc/sgml/catalog, /etc/sgml.{,c}env |
| # and /etc/env.d/93sgmltools-lite as necessary for the DocBook tooling. |
| # This is done via exported pkg_postinst and pkg_postrm phases. |
| |
| case ${EAPI:-0} in |
| 7) ;; |
| *) die "Unsupported EAPI=${EAPI} for ${ECLASS}";; |
| esac |
| |
| EXPORT_FUNCTIONS pkg_postinst pkg_postrm |
| |
| if [[ ! ${_SGML_CATALOG_R1} ]]; then |
| |
| if [[ ${CATEGORY}/${PN} != app-text/sgml-common ]]; then |
| RDEPEND=">=app-text/sgml-common-0.6.3-r7" |
| fi |
| |
| # @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 |
| eend "${?}" |
| else |
| ebegin "Removing ${EROOT}/etc/sgml/catalog" |
| rm "${EROOT}"/etc/sgml/catalog && |
| { rmdir "${EROOT}"/etc/sgml &>/dev/null || :; } |
| eend "${?}" |
| fi |
| } |
| |
| # @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 |
| } |
| |
| sgml-catalog-r1_pkg_postinst() { |
| sgml-catalog-r1_update_catalog |
| sgml-catalog-r1_update_env |
| } |
| |
| sgml-catalog-r1_pkg_postrm() { |
| sgml-catalog-r1_update_catalog |
| sgml-catalog-r1_update_env |
| } |
| |
| _SGML_CATALOG_R1=1 |
| fi |